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!
  • Law
  • Korisnik
  • 6
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]);
	}

  • Law
  • Korisnik
  • 6
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 3 dana, 17 sati
  • ^SuperUnknown^: Treba tko Time Capsule 1st gen? 500 i 2000 GB modeli, restauriranih napajanja (40/50E cijene). Javite u PM ako tko treba :)
  • accom: Windy. Meni odličan.
  • smayoo: Nije nijedna 100% i uvijek točna, ali za Hrvatsku je HRT Meteo meni najtočnija
  • smayoo: Za Hrvatsku HRT Meteo
  • Matija klc: Teski ocaj. Trenutno mecava u mom gradu a u njoj pise kisa da pada. Sta koristite vi ekipa?
  • Matija klc: Koju aplikaciju za vrijeme koristite? Ova standardna od Apple-a je postala
  • smayoo: Piši u forum
  • Air: Kod instalcije mi se oštetio jedan user na način da jedinio kod njega ne mogu otvoriti System preferece.
  • Air: @Bertone hvala. Odradio sam direktno preko instalera Apple. Spremim ovaj link za kasnije.
  • Bertone: [link]
  • Bertone: @Air, [link]
  • Yonkis: Settings , General, Dictionary. Bilo mi je uključeno. Nisam to upalio 100%
  • Air: netko je stavio na Jabucnjaku link sa operativnim sistemima koji nisu više podržani od Apple-a. Ja ne mogu naći taj post. Trebam Big Sur. Ako netko zna sa koje stranice je siguno sikuniti?
  • smayoo: Nemam pojma. Gdje si to našao? :)
  • Yonkis: Kakav je ovo hrvatsko engleski rječnik? [link]
  • ^SuperUnknown^: Ekipa, trazim tipkovnicu tj. top case za prvi Intel Macbook (Macbook1,1-4,1 A1181), po mogucnosti bijelu, ali moze i crna :) Ako tko ima od nekog krepanog javite :) Thx!
  • kupus: tražim 30 pin na lighting adapter, ako ima tko viška - PM
  • stefanjos: sretna nova!
  • Yonkis: Sretna vam ova nova 2025!
  • dpasaric: Kreativna vam 2025. godina! Kanpai! [link]
  • JOHN: Sve najbolje u novoj godini. Puno zdravlja, sreće i uspjeha.
  • zoranowsky: Sretna Nova!
  • Miro Spiro: Sretna Nova godina
  • Matija klc: Sretna Nova svima
  • Gjuroo: Sretna nova!
  • Bertone: Sretna Nova
  • Zdravac: Sretna Nova, i svako dobro vam želim!
  • dpasaric: Svako dobro i da vam 2025. bude još bolja! :)
  • smayoo: SRETNANOVAGODINAAAAAAAA!!!! :D
  • Yonkis: dpasaric, I think you're gonna love it :)
  • dpasaric: Kako imamo Lisu u Pikiju, to mi je na listi za gledanje!
  • Yonkis: [link] netko već gledao?
  • Zdravac: :)
  • JOHN: Jel prolazi integralni? :)
  • Zdravac: @JOHN, lagano sa ugljikohidratima (kruh), rakija je, s druge strane, preporučljiva :)
  • ping: Sretan Božić
  • JOHN: Sretan i blagoslovljen Božić. Pazite na slatko i slano. Samo kruh i voda i ajde može i pijača!:)
  • zoranowsky: Sretan Božić!
  • dpasaric: Sretan Božić i se najboljshe judi! :)
  • smayoo: Sretan Božić, svima svima neka bude veseo, miran, topao, sit i napit! :)
  • Gjuroo: Sretan Božić!
  • Zdravac: Sretan Božić!
  • drpongrac23: Sretan i blagoslovljen Božić!
  • Damirst: Sretan Božić svima!
  • Bertone: Sretan Božić
  • Yonkis: Sretan Božić svima, koliko god vas ima!
  • drlovric: Hvala hvala :)
  • Yonkis: Happy belated bday drlovriću!
  • zoranowsky: Sretan ročkas!
  • JOHN: Sretan rođoš!

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 1.22 Seconds

Provided by iJoomla SEO