1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Titel zu iTunes hinzufügen ohne iTunes zu starten

Dieses Thema im Forum "AppleScript" wurde erstellt von Dante101, 22.03.06.

  1. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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
     
  2. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    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
     
  3. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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
     
  4. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    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.
     
  5. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Ich auch, aber nicht nur die.
    Dank Dir. Werds sofort ausprobieren.

    Liebe Grüße
    Daniel
     
  6. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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
     
    #6 Dante101, 23.03.06
    Zuletzt bearbeitet: 10.08.06
  7. zoom

    zoom Antonowka

    Dabei seit:
    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!
     
  8. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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*
     
    #8 Dante101, 24.03.06
    Zuletzt bearbeitet: 27.03.06
  9. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366

    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
     
    #9 Daisy, 24.03.06
    Zuletzt bearbeitet: 24.03.06
  10. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    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
     
  11. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    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
    
     
  12. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Hier nochmal das korrigierte Script. So sollte es passen, oder?

    Lieben Gruß
    Daniel
     

    Anhänge:

  13. zoom

    zoom Antonowka

    Dabei seit:
    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......
     
  14. Dante101

    Dante101 Ralls Genet

    Dabei seit:
    11.10.05
    Beiträge:
    5.052
    Wie sagt man so schön: Das Gegenteil von "gut" ist "gut gemeint" ;)
    Hier, bitteschön.

    Lieben Gruß
    Daniel
     

    Anhänge:

  15. zoom

    zoom Antonowka

    Dabei seit:
    06.03.06
    Beiträge:
    356
    TOP!
    Vielen Dank! ;)
     

Diese Seite empfehlen