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 16 sati, 37 minuta
  • VanjusOS: pitam da li je to itko isprobao?
  • VanjusOS: u iphoneu sa fizičkom sim karticom se pojavila opcija da se prebaci ta fizička sim u e-sim
  • VanjusOS: niste me shvatili, očito
  • miomika: na A1 ti samo pošalju na mail/sms ili putem aplikacije Moj A1 i to je to
  • rusty: Prije jedno 3 godine na Tmobile. u 22h navečer putem supporta jer se u protivnom trebalo ići u poslovnicu
  • VanjusOS: da li je netko isprobao funkciju konvertiranja SIM u e-SIM, i na kojoj mreži?
  • ZoPaj: ha ha, nisu li usbC isforsirali upravo radi štednji na punjačima:)
  • dpasaric: I bez punjača... :(
  • Borisone: Danas najavljeni novi iPad Pro, Vision Pro i MacBook Pro 14-inch. Sve s M5 procesorima (bez Pro i Max varijanti).
  • Air: Veliko priznanje Fedora našem Filipoviću - pozvao ga je na boksački meč.
  • Air: Taj pc laptop je imao cijenu cca 800 eura što nije malo
  • Air: Mislio sam da su se malo pomakli u tom smjeru, ali jok
  • Air: trackpad je... hm...
  • Bertone: Rekao sam ti da je kvaliteta izrade loša, ali sam CPU je brži od CPU-a iz MBP 2014/2015,... stavi na njega LinuxMint pa ćeš vidjeti da nije spor ;)
  • Air: Moj MBP 2014 je ferari / Bentley za usporedbu...
  • Air: Moj utisaK da sam ga platio 100-150 eura plakao bi što nisam dao još 150 za MBP 2014 - 2016 godište.
  • Air: Samo da javim, na kraju sam dobio laptop od frenda. Nije htio čuti za nikakve pare. Skro smo se posvađali ali eto pametniji popušta ;)
  • hal9000: Steve Jobs, vrati se! Sve ti je oprošteno! [link]
  • hal9000: Kakva pizdarija: [link]
  • drpongrac23: Meni onaj sa uzorkom krzna leoparda
  • hal9000: @Bertone: Da, jedan od najdražih Wallpapera ikad.
  • Bertone: 5k [link] i 6k [link]
  • Bertone: ... kojeg rado koristim
  • Bertone: Na stranu sad brzina i ispeglenost OS-a ali mom oku je najljepši i najugodniji bio Mac OS X 10.4 Tiger, a nativni Aqua wallpaper mi je i dan danas jedan od nesmetajućih wallpapera.
  • Air: RIP otišao je i HALID...
  • drlovric: Ja nekako vjerujem da ovo nije bilo jos uvijek ni planirano, vec su to sfusali na brzinu da izadje prije vremena. Cisto da malo zamaskiraju AI blazamu. Da se pise o necemu drugome. NIkakvu konkretnu vrijednost korisnici nisu dobili ovom promjenom.
  • CoffeePod: @drlovric Malo je reć da su se za*ebali. Prezentacija na WWDC je izgledalja lijepo, ali to su bili cherry pickani trenutci, i sve je bilo uvećano. Liquid Glass ne funkcionira dobro na našim malim ekranima.
  • CoffeePod: @hal9000 Probao ga na M2 Airu od djevojke, jer se njoj svidio dizajn sučelja. Ukratko, laptop je vidno usporio sa animacijama, performanse su zagušene. Stvarno je istina da treba pričekati tek idući release kada se ovako velike promjene naprave. Što se mene tiče, svi xOS26 su i dalje Beta.
  • hal9000: @Yonkis: :D :D :D
  • drlovric: .1 bete vec doziraju transparentnost. Skontali su da su na puno mjesta pretjerali, pa se to sada mijenja sa frosty staklom :)
  • Yonkis: hal9000: pretvorio sam se u uho
  • hal9000: Novi dizajn novog MacOS-a je TRAGEDIJA!
  • CoffeePod: Samo se sjetim njegove izjave "We don't ship junk!"
  • CoffeePod: Mene iskreno zanima reakcija Jobs na Tahoe26 i novi iOS26. Znam da je samo volio "lickable" user interface ali ovo izgleda toliko cartoony i bloated da se izgubio premium look.
  • hal9000: Ako ne revolucionaran (a siguran sam da bi ih bilo), što god da je, bilo bi bez kompromisa i jednostavno radilo bez je*emti.
  • VanjusOS: sve nas zanima što bi bilo da je još poživio... da li bismo imali još koji revolucionarni proizvod? ja sam uvjeren da bismo imali i više od jednog..
  • hal9000: @VanjusOS: Ah, kad se sjetim Jobs-a i kako je dobro vodio Apple, dođe mi da sada zaplačem. Kako u zezanciji znam reći: "Steve Jobs, vrati se! Sve ti je oprošteno!"
  • VanjusOS: jučer bila godišnjica Jobsove smrti - zar nitko nije se sjetio toga?
  • dpasaric: Vidim da vam treba više ljubavi, pa nešto s puno pozitive... :)
  • dpasaric: Novi članak na naslovnici! :)
  • drlovric: Ako imamo nekog vlasnika pausalnog obrta, molim da mi se javi. Hvala.
  • Bertone: Sad sam zbunjen, toliko da sam išao googlati da li se što promijenilo oko pojma "tašt", ali kako nije, ne razumijem pitanje ili zašto si došao do takvog zaključka :/
  • drpongrac23: @Bertone- Zašto si pun taštine?!?!
  • Tito: Baš gleado prošli tjedan u Kinoteci
  • Yonkis: [link] ako niste gledali u kinu (Art Kinu) onda morate pogledati na HRT2, večeras, rekao bih da je must-see za sve koji su iz Rijeke
  • Bertone: I tako se od pitanja da li djetetu (za koje ne znamo koliko ima godina) isplati uzeti laptop, došli smo do čiji je ve*i :D
  • jura22: Naveo primjer. Postoje i editori za jednanzbe na macOS-u.
  • smayoo: Pages koristi standardni LaTeX za jednadžbe, kao i LibreOffice (LO ima još i neki legacy sistem od OpenOfficea), a MS Office koristi svoj neki vrlo nepraktičan sistem, oduvijek. Tko piše puno jednadžbi u svojim tekstovima, nauči se LaTeXu jako brzo i puno je brži i efikasniji nego s MSO, na bilo kojoj platformi.
  • jura22: Za unijeti jednandžbu u Pages treba naučiti prohgramirati.
  • jura22: MSO na macOS-u ne radi kao na WIN. Recimo Mail Merge je neupotrebljiv ako ima iole više slogova. Kao tekst procesor je OK, ali je i Pages isto OK.

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 1.34 Seconds

Provided by iJoomla SEO