• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Titel zu iTunes hinzufügen ohne iTunes zu starten

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Hallo allerseits.

Ein Thread hat meine Neugier geweckt, und jetzt steh ich leider vor einem Problem. Ich werde wie so oft aus den AppleScript Bibliotheken nicht schlau, weil es mir am Grundwissen fehlt.

Es geht um Folgendes:
Ich würde gern ein AppleScript oder vielmehr ein Droplet erstellen, mit dem man einen Ordner mit Liedern zu iTunes hinzufügen kann, ohne das man dieses öffnet. Zugleich sollte eine Playlist mit eben diesen Liedern erstellt werden, welche den Namen des hinzugefügten Ordners trägt.

Ich hätte mit dem Script schon begonnen, steh jetzt aber bei der Subroutine vor oben genanntem Problem:

Code:
-- open Handler

on run
	display dialog "Bitte Dateien auf das Icon dieses Droplets ziehen." buttons "OK" default button 1 with icon 1
end run

-- Hauptprogramm

on open flist
	display dialog "Wollen Sie die ausgewählten Dateien zu iTunes hinzufügen und zugleich eine Playlist erstellen?" buttons {"Abbruch", "Hinzufügen"} default button 1
	set the button_pressed1 to the button returned of the result
	if the button_pressed1 is "Hinzufügen" then
		playlist(flist)
	else
		display dialog "Vorgang abgebrochen!" buttons "OK" default button 1 with icon 1
	end if
end open

-- Subroutine 1

on playlist(flist)
	tell application "iTunes"
-- und eben hier weiss ich nicht weiter
	end tell
end playlist

Vielleicht könnte sich ja jemand erbarmen ;)
Viel kann ja nicht mehr fehlen.o_O

Lieben Gruß
Daniel
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Dante101 schrieb:
mit dem man einen Ordner mit Liedern zu iTunes hinzufügen kann, ohne das man dieses öffnet.

Hallo Daniel,

das ist der Knackpunkt. Wenn du wirklich die iTunes-Datenbank ändern möchtest, ohne iTunes zu öffnen, dann darfst du in deinem Skript iTunes auch keine Befehle erteilen (tell application "iTunes" ...), denn sonst wird das Programm natürlich geöffnet. Will sagen - dein Programm muss die Datenbank selbst lesen und schreiben können. Das ist keine wirklich einfache Aufgabe, fürchte ich.

Ich würde mich erst mal auf die Suche machen, ob sich nicht schon irgend jemand dieses Problems angenommen hat (Versiontracker etc.) - das Programmieren von iTunes-Helferlein ist ja very beliebt ;)

Grüße,

Daisy
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Hi Daisy!

Nein, das wäre zu viel verlangt. Hab mich schlecht ausgedrückt. Zoom, der User von oben genanntem Thread wollte nur nicht vorher extra iTunes aufmachen müssen. Dass das Script dann iTunes öffnet (und offen lässt), ist völlig ok.

Dann dürfte es ja funktionieren, oder?
Gruß
Daniel
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Dante101 schrieb:
Hi Daisy!

Nein, das wäre zu viel verlangt. Hab mich schlecht ausgedrückt. Zoom, der User von oben genanntem Thread wollte nur nicht vorher extra iTunes aufmachen müssen. Dass das Script dann iTunes öffnet (und offen lässt), ist völlig ok.

Dann dürfte es ja funktionieren, oder?
Gruß
Daniel

Hi Daniel,

ja dann ... hab jetzt zwar schon ein wenig viel Wein getrunken ;) aber ich glaube, so tut's:

Code:
on playlist(flist)
	with timeout of 120 seconds
		repeat with thisFolder in flist
			tell application "System Events" to set theName to (name of thisFolder)
			tell application "iTunes"
				set thePlaylist to (make new playlist)
				set name of thePlaylist to theName
			end tell
			
			set thetracks to (do shell script "cd " & (quoted form of (POSIX path of thisFolder)) & "; ls *.[mM][pP][34]")
			set theFolderString to thisFolder as Unicode text
			
			repeat with thisTrack in paragraphs of thetracks
				try
					tell application "iTunes"
						add (alias (theFolderString & thisTrack)) to thePlaylist
					end tell
				end try
			end repeat
			
		end repeat
	end timeout
end playlist

es arbeitet mehere Ordner ab, sucht allerdings nicht in Unterordnern. Man sollte vielleicht auch besser noch überprüfen, ob die gedroppten Items auch alles Folder sind etc.
Aber jetzt mog i nimma ...

Grüße,

D.
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Wow! Funktioniert genau, wie's soll. Trotz des Weines ;)
Hab's in mein Gerüst eingebaut und schnell ein Icon draufgelegt.

Danke nochmal
Gruß
Daniel
 
Zuletzt bearbeitet:

zoom

Antonowka
Registriert
06.03.06
Beiträge
356
Hallo!

Das Script funktioniert ja schon sehr gut. Ich bin begeistert! Allerdings hätte ich noch eine Ergänzung, die sich vielleicht noch einrichten lässt:
Wenn iTunes nun den Ordner mit den Liedern als neue Playlist einrichtet, sollte es die Playlist auch gleich abspielen. Ist das möglich? Ich finde dann wäre es perfekt!
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Jetzt sollte es funktionieren, aber vielleicht kann noch jemand der sich damit auskennt drüberschauen, ob ich eh keinen Blödsinn gemacht hab ;)

Gruß
Daniel

*Anhang entfernt*
 
Zuletzt bearbeitet:

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Dante101 schrieb:
Jetzt sollte es funktionieren, aber vielleicht kann noch jemand der sich damit auskennt drüberschauen, ob ich eh keinen Blödsinn gemacht hab ;)

Gruß
Daniel


Moin Daniel,

ich würde (ohne es ausprobiert zu haben) eher annehmen, dass es so nicht geht. So wie du es gemacht hast, sollte iTunes bei jedem Schleifendurchlauf bei dem wir einen neuen Titel in die Playliste schreiben den 'play thePlaylist'-Befehl ausführen. Ich denke, das ist nicht im Sinne des Erfinders, oder?

Stelle einfach das 'play thePlaylist'* hinter das zweite 'end repeat' , dann müsste er anfangen, die zuletzt angelegte Playlist abzuspielen, wenn er mit dem Anlegen aller Playlists fertig ist.

*(Edit: mit 'tell application "iTunes" to ' davor, sonst geht's natürlich nicht)

Vielleicht könnte man aber auch mal versuchen, eine 'Sample'-Funktion einbauen, bei der jeder Titel beim Einfügen in die Playlist mal kurz angespielt wird. Was haltet ihr davon?
Grüße,

Daisy
 
Zuletzt bearbeitet:

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Wenn man's weiss, klingts ja logisch ;)
Dacht ich's doch, dass ich Blödsinn gemacht hab. Werd das demnächst ausbessern. (Sitz erst am Montag wieder vor nem Mac - der daheim ist hinüber :()

Der Wille war da, Euch (bzw. Dich, Daisy) nicht wegen jeder Kleinigkeit zu nerven, aber sogar hier scheitere ich.

Lieben Gruß und danke.
Daniel
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Hallo Daniel,

als Anregung - hier die angedachte Modifikation deines Skripts mit einer Anspielfunktion (spielt jeden neuen Titel für ca. 10 sec an (mit Fade out).

Grüße,

D.

Code:
on playlist(flist)
	tell application "iTunes" to set SoundVolume to sound volume
	with timeout of 120 seconds
		repeat with thisFolder in flist
			tell application "System Events" to set theName to (name of thisFolder)
			tell application "iTunes"
				set thePlaylist to (make new playlist)
				set name of thePlaylist to theName
			end tell
			
			set thetracks to (do shell script "cd " & (quoted form of (POSIX path of thisFolder)) & "; ls *.[mM][pP][34]")
			set theFolderString to thisFolder as Unicode text
			
			repeat with thisTrack in paragraphs of thetracks
				try
					tell application "iTunes"
						set sound volume to SoundVolume
						set newTrack to (add (alias (theFolderString & thisTrack)) to thePlaylist)
						play newTrack
						delay 7
						repeat with i from 0 to 15
							set sound volume to (SoundVolume * (15 - i) / 15)
							delay 0.2
						end repeat
						stop
					end tell
				end try
			end repeat
		end repeat
		tell application "iTunes" to set sound volume to SoundVolume
		
	end timeout
end playlist
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Hier nochmal das korrigierte Script. So sollte es passen, oder?

Lieben Gruß
Daniel
 

Anhänge

  • Folder_to_Playlist_II.zip
    51,5 KB · Aufrufe: 153

zoom

Antonowka
Registriert
06.03.06
Beiträge
356
Sehr gut. Funktioniert wunderbar! Ich bin euch sehr dankbar.
Wenn jetzt noch diese Frage beim Starten des Programms fehlen würde......
 

Dante101

Ralls Genet
Registriert
11.10.05
Beiträge
5.048
Wie sagt man so schön: Das Gegenteil von "gut" ist "gut gemeint" ;)
Hier, bitteschön.

Lieben Gruß
Daniel
 

Anhänge

  • Folder_to_Playlist_III.app.zip
    20,5 KB · Aufrufe: 161