iTunes - akcija na promjenu trenutnog tracka?
(1 korsinik/a gleda/ju temu) (1) Gost

iTunes - akcija na promjenu trenutnog tracka?


27.05.2010 | 13:31
Dakle želio bih informaciju o trenutnom tracku u iTunesu poslati nekamo. Sva Applescript rješenja koja sam našao počivaju na tome da se skripta pokreće svake minute ili dvije da pokupi tu informaciju. To mi nikako ne odgovara - postoji li način da se skripta izvrši onda kada treba, tj. svaki put kada počne play ili kada se promijeni track? Automator, bilo što? Tnx.
27.05.2010 | 22:41
Dakle želio bih informaciju o trenutnom tracku u iTunesu poslati nekamo. Sva Applescript rješenja koja sam našao počivaju na tome da se skripta pokreće svake minute ili dvije da pokupi tu informaciju. To mi nikako ne odgovara - postoji li način da se skripta izvrši onda kada treba, tj. svaki put kada počne play ili kada se promijeni track? Automator, bilo što? Tnx.

Skoro sam promašio ovo!

global lastTrack

on run
  set lastTrack to -1
end run

on idle
  tell application "iTunes"
    try
      if player state is playing then
        if current track's database ID is not lastTrack then
          -- track has changed
          set lastTrack to current track's database ID
          beep
        end if
      else
        -- do nothing/something when idle
      end if
    end try
  end tell
  return 0.1 -- interval
end idle
Obavezno snimi skriptu kao "Application" i među opcijama odaberi "Stay Open". Skripta koristi dva handlera: run i idle s kojima glumi "observera". Kad je pokreneš, izvrši se "on run" i samo postavi varijablu "lastTrack" na -1.

"On idle" se izvršava dok ne quitaš aplikaciju, a interval diktira broj nakon returna pri kraju skripte (return 0.1 znači 1/10 sekunde). Try blok se brine da aplikacija ne pukne ako iTunesi nisu dignuti. Ako su dignuti, provjerava da li svira isti track koji je svirao i "malo prije" (1/10 sekunde ranije), pohranjuje novi track u "lastTrack" i beepne - umjesto beepa možeš ubaciti neki suvisao kod koji će obaviti to što trebaš kad se promjeni track. U else blok možeš smjestiti kod koji će izvršiti dok je skripta idle (dakle, dok čeka promjenu tracka).

Nije najoptimalnija skripta na svijetu - bila bi da se zakači na iTunesov notification center pa da reagira isključivo na željeni event, promjenu tracka, bez da testira uvjet u svakom intervalu čekanja.

E, da... ako pokušaš quitati iTunes dok skripta radi, sama će ga ponovo dignuti pa prvo quitaj skriptu pa tek onda iTunes. Alternativa bi bila dodati u skriptu testiranje da li je iTunes uopće dignut pa ako nije, preskočiti obraćanje iTunesu ili pak quitati samu skriptu (da se ne izvršava "u prazno" ).
  • Dijete
  • Posjetitelj
27.05.2010 | 23:41
Ti si fakat altruista..
28.05.2010 | 11:07
Znam za to ali to nije ono što sam tražio. Ja ne želim skriptu koja stalno polla iTunes, već želim da iTunes pošalje event skripti. Dakle to nije moguće? U tom slučaju moj flert sa Applescriptom će biti zaista kratkog vijeka.
Postoji li neki drugi način da iTunes pokrene applescript kod promjene tracka?
28.05.2010 | 15:27
Znam za to ali to nije ono što sam tražio. Ja ne želim skriptu koja stalno polla iTunes, već želim da iTunes pošalje event skripti. Dakle to nije moguće? U tom slučaju moj flert sa Applescriptom će biti zaista kratkog vijeka.
Postoji li neki drugi način da iTunes pokrene applescript kod promjene tracka?

Zbunjuješ me. U prvoj poruci si napisao da ti ne paše "da se skripta pokreće svake minute ili dvije da pokupi tu informaciju". Zaključio sam (ne nužno ispravno) da ti ne paše iz dva razloga: predug interval između dva poziva skripte i overhead koji donosi pokretanje skripte uvijek iznova. Rješenje koje sam naveo rješava oba problema jer se konkretna skripta pokrene samo jednom i ne radi ništa osim što vrti vlastiti run loop (on idle) i u njemu provjerava svira li još uvijek isti track ili je došlo do promjene. Kad dođe do promjene, pokreće onaj dio koda u kojem je "beep". Umjesto toga možeš umetnuti kod koji pokreće neku desetu skriptu. Bottom line: skripta glumi sustav za distibuciju iTunesovih notificationa (implementiran je samo jedan, zovimo ga "on track change" ). Zašto ti nije upotrebljivo takvo rješenje? Znatiželjan sam.

Što se pak tiče "pravih" notifikacija, da, moguće su. Zakačiš se za Notification Center, "slušaš" i reagiraš kad stigne notifikacija.

U Cocoa aplikaciji (trebat će ti Xcode) to izgleda ovako nekako (zamijeni defaultni main.m sa kodom u nastavku, buildaj i pokreni):

#import <Cocoa/Cocoa.h>

@interface iTunesLink : NSObject
- (id) init;
@end

@implementation iTunesLink
- (id) init {
    NSDistributedNotificationCenter *dnc = [NSDistributedNotificationCenter defaultCenter];
    [dnc addObserver:self selector:@selector(trigger:) name:@"com.apple.iTunes.playerInfo" object:nil];
    return self;
}

- (void) trigger:(NSNotification *)notification {
    NSString *myScript = [NSString stringWithFormat:
        @"tell application \\"Finder\\"\\ndisplay dialog (\\"iTunes mi želi nešto reći!\\")\\nend tell"];
    NSAppleScript *as = [[[NSAppleScript alloc] initWithSource:myScript] autorelease];
    [as executeAndReturnError:nil];
}
@end

int main(int argc, char *argv[])
{
	iTunesLink *connection;
	connection = [[[iTunesLink alloc] init] autorelease];
	return NSApplicationMain(argc, (const char **) argv);
}


Da li je moguće isto to u AppleScriptu? Je, ali kao Cocoa AppleScript aplikacija (kompajlirano). Kad kreiraš projekt, u NazivProjektaAppDelegate.applescript, umjesto onoga što je defaultno u njemu, umetneš ovo (gornji koncept, "preveden" u AppleScript), buildaš, pokreneš:

script NazivProjektaAppDelegate
	property parent : class "NSObject"
	property dnc : class "NSDistributedNotificationCenter"
	
	on awakeFromNib()
		set dnc to dnc's defaultCenter
		tell dnc to addObserver_selector_name_object_(me, "trigger:", "com.apple.iTunes.playerInfo", missing value)
	end awakeFromNib
	
	on trigger_()
		display dialog ("iTunes mi želi nešto reći!")
	end trigger_
	
	on applicationWillFinishLaunching_(aNotification)
		-- Insert code here to initialize your application before any files are opened 
	end applicationWillFinishLaunching_
	
	on applicationShouldTerminate_(sender)
		-- Insert code here to do any housekeeping before your application quits 
		return current application's NSTerminateNow
	end applicationShouldTerminate_
end script

U oba slučaja (Obj-C i AppleScript) dodaješ observer iTunesima koji trigga "trigger" metodu/handler kad iTunes pošalje notifikaciju. U "pravom" programu bi trebalo obraditi notifikaciju, da znaš što ti je iTunes zapravo rekao (ovo gore će reagirati na Play/Pause/Next Track...), a poželjno je i removati observera kad quitaš aplikaciju.
28.05.2010 | 17:05
Djipi je napisao:
Zbunjuješ me. U prvoj poruci si napisao da ti ne paše "da se skripta pokreće svake minute ili dvije da pokupi tu informaciju". Zaključio sam (ne nužno ispravno) da ti ne paše iz dva razloga: predug interval između dva poziva skripte i overhead koji donosi pokretanje skripte uvijek iznova. Rješenje koje sam naveo rješava oba problema jer se konkretna skripta pokrene samo jednom i ne radi ništa osim što vrti vlastiti run loop (on idle) i u njemu provjerava svira li još uvijek isti track ili je došlo do promjene. Kad dođe do promjene, pokreće onaj dio koda u kojem je "beep". Umjesto toga možeš umetnuti kod koji pokreće neku desetu skriptu. Bottom line: skripta glumi sustav za distibuciju iTunesovih notificationa (implementiran je samo jedan, zovimo ga "on track change" ). Zašto ti nije upotrebljivo takvo rješenje? Znatiželjan sam.


Zato jer sam po netu čitao da taj idle u applescriptu zna žderati CPU a to je problem nama sa vintage strojevima. Proučit ću ova alternativna rješenja.
28.05.2010 | 19:30
Zato jer sam po netu čitao da taj idle u applescriptu zna žderati CPU a to je problem nama sa vintage strojevima.

Taj dio je istina. Ono prvo AppleScript rješenje troši 4x više CPU (čak 23% na mom stroju) od samih iTunesa (5-6%) , što je apsurd. No, zato ovo "ozbiljno", s observerima ne troši skoro ništa (CPU usage u mu je ~0%).
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 34 minuta
  • drlovric: Poljud bi bio pun da je i duplo veci. Ne postoji na daleko losiji klub sa lojalnijim navijacima :)
  • drlovric: @Kloba: Hajduk ima 100 K clanova. Neki dan su pustili ulaznice u prodaju. Otvorio sam na 3 racunala, 7 browsera, logirao se u svaki (kao clan) da uspijem ugrabiit ulaznicu. I nisam uspio. Srecom je brat raido istu stvar u Njemackoj, pa nam je kupio on. Za 2h rasprodat stadion, serrver padao......lista cekanja po sat i po da udjes u sucelje da bi kupio kartu. I to sve ako si clan. Ostali nisu mogli
  • Kloba: Aha, hvala ti na informaciji!
  • Borisone: Ako imaš i LAN i WIFi aktivan na Mac-u, prioritet ti je po defaultu da promet ide prvo po LAN-u.
  • Borisone: To ti je propusnost WiFi-a usko grlo.
  • Kloba: Što se brzine neta tiče, kada laptop spojim LAN-om na ruter, iako mi je u postavkama i dalje Wi-Fi mreža kao opcija spajanja - brzina je 950 Mbps. Kada iskopčam LAN kabel, doslovno deset sekundi nakon ovog rezultata - brzina padne na 200 do 300 Mbps-a. Nije nam jasno! :D
  • Kloba: A Hajduk je ipak najtrofejniji i najstariji hrvatski klub. Bio bi red da se i oni vrate na staze stare slave. Zanimljivost mi je da imaju registriranih navijača više od 110 tisuća, u rangu Real Madrida. Respect, u svakom slučaju. :)
  • Kloba: Štose nogometa tiče, nisam pratio HNL osim u tekstovima pa ne znam tko je više zaslužio ove godine. Rijeka ili Hajduk. Ako je Rijeka dala više, neka bude Rijeka. Zarad one krađe kada ih je Gračan trenirao, ako se dobro sjećam.
  • Kloba: Star možda godinu dana, refurbished kupljen od A1.
  • Kloba: Mobitel je iPhone SE 2022.
  • Kloba: Ljudi, imam pitanje u vezi brzine interneta. Kako sada imam gigabit download u teoriji, u praksi mi je to na laptopu oko 940 Mbps. No na mobu, koji je spojen na isti Wi-Fi (5G) ne pokazuje više od 450 Mpbs download. Ima li neki razlog tomu?
  • cariblanco: I ja kao Dinavovac, bi Volvo da Rijeka osvoji naslov, jer je to zaslužila
  • drlovric: Dinamo j ezapoceo kao drzavni projekt, da se podigne nacionalna svijest u novonastaloj drzavi. Kasnije je prepusten kriminalnoj skupini na upravljanje, koja je radi osobnih interesa obesmislila cijelu ligu. Srecom ta vremena su iza nas. Mislim da je ove godine Rijeka najvise zasluzila da bude prvak, jer igraju najbolji nogomet.
  • Kloba: Iskreno, radi dobrobiti hrvatskog klupskog nogometa, htio bih da ili Hajduk ili Rijeka ili Osijek osvoje ovu sezonu. Da se stvori nova velika četvorka u ovoj maloj zemlji.
  • Kloba: Pa valjda ćeš ove godine slaviti. Dugo niste bili ovako blizu. ;)
  • drlovric: Za Hajduk. Zato sam ovako mlad i pogubio zivce :D
  • cariblanco: za koga navijaš...naše ;)
  • drlovric: Za vikend sam u Splitu. Ostajem par dana. Ako neko od Jabucara dolszi gledati najveci nogometni derbi u Hrvata, tu sam za pice, kavu, rucak…
  • smayoo: Nažalost, je... :(
  • Djuro genijalac: [link]
  • Djuro genijalac: Kaj je umrla Slađana Milošević?
  • smayoo: RIP Slađana Milošević :(
  • Yonkis: [link] iPhone prodan na aukciji za 130.000 dolara
  • Yonkis: macOS Sonoma 14.4.1: fixes USB hubs connected to external displays may not be recognized; Apps that include Java may quit unexpectedly
  • Soffoklo: Fora. Creating a Macintosh-inspired Mac Studio iPad dock. [link]
  • abajo: Kloba: [link]
  • Kloba: Ekipa, može li me neko upititi n stranicu da si skinem macOS Catalina kako bih nanovo reinstalirao komjuter? Taj OS mi je najnovji koji ovaj moj Retina iz 2013. može "progutati". Kako se svi razumijete u ove stvari više od mene, bio bih zahvalan!
  • cariblanco: Na kraju sam skužio koliko je sati, po svitanju...ono fakat čudno ?
  • cariblanco: Istina je da Paragvaj mjenja vrijeme koji je blizu, ali ja imam Argentinski sim :D
  • cariblanco: Sad na mobu s našim sim_om je 7.25 a na mobu s Argentinskim sim_om je 8.25 ! S tim da Argentina nema promjenu verbena ?
  • cariblanco: Jurors imam dilemma, koliko je sati ? koliko mi je poznato mi nismo premjenili vrijeme, mjenjamo ga sljedeći vikend
  • Zdravac: MKBHD pratim i ja, ok je lik, realno recenzira, ne sipa hvalospjeve
  • Kloba: Ma bez daljnjeg. Čovjek si je osigurao egzistenciju, pa i vrlo luksuzan stil života već sada. Ima video u kojem pokazuje svoj studio, linkao sam ga tu svojevremeno. Ma preludo. A tek onaj Mr. Beast? Taj živi u studiu. Opsjednut YT-om.
  • drlovric: Zaradio j eon puno vise na otm videu. Pogledaj samo broj pregleda :)
  • Kloba: NIsam ni ja znao. A šta ćeš, cijena napretka. Za šta je dao 40 somova, sliku CD-a i iTunesa... :)
  • Yonkis: Kloba, što nisi odmah rekao kako je završio unboxing i aktiviranje iPhonea :)
  • Kloba: MKBHD kupio originalni, nikada otvoreni first gen iPhone na aukciji u Chicagu za 32 tisuće dolara. Sa dostavom, porezima, i dodacima na sve ispalo ga je 40 tisuća. Video je tu: [link]
  • Yonkis: [link] - Justice Department sues Apple, alleging it illegally monopolized the smartphone market
  • Kloba: I ja brže na net, nađem video naslova 7 Ways To Fix PS5 Error Code CE-117773-6 :) I prvi "way2 mi pomogne, skužim da je do njih
  • Kloba: Uglavnom, kada sam htio skinuti save sa clouda PS Plua za Horizon 2, javi mi grešku Error Code CE-117773-6
  • Kloba: EON Premium sam uzeo, ne vjerujem koje sve kanale imam. Ruske, Ukrajinske, pa klasika CNN, BBC, Sky, ovo ono. Ali i puno iz regije
  • Kloba: Ma sve radi što se telemacha i EONA tiče. SONY nije radio, imao je problem kod njih. Sad je sve OK
  • drlovric: Kloba: I ja sam to dobio nedavno. Telemach Fiber Duo Premium nesto.... Kod mene sve radi odlicno.
  • Kloba: PS5, isprika...
  • Kloba: Prešao na Telemach EON TV. Uzeo Premium paket. Jako zadovoljan. I sada, hoću malo na PS%, kada ono, pao im server...
  • rusty: GRAVIS.DE je kapitulirao (od danas). Zatvaraju... :(
  • drlovric: Ja imam USA account za Apple jer bosanski niti ne postoji. Prodaju te iPhione a tjeraju te da odaberes drugu drzavu za nalog, i nikom nista.
  • drlovric: Zasto Turcin koji zivi ili radi u EU ili USA ne bi mogao placati Adobe pretplatu u svojoj zemlji? :)
  • drlovric: Ma sve je to siva zona i ljudi to koriste masovno. Ja sam godinama koristio indijski YT, nikada problema. Poceo sam placati bosanski samo raid glazbe. Jer ubijao me YT sa indijskim prijedlozima i artistima :) Sa $2.5 mi je pretplata skocila na 5 eura, al prezivio sam taj finacijski udarac :)
  • Zdravac: To nije uopće legalno. Za profesionalnu primjenu smatram da ipak treba kupiti i računati kao poslovni trošak.

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

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.34 Seconds

Provided by iJoomla SEO