script ili automator rješenje za ovo
(1 korsinik/a gleda/ju temu) (1) Gost

script ili automator rješenje za ovo


24.03.2009 | 16:12
E, da... AppleScript rješenje (kad već vozimo paralelni slalom) se svodi na dodavanje dvije linije koda nakon "make new folder" linije:

set txtRef to open for access (lokacija & (paragraph redniBroj of popisFoldera) & ":" & paragraph redniBroj of popisFoldera & ".txt")
close access txtRef

S obzirom da počinjemo ponavljati kobasicu "paragraph redniBroj of popisFoldera", red je staviti je u varijablu, da se ne računa svaki put iznova pa kompletan kod glasi...

-- PRISTUPAMO POPISU FOLDERA
-- popisRef je pokazatelj na odabranu tekstualnu datoteku koja sadrži popis foldera
-- prikazujemo sistemski izbornik datoteka
set popisRef to (choose file with prompt "Odaberi tekstualnu datoteku koja sadrži popis foldera:" of type {"TEXT"})
-- pristupamo datoteci koja sadrži popis foldera
open for access popisRef
-- učitavamo kompletan sadržaj datoteke u varijablu popisFoldera
-- pritom koristimo UTF8, zbog potencijalnih domaćih karaktera u nazivu foldera
set popisFoldera to (read popisRef as «class utf8»)
-- zatvaramo datoteku koja sadrži popis foldera
close access popisRef

-- LOKACIJA NA KOJOJ KREIRAMO FOLDERE
-- folderi će biti kreirani tamo gdje se nalazi ova skripta
set lokacija to POSIX file ((POSIX path of (path to me)) & "/..") as text

-- KREIRAMO POJEDINE FOLDERE KORISTEĆI FINDER
-- I U NJIMA DATOTEKU ISTOG IMENA, S EKSTENZIJOM ".txt"
tell application "Finder"
	-- postavljamo brojač koji ćemo koristiti za pristup pojedinoj liniji teksta
	set redniBroj to 1
	-- ponavljamo petlju onoliko puta koliko ima linija teksta u popisFoldera
	repeat (number of paragraphs in popisFoldera) times
		-- ako je linija teksta prazna, ignoriramo je
		-- u protivnom kreiramo folder i dodjeljujemo mu ime sadržano u liniji teksta
		if paragraph redniBroj of popisFoldera is not equal to "" then
			-- formiramo ime foldera u posebnoj varijabli (jer ga koristimo više puta)
			set imeFoldera to (paragraph redniBroj of popisFoldera)
			-- kreiramo folder, koristeći formirano ime
			make new folder at lokacija with properties {name:imeFoldera}
			-- kreiramo u tom folderu datoteku koristeći isto ime, dodajući joj ".txt" ekstenziju
			set txtRef to open for access (lokacija & imeFoldera & ":" & imeFoldera & ".txt")
			-- zatvaramo datoteku koju smo upravo kreirali
			close access txtRef
		end if
		-- uvećavamo brojač za 1
		set redniBroj to (redniBroj + 1)
		-- kraj petlje
	end repeat
	-- kraj obraćanja Finderu
end tell
24.03.2009 | 16:27
trebaš složeniji problem? no frks

varijacija ovoga zadatka. sada u svakom folderu stvori tekstualnu datoteku koja nosi ime foldera. dakle ako se folder zove "prvi folder" neka sadrži datoteku "prvi folder.txt"

Sjetio sam se banalnog primjera kako ovaj request minimalno zakomplicirati - tek toliko da AppleScript rješenje dobije smisao - nakon što kreiramo tekstualnu datoteku, njen label promijeniti u crveno!

Dovoljno je u kod, nakon "close access txtRef" dodati redak:

set label index of item (lokacija & imeFoldera & ":" & imeFoldera & ".txt") to 2

P.S. "2" je crveno.
24.03.2009 | 16:43
Evo isto i u perlu:
#!/usr/bin/perl
# Ovo gore govori shellu sto da koristi za izvrsavanje skripte

# Datoteka koja je ulaz za podatke
$ulaz="direktoriji.txt";

# Otvorimo file i kreiramo file handle ili izbaci gresku ako se file ne moze otvoriti
open(PODACI, $ulaz) || die("Ne mogu otvoriti datoteku!");

# Spremimo zadrzaj u array
@redovi=<PODACI>;

# Zatvori file handle
close (PODACI);

# Za svaki element u arrayu izvrsimo nesto
foreach $red(@redovi) {
chomp $red;
`mkdir "$red"`;
`touch "$red/$red.txt"`;
}
24.03.2009 | 19:06
Evo isto i u perlu:
open(PODACI, $ulaz) || die("Ne mogu otvoriti datoteku!" );

O-ho! Sad smo uveli i error checking. Ali ništa od labeliranja, a? A?


P.S. Mogli bi za ovogodišnji iParty pripremiti malo ovakvih mozgalica, rješivih u bilo čemu.
24.03.2009 | 20:20
Sto je labeliranje?

A tko ce se natjecati, ja, ti i Delovski?
24.03.2009 | 21:40
Sto je labeliranje?

Ono kad nazivu ikone na desktopu dodijeliš neku boju, iz Findera (Label je opcija u meniju, nudi par predefiniranih boja).

A tko ce se natjecati, ja, ti i Delovski?

Ajde, ajde... ne budi pesimist. Možda ovakvi postovi zaintrigiraju još koga pa se mala zajednica Mac programera pretvori u nešto što nećemo više moći izbrojati na prste.
25.03.2009 | 16:45
hm... a jel vam ovo malo veći izazov?

iz itunes biblioteke svim pjesmama dodijeliti rating temeljem broja slušanja. npr. 5 slušanja je 1 zvjezdica, 10 2 zvjezdice, 15 - 3, 20 - 4 i 25 - 5. S tim što ako pjesma već ima rating koji je manji nego što bi bio da se gleda samo broj slušanja neka se taj rating prilagodi tj. poveća na odgovarajući broj, a ukoliko pjesma ima rating veći nego što bi bio samo temeljem broja slušanja, neka ga zadrži.

p.s zašto u ovom topicu moram proširiti safari preko skoro 17-18" na mom monitoru da vidim cjelokupni tekst svakog posta, a na drugim topicima na jabučnjaku to ne moram?
25.03.2009 | 17:04
Ovo cu prepustiti Applescriptovcu.
Sto se prikaza tice, iz nekog razloga Firefox i Safari ne postuju overflow property u kucici za prikaz koda...Opera (opet) radi dobro pa nisam to primjetio. Sredit cu nesto veceras da ne bude problem ni drugdje...
25.03.2009 | 19:28
hm... a jel vam ovo malo veći izazov?

iz itunes biblioteke svim pjesmama dodijeliti rating temeljem broja slušanja. npr. 5 slušanja je 1 zvjezdica, 10 2 zvjezdice, 15 - 3, 20 - 4 i 25 - 5. S tim što ako pjesma već ima rating koji je manji nego što bi bio da se gleda samo broj slušanja neka se taj rating prilagodi tj. poveća na odgovarajući broj, a ukoliko pjesma ima rating veći nego što bi bio samo temeljem broja slušanja, neka ga zadrži.

Nije veći izazov, i dalje je trivijalno, s tom razlikom da sad nije u pitanju Finder nego iTunes. Ali ovo bar u startu izlazi iz domene shella pa je AppleScript rješenje u startu logičan izbor.

Ovo je hipotetski zadatak kojim pokušavamo ocijeniti "stupanj izazova" ili ti treba skripta?
25.03.2009 | 19:56
Evo, ovo je stvarno zanimljiv zadatak, a takva skripta bi čak bila i istinski korisna. Ja bih još dodao da se "slušanjem" ne smatra ako je pjesma svirala manje od 10% svog cjelovitog trajanja (dakle, ako sam pjesmu od 3 minute slušao sveukupno s premotavanjem manje od 18 sekundi, to slušanje se ne broji kao slušanje).

Jel ti to dovoljno komplicirano?
25.03.2009 | 22:03
Evo, ovo je stvarno zanimljiv zadatak, a takva skripta bi čak bila i istinski korisna.

Dobro, onda je ima smisla i napisati.

Ja bih još dodao da se "slušanjem" ne smatra ako je pjesma svirala manje od 10% svog cjelovitog trajanja (dakle, ako sam pjesmu od 3 minute slušao sveukupno s premotavanjem manje od 18 sekundi, to slušanje se ne broji kao slušanje).

Pa i ne smatra se (bar se nije smatralo zadnji put kad sam se s tim igrao). Ako se dobro sjećam, play count se poveća tek par sekundi prije kraja pjesme, što mi djeluje sasvim razumno kao trigger. Također, koliko mi je poznato (ne mogu provjeriti, nisam trenutno na Macu), iTunes pamti samo play count podatak ne i neki meta-data koliko je pojedini play trajao. Da bi se implementirao algoritam koji predlažeš (a bez podataka o trajanju pojedinog playa temeljem kojih bi se "ispravno" određivao play count), AppleScript bi trebao glumiti deamona i trošiti CPU cikluse tako da kontinuirano pinga iTunes i provjerava status playa. Inteligentnije rješenje (razmišljam na glas) bi bio event handler kojeg bi iTunes mogao triggati, ali iTunes (koliko mi je poznato) ne trigga nikakve event handlere pa od te ideje nikakve koristi. Ako zadovoljava defaultno ponašanje iTunesa, vrijedi prethodno rečeno - i dalje je trivijalno.

Jel ti to dovoljno komplicirano?

U principu, ne. Dok god AppleScripta radi u okviru samo jednog tell bloka (tell "Finder" ili tell "iTunes" ) i dok god je problem rješiv koristeći standardni dictionary pojedine aplikacije (kojoj se obraćamo), trivijalan je. Ideja koju si načeo nije trivijalna zbog toga što bi trebala obraditi (defaultno) nepostojeću informaciju (do koje može doći zaobilaznim putem i samo taj zaobilazak je ne-trivijalan). Međutim, zanimljiviji zadaci su oni koji POVEZUJU aplikacije. Često aplikacija ima neki svoj vlastiti skriptualni jezik s kojim se unutar nje same može riješiti željeni automatizam. Međutim, kad takva aplikacija mora komunicirati s drugom, spas je u AppleScriptu - pod uvjetom da ga obje podržavaju, naravno.

Evo, bubam ideju na tom tragu, koja nije shell-compliant a koja je i dalje vezana uz iTunes: neki utility koji je u stanju registrirati kad mu registrirani BT device (mobitel != iPhone :-> ) uđe u range (npr. Blue Phone Elite), prepozna tko dolazi, pročita iz notes polja u AddressBooku naziv njegove (ili njene) omiljene pjesme i pusti je u play u iTunesima. Diskretna najava skorog ulaska poznate osobe u prostor, a dotičnoj uvijek iznova mami osmijeh činjenica da svaki put kad uđe, začuje svoju omiljenu pjesmu. Tri aplikacije surađuju za potpuni doživljaj.
25.03.2009 | 23:51
Sto se prikaza tice, iz nekog razloga Firefox i Safari ne postuju overflow property u kucici za prikaz koda...


Ovdje to radi super: forums.macrumors.com/showthread.php?t=674268

View Source baš pokazuje taj overflow tag. Kod tog overflowa na takvim stranicama mene zapravo smeta što je vidljivi dio prekratak. Ne znam zašto ga namještaju na 640 pixela... a možda je u tom grmu zec?!

Igor
25.03.2009 | 23:54
Evo i skripte. Molim primjetiti da ima više komentara nego linija koda. Ovog puta sam se sjetio pretvoriti tabove u spejsove pa će biti čitljivija.
tell application "iTunes"
    -- postavljamo redni broj (pjesme) na 1
    set redniBroj to 1
    -- petlja koju ponavljamo onoliko puta koliko ima pjesama u libraryu    
    repeat (count of tracks of library playlist 1) times
        -- postavljamo referencu na pojedinu pjesmu
        set pjesma to track redniBroj of library playlist 1
        -- čitamo trenutni rating pjesme
        set trenutniRating to rating of pjesma
        -- čitamo broj slušanja pjesme
        set brojSlusanja to played count of pjesma
        -- računamo novi rating:
        -- iTunes rating bilježi u rasponu od 0 do 100
        -- rating 20 = 1 zvjezdica, rating 40 = 2 zvjezdice ...
        -- ako je rating > 100, automatski postaje 100
        set noviRating to (brojSlusanja * 4)
        -- postavljamo novi rating samo ako je veći od trenutnog
        if trenutniRating < noviRating then set rating of pjesma to noviRating
        -- uvećavamo brojač kako bi u sljedećem ponavljaju petlje pristupili sljedećoj pjesmi
        set redniBroj to (redniBroj + 1)
        -- kraj petlje
    end repeat
    -- kraj obraćanja iTunesima
end tell

Malo sam pojednostavnio dio s kalkulacijom ratinga. Trik je u tome što, kao što sam naveo u komentarima, iTunes zapravo čuva rating kao brojku u rasponu od 0 do 100, ne čuva "od 0 do 5", kako bi netko mogao pomisliti nakon što mu iTunes dopusti da odabere "None" ili 1-5 zvjezdica. iTunes uredno pokazuje i "1/2" oznaku na mjestu zvjezdice pa pjesma može imati i 3,5 zvjezdica. john_st je tražio cjelobrojne zvjezdice (možda ne znajući da može dobiti i ove, polovične?) pa bi takva verzija kalkulacije trebala raspone svoditi na 0, 20, 40, 60, 80 i 100. iTunes sam radi "clamp" vrijednosti većih od 100 pa nije potrebno ni provjeriti da li je noviRating, izračunat na ovaj način, veći od 100. To je programerski no-no, ali ovdje ćemo ga zlorabiti jer možemo. Novi rating se računa tako da se broj slušanja jednostavno pomnoži s 4, što znači da s 10 slušanja imamo "score" 40, a to iTunes interpretira kao "2 zvjezdice".

Nadam se da je sad jasnije zašto je trivijalno.
26.03.2009 | 00:05
IgorD je napisao:

Ovdje to radi super: forums.macrumors.com/showthread.php?t=674268

View Source baš pokazuje taj overflow tag. Kod tog overflowa na takvim stranicama mene zapravo smeta što je vidljivi dio prekratak. Ne znam zašto ga namještaju na 640 pixela... a možda je u tom grmu zec?!


A to ti je voodoo...u tvari idem ja smanjiti font, to mi je najlakse kao brzi fix a i tako je malo velik.
26.03.2009 | 00:11
Yep, jasno je... Kamo sreće da je više vremena za proučiti...

Kako se zna koja aplikacija zna pričati s AppleScriptom i u kojoj mjeri, tj. koje komande kuži?
26.03.2009 | 00:15
Kako se zna koja aplikacija zna pričati s AppleScriptom i u kojoj mjeri, tj. koje komande kuži?

File/Open Dictionary u Script Editoru. Izlista sve aplikacije koje su instalirane na stroju, a da koriste AppleScript. Kad odabereš aplikaciju čiji dictionary želiš vidjeti, prvo će se učitati sama aplikacija, a potom prikazati njen dictionary u kojem je sve uredno posloženo (zaviri, bit će ti jasno).
26.03.2009 | 00:46
Hvala!
26.03.2009 | 15:59
Vidim da nitko nije pa ću onda ja , cijela ova priča oko kreiranja direktorija u
Objective-C:


	
        NSMutableString *newPath = [NSMutableString string];
	NSFileManager *fileManager = [NSFileManager defaultManager];
	
	NSString *text = [NSString stringWithContentsOfFile:@"/Users/john/Desktop/john.txt"];
	
	NSArray *lines = [text componentsSeparatedByString:@"\\n"];
	
	int i;
	for(i=0;i<[lines count];i++)
	{
		[newPath setString:@"/Users/john/Desktop/"];
		[newPath appendFormat:[lines objectAtIndex:i]];
		
		[fileManager createDirectoryAtPath:newPath attributes:nil];
		NSLog([lines objectAtIndex:i]);
	}

26.03.2009 | 16:20
Što se ove drugr skripte tiče to je puno jednostavnije napraviti kao Djipi nego kroz Objective-C pošto je iTunes Carbon aplikacija, te bi za to trebalo raditi Carbon bridge da bi se upravljalo. Može se naravno, ali ne ovako jednostavno, osim ako se ne upotrijebi neki gotovi framework za rad s iTunes.
26.03.2009 | 18:51
Vidim da nitko nije pa ću onda ja , cijela ova priča oko kreiranja direktorija u
Objective-C:

Bravo! Sad smo i to pokrili. Iako... "problem" i s ovim i s prvim C rješenjem je u tome što onaj tko će ih znati iskompajlirati, vjerojatno bi ih sam znao i napisati.

Jel' probao netko problem rješiti s Automatorom? Jel' uopće to spada u njegovu domenu (nisam ga nikad koristio)?


@Riba: vidiš da nas ima još za iParty coding-competition!
Moderatori: Bertone
  • Stranica:
  • 1
  • 2

Vikalica™

Zadnja poruka: pred 1 dan, 5 sati
  • Yonkis: Sa novim WApp updateom funkcionalan WhatsApp app na Apple Watchu.
  • IgorD: Zašto ne bi bilo istina? O tom se govori danima, neki ljudi slave što je Dye otišao. Trebao si otvoriti temu
  • Djuro genijalac: Sve mi se čini da je ovo istina..?
  • Djuro genijalac: [link]
  • IgorD: ovo je bilo na 17
  • IgorD: [link]
  • IgorD: Meni radi paste, iPhone Max 15, nije zadnji ios
  • smayoo: Ne možeš s iphonea
  • Djuro genijalac: Jbm, kak se pastea link u vikalicu?
  • Djuro genijalac: Ne znam jel ovo istina, ali....
  • Air: Ja sam u Zg, reci što i kada trebaš?
  • drlovric: Ima li neka dobra dusa iz Zagreba da mi preuzme hedan mali paket i preusmjeri ga na paketomat ili kakogod u Zupanju? :)
  • smayoo: [link]
  • ydrea: @Vanjuška - imamo! Poslao sam ti pp ;)
  • drlovric: Akom znate nekoga da prodaje SteamDeck, ja bih to kupio...
  • Piko: Zašto WP ? .... ima .... samo ja radim u Laravelu, no WP mi nije stran.. što konkretno treba ?
  • dpasaric: Svi otišli u keramičare. Naš ex-voditelj weba radi s mramorom sada. :)
  • Vanjuška: Imamo li na Jabučnjaku ikoga tko je vičan WordPressu i općenito web hokus pokus?
  • Riba: Anker ili Baseus i na miru si.
  • drlovric: Ja vjerujem Ankeru. Godinama bez problema
  • dpasaric: Ne kupuj nikada jeftine punjače za auto, gomila je uništenih iPhonea na taj način.
  • Yonkis: ima netko za preporučiti autopunjač a da ima USB C i USB A? Ne vjerujem ovima ovim artiklima od 5€.
  • zvone: Vrhunski. Moj prvi OS je 7.5. Digao ga i igrao Sim Tower satima. Kao u stara dobra vremena.
  • smayoo: Evo stavio sam ja [link]
  • dpasaric: To je vrijedan link, nemoj da se izgubi na Vikalici, imamo u forumu grupu MacOS Classic, pa ostavi tamo da ostane
  • IgorD: Da, mogao bih nekom to amjestit full scree da se šokira kad se vrati a komp
  • smayoo: hvala!
  • drlovric: Ovo je tako cool. Svaka cast!!
  • Ender: @IgorD: ovo je sjajno! hvala!
  • IgorD: > Infinite Mac is a collection of classic Macintosh and NeXT system releases and software, all easily accessible from the comfort of a web browser
  • IgorD: Upravo otkrio: [link]
  • m@xym: RIP Deajn Ristanović, jedan od rijetkih koji je postao legenda još za svog života (barem nama koji smo pratili same početke kompjuterizacije u bivšoj državi.
  • smayoo: :(
  • IgorD: Računari itd. RIP
  • Yonkis: Zar Apple nije mogao napraviti bolji emoji za miša, tj za magic mouse?
  • Miro Spiro: Umro Dejan Ristanović :( RIP
  • MacSin: OS stari do X je bio cool
  • MacSin: na poslu su svi na win lenovo aliu kad dodem doma je melem za oci ali kad treba nesto upgarde napravit tad je vec probelm
  • MacSin: OS je i dalje miljama od ostalih no sto se tice hardware to je vec diskutabilno
  • VanjusOS: neki mi javi se privatno, barem ako može kratko posuditi na probu
  • VanjusOS: ljudi, ima li možda netko viška Thunderbolt 2 to Thunderbolt 2 Cable
  • drpongrac23: Davno sam vozio "kockicu"
  • drpongrac23: @Yonkis - Kakav BMW - Uskoro kupujem za sebe Citrć Berlingo, jbg, godine...
  • drpongrac23: A zamjena ekrana preko 500 EUR!
  • drpongrac23: WTF?!? Ušle mi neke "bubice" u ekran na MBA M1. Totalni hit!!! 3 kom. BUBA ŠVABE!!!
  • Yonkis: Drpongrac23: a M5? Ne mislim na BMW.
  • drpongrac23: Preko 30 god. vjerni Apple korisnik - sada je vrijeme da zahvalim svima, ali Apple u mojim očima više nije što je nekad bio.
  • drpongrac23: Ovaj novi MacOS - bye, bye Apple!!! Ćesme od svega!
  • drpongrac23: PC za 400 EUR iz Pevexa žvače taj prastari MacPro za gablec :)
  • drpongrac23: U PC svijetu je DDR5 RAM polako standard - o čemu vi pričate?!?

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Ender, jura22, Riba, tino1, Anonimci (1523)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 0.72 Seconds

Provided by iJoomla SEO