Info från spellista på skrivbordet?

Tråden skapades och har fått 18 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Öland
  • 2006-12-12 09:11

Tja!

Har länge funderat på en cool sak och om det skulle vara möjligt, -kanske finns det redan och det vore isåfall underbart!

Det jag söker är ett sätt att kunna visa spelande spellista på Skrivbordet. Och då menar jag, vilken låt som spelas och efterföljande men också spelande. Vill inte ha tips om program som Sizzling Keys -då jag provat dessa och INTE är helt nöjd med dem.

Jag vill kunna bestämma hur många låtar som skall visas, -tänk er Partyblandning:

Det som visas inne i iTunes skall visas på Skrivbordet. Väljer man att visa filformat kommer även det på Skrivbordet tex.

Någon som vet ett fint litet program som skulle kunna fixa?

//Filip

  • Oregistrerad
  • 2006-12-12 09:40

Har du kollat in Yahoo! Widgets (f.d Konfabulator). Kanske kan finnas något av intresse där...

  • Medlem
  • Öland
  • 2006-12-12 09:53

jo, har kollat där...

sitter nu och kollar upp om man kan göra någon fullösning med applescript som så fort iTunes byter låt tar ett screenshot över en specifik del av skärmen. -DOck innebär detta att iTunes måste var aaktivt när det tas -vilket inte är kul. Kanske finns något i automator som kan lösa mina önskemål -skall kolla när min nya dator kommer i veckan...

Måste tipsa om mitt favoritprogram GeekTool http://projects.tynsoe.org/en/geektool/

Med GeekTool så kan du lägga outputen från shellscript på skrivbordet. Dessa uppdateras sedan med ett intervall du sätter i programmet. Jag skrev ihop ett Applescript som skriver ut playlisten som spelas just nu och markerar sången som spelas.

set returnString to ""
tell application "iTunes"
	set foo to tracks of current playlist
	repeat with bar in foo 
		if name of bar is name of current track then
			set returnString to returnString & "->"
		end if
		set returnString to returnString & tab & name of bar & " - " & artist of bar & "ZaZaZaZaZ"
	end repeat
	return returnString
end tell

Jag är ingen stjärna på Applescript men det är en start att bygga vidare på. Scriptet saknar en hel del som att kolla om iTunes är igång och om en playlist spelas.
För att få det hela att fungera i GeekTool skrivar vi följande i Shell i GeekTool:

osascript /sökväg/till/skriptet/ovan/iTunes.playlist.scpt | sed 's/ZaZaZaZaZ/\
/g'

Anledningen till ZaZaZaZaZ är att jag inte fick osascript att returnera en sträng med flera rader. Observera att radbrytningen efter /\ är viktig i kodan ovan.

Nackdelen med den här läsningen är att den är en pollande lösning som frågar iTunes med jämna mellanrum vad som pågår istället för att iTunes säger till när den byter låt.

  • Medlem
  • Stockholm
  • 2006-12-12 16:21

Grymt Linus!
Det fungerade klockrent på första försöket. En liten detalj bara, det vore trevligt om artist-namnet inte stog direkt efter låttiteln istället borde det vara ett mellanrum.

Så här ser det ut nu:

One More Time - Daft Punk
Aerodynamic - Daft Punk
Digital Love - Daft Punk

Istället borde det se ut så här:

One More Time    Daft Punk
Aerodynamic      Daft Punk
Digital Love     Daft Punk

Byt ut " - " mot tab i skriptet så lägger det in en tab istället för -. Problemet är att artistnamn är så olika långa så jag valde - istället.

  • Medlem
  • Öland
  • 2006-12-13 08:32

skitt killar! ni är fantastiska!

underbart!!!

  • Medlem
  • Öland
  • 2006-12-13 18:34

finns det något bra sätt att göra så att när iTunes inte är igång så händer inget, samt att när ingen låt spelas, det kommer fram en text som tex "iTunes is not playing"?

Efter lite pulande och mycket googlande kom jag fram till följande:

tell application "System Events"
	if (name of processes) does not contain "iTunes" then
		return "iTunes is not playing"
	end if
end tell

set returnString to ""
set dontList to {"Musik", "Radio", "Podcaster"}
tell application "iTunes"
	if player state is stopped then
		return "iTunes is not playing"
	end if
	try
		if name of current playlist is in dontList then
			return "iTunes is not playing a playlist"
		end if
		repeat with bar in tracks of current playlist
			if name of bar is name of current track then
				set returnString to returnString & "->"
			end if
			set returnString to returnString & tab & name of bar & " - " & artist of bar & "ZaZaZaZaZ"
		end repeat
		return returnString
	end try
	return "iTunes is not playing a playlist"
end tell

Lite fashinerande med Applescript hur läsbart det blir.

  • Medlem
  • Öland
  • 2006-12-13 22:51

Ohh denna tråden blir bara bättre och bättre tack vare er två! Filip lever som i en dröm igen!

  • Oregistrerad
  • 2006-12-15 22:07

Mycket snyggt och funkar perfekt! Tackar!

Jag har tagit det här tillfället för att lära mig mer om Applescript så scriptet blir lite mer avancerat.

--då osascript inte klarar att ta emot strängar med flera rader sätter jag detta istället för return och ersätter detta med en sed efter osascriptet.
set endOfLine to "ZaZaZaZaZ"
--antal låtar att visa innan nuvarande låt
set listBefore to 4
--antal låtar att visa efter nuvarande låt
set listAfter to 5
--vad som står mellan låtnamnet och artisten, kan ändras till t.ex; tab, " - ", " ", ": "
set songArtistSeparator to endOfLine & tab & tab

--kolla om iTunes körs, om inte avsluta med "iTunes is not playing"
tell application "System Events"
	if (name of processes) does not contain "iTunes" then
		return "iTunes is not playing"
	end if
end tell

--de "playlists" som skriptet inte stöder
set dontList to {"Radio", "Podcaster"}
tell application "iTunes"
	if player state is stopped then return "iTunes is not playing"
	
	--en trysats för att current playlist är inte alltid definierad. T.ex. finns den inte när man använder iTunes Store
	try
		if name of current playlist is in dontList then return "iTunes is not playing a playlist"
		--lite hjälpvariabler
		set nowIndex to 0
		set i to 0
		set wholeList to {}
		--hitta indexet på låten som spelas och formatera wholeList
		repeat with bar in tracks of current playlist
			set i to i + 1
			if name of bar is name of current track then set nowIndex to i
			set end of wholeList to name of bar & songArtistSeparator & artist of bar
		end repeat
		--kontrollera så att vi inte försöker hämta låtar utanför spellistan
		if (nowIndex - listBefore) < 1 then set listBefore to nowIndex - 1
		if (nowIndex + 1 + listAfter) > length of wholeList then set listAfter to ((length of wholeList)) - nowIndex - 1
		--hämta låtar före och efter nuvarande
		set beforeList to items (nowIndex - listBefore) thru (nowIndex - 1) of wholeList
		set afterList to items (nowIndex + 1) thru (nowIndex + 1 + listAfter) of wholeList
		--för att byta vad AppleScript sätter mellan items i listor vid to string
		set AppleScript's text item delimiters to endOfLine & tab
		--returnera klabbet
		return ((tab & beforeList as string) & endOfLine & "->" & tab & name of current track & afterList as string)
	end try
	return "iTunes is not playing a playlist"
end tell

Kommentarerna i scriptet borde förklara de mesta.
Jag ändrade utseendet lite på outputen mest för att visa hur det kan se ut. För att byta tillbaka till det förra utseendet så ändra värdet på songArtistSeparator till " - " eller tab istället.

Ett varningens finger!
Om du har långa spellistor eller spelar direkt ur biblioteket så kommer skriptet att ta ganska lång tid. Nu har jag iofs en mycket gammal dator att utveckla på, en ibook med en G3 på 300Mhz (första dasslocket! ). Så för er med maskiner från detta århundrade är det troligtvis ingen problem...

Ytterligare tips:
Kom ihåg att ändra uppdateringsfrekvensen i GeekTool, heter refresh och ligger uppe till höger i GeekToolfönstret. Jag har för mig att 10 är default och då det är sekunder är det lite slöseri med datorresurser så sätt den till en 30 eller nått sådant.

skärmdump på hur det ser ut i verkligheten?

Hjälp mig innan jag blir tokig

hehe skrev en fråga här för jag fick inte igång det först, men jag hade bara fel sökväg.. kalasprogram det där!

Senast redigerat 2007-01-17 15:55

Istället kom jag på en annan fundering. Å, Ä och Ö ser knepiga ut i GeekTool. Kör jag samma script i terminalen funkar det klockrent.

Finns det något enkelt sätt att lösa det?

jag fattar inte riktigt hur man får det att funka... när man har skrivit in koden hur gör man för att det ska starta, som att trycka på "ok/enter" liksom?

Du kör det som man kör AppleScript från Terminalen.

Dvs, spara ditt skript och döp det till något fint. Du väljer sen Shell från menyn i GT och skriver in i kommando-rutan:

osascript ~merovech/skript/mittfinascript.scpt

Fast med din väg till ditt skript förstås.

hello, har pysslat länge nu och det säkert simpelt men jag kommer bara inte på det. om ni kollar på bilden så ser ni mitt problem, texten från itunes står på rad och inte fint med radbrytningar. jag hoppas ni kan hjälpa mig för jag kommer inte på vad som är fel.

Kör du med

osascript /sökväg/till/skriptet/iTunes.playlist.scpt | sed 's/ZaZaZaZaZ/\
/g'

?
Anledningen att det krävs en sed efter applescriptet är att jag inte lyckadas få skriptet att returnera en sträng med flera rader. Observera att returen efter /\ är viktig.
Det är alltså texten ovan som skall stå i GeekTool

1
Bevaka tråden