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.