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 23 sati, 56 minuta
  • Yonkis: Evo, prodajem i neke slušalice, one za u uho. iPhone i sluške, 200€. I nije to sve, one more thing...
  • Mislav2222: ima i 2K 27inca dell monitor, u top stanju na prodaju :D
  • Yonkis: prodao bih iPhone 8 Plus, mijenjao mu bateriju prije cca godinu dana, moram provjeriti, pa ako ima zainteresiranih da ne pišem oglasnik.. Zapravo pišem anyway, valjda tamo netko lurka :)
  • mbp2009: Smayoo riješio sam, nego sad nije za mene, nego nekog drugog
  • accom: O muziki nemam pojma, surfanje je o.k., gaming - isto nemam pojma. :)
  • Krehacro: Dj-ing...Netflix,surfanje i neki gaming :)
  • accom: @Krehacro: meni ne uspjeva koliko bih željeo. Ali je iPad super alat, i sve više mi je neophodan (ajde, navika). Najviše ovisi o tome, što želiš radit.
  • lucija: Dosta ih je uspjesno preslo na iPad.
  • lucija: Nisam no ima na YouTubeu dosta recenzija ljudi koji jesu.
  • Krehacro: Planiram preci sa MacBook air na iPad da koristim kao svoj primarni uredjaj...jel netko to još pokušao i kako mu ide :)?
  • smayoo: Pa zar još to nisi riješio?
  • smayoo: :D
  • mbp2009: Doslovno sam ju ja otvorio hahaha
  • smayoo: @mbp2009, imaš točno tu temu u forumu od prije par mjeseci
  • smayoo: Natrijeve baterije postoje u tzv. REDOX izvedbi već 30 godina, prvenstveno za stacionarne sustave, ali nisu bile pogodne za mobilne jer su bitno manje gustoće pohrane od litijevih, a i veće mase, jer su tekućinske. Velika im je prednost to što su ekološki neutralne, jednostavne za proizvesti i požarno nerizične.
  • m@xym: @Zdravac, OD otkrića nečega u laboratoriju do dolaska na tržište (ako se to upće dogodi) prođe između 5 i 10 godina
  • drlovric: O da. Jako veliko dan. Ljudi nisu svjesni bitnosti ali vrijeme ce polazati.
  • Zdravac: @drlovric, jesu, baš je lijepo danas pratiti HRT4 i live prijenos! :)
  • Zdravac: jel senzacionalizam ili ima nešto u ovoj tehnologiji da bi uskoro moglo i u praksu?
  • Zdravac: [link]
  • drlovric: Stigli Rafali ❤️????
  • mbp2009: Ekipa, treba mi preporuka za neki usb-c dongle za M1. Potreban je ulaz za SD karticu, HDMI ili DP (TB2), barem 2 Usb-a i ako je moguće jedan usb-c
  • smayoo: Funkcionalna zamjena je push notifikacija koja preko 5G ide po generičkom protokolu, samo aplikacija na mobitelu mora to podržavati
  • smayoo: Upozorili su me ljudi koji rade u toj branši, radi nekih telemetrijskih rješenja gdje nadzorni sustav SMSom šalje obavijesti korisniku
  • ZeljkoB: smayoo, odakle ti ova informacija za SMS?
  • smayoo: SMS poruke su phase-out. Znači, neki ih operateri više ne nude, niti omogućavaju njihovo slanje. Određen je neki krajnji rok, nakon kojeg više nijedan operater u EU nije dužan osigurati propagiranje SMS poruka. Probaj ručno promijeniti operatera (pretpostavljam da si u roamingu)
  • Matija klc: Ekipa, pomoc. Nalazim se u Rumunjskoj. Primam poruke normalno, no ne mogu poslati poruku. Pricam o obicnoj. Sve drugo radi najnormalnije. Sta napraviti?
  • MoschuS: Ma svugdje ali sve neka mala mjesta ili sela po Hr ili Slo
  • JOHN: Jesu to oni iz Imotski?
  • MoschuS: Ako netko kupuje rabljeno racunalo pripazite se prevaranata na Njuskalu i Bolhi. Otkrio sam ih par, slicni oglasi i kada ih kontaktirate salju iste/slicne racune i serijske brojeve kao potvrdu i onda odjednom obrisu oglas, naprave novi account i pokusavaju dalje uloviti nekoga.
  • Zdravac: :) Na kraju će ispasti da nas ima dosta koji vozimo motore!
  • rkrosl: prodao triumpha, kupio triumpha
  • JOHN: Honda CB650R
  • FiFi: Skoro sam ga jednom zamijenio za Bandita 1200 , ali sam ipak odustao.
  • Zdravac: ...ili Suzuki Bandit :)
  • Zdravac: E, taj motor je nekad bio moj san, da nije uletila yamaha, sigurno bih toga sad vozio :)
  • FiFi: Honda CB900F2 Hornet, 2002. Evo radim servis i nadam se registraciji prvi put nakon tri godine stajanje (djeca ti promijene raspored vožnje)
  • Riba: Problem je sto "sezona" u Irskoj trtaje tjedan dana. :-D Moram vidjeti ima li kakav nacin da ga registriram u Hr.
  • Zdravac: @ZeljkoB Odličan motor, takvi motori su baš po mom guštu! Lijep i ugodan za voziti.
  • Zdravac: @Riba Pa što čekaš, daj, zamjeni ulje, filtere i svječice, napuni bateriju, i lagano pranje. To će biti dovoljno, siguran sam! :)
  • Zdravac: Ajd, super, nisam jedini! Sad ide sezona, i gušt! Polako plan za moto trip na more...
  • ZeljkoB: Honda NC750X, ali sve manje vremena imam za voznje.....
  • Riba: Imam ja BMW 650CS, mozda ga reaktiviram nakon 10 godina stajanja u garazi. A imam i Vespu iz 1959, ta malo duze stoji. :)
  • Zdravac: Evo, ja ću prvi: YAMAHA XJ900 S Diversion, classic iz 1998., ide ko švicarski sat, čista mehanika, pouzdano do bola! :)
  • Zdravac: Jel imamo ovdje kolega ili kolegica, da voze motor? Ako da, koji?
  • zoranowsky: @air, u biti isti je pricnip, samo si sam sebi target :)
  • Air: Polako, polaku, kuda žurba, daj mi prvo link na to kako pročitati vlastite misli :)
  • smayoo: Za one koji ne znaju čitati misli - [link] :D
  • Borisone: Za one koji ne znaju čitati misli, koja je konfiguracija?
  • VanjusOS: pozdrav, treba li netko Mac mini M2, nekorišteno?

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Ender, m@xym, Riba, tino1, VanjusOS, zoranowsky, Anonimci (292)

Novo na Jabučnjaku

Teme

Poruke

Anketa

Kupujete li profesionalni Mac?

Čekam novi modularni Mac Pro - 48.5%
Novac nije problem, kupujem iMac Pro - 0.7%
Kupujem Valjak, baš je lijep i tih! - 0%
Kupujem polovni Mac Pro tower - 11.8%
Nadogradit ću postojeći Mac Pro tower - 2.9%
Običan iMac 27" mi je dovoljan za posao - 5.9%
Skromnih sam potreba, Mac mini je zakon! - 7.4%
Radim na terenu, mora biti MacBook Pro - 3.7%
Ne diram ništa, stari Mac služi me odlično - 10.3%
Kupujem PC kantu i prelazim na Windowse! - 8.8%

Ukupno glasova: 136
Anketa je završena dana: 08 Svi 2018 - 12:17
Page Speed 1.19 Seconds

Provided by iJoomla SEO