Lista de reproducción inteligente en Itunes basada en la ubicación del archivo

Me gustaría crear una lista de reproducción inteligente en iTunes basada en una carpeta específica (administro mi biblioteca multimedia manualmente).

¿Es eso posible de alguna manera en iTunes 12 (incluso si se trata de secuencias de comandos)?

Respuestas (1)

No me parece. Parece que usan información de la base de datos/biblioteca de iTunes, entonces, ¿cómo podrían saber algo sobre alguna carpeta aleatoria en su computadora?

Sin embargo, podría simularlo usando Acciones de carpeta o launchd, pero ninguno es perfecto.

Folder Actions solo funciona para archivos nuevos en un directorio y proporciona la lista de archivos agregados al programa/secuencia de comandos que ejecutará para que sepa qué ha cambiado.

launchd, por otro lado, ejecutará su secuencia de comandos/aplicación siempre que algo cambie en la (s) carpeta (s), puede monitorear varias, pero no le dirá qué ruta cambió o cómo, agregada o eliminada, etc.

Iría con launchd personalmente. Si es solo una carpeta, puede codificarla en su secuencia de comandos.

En cuanto al guión, prueba esto...

set dpath to "/some/path/test/"
set qdpath to quoted form of dpath
set listname to "MyList"
set adpath to (POSIX file dpath as alias)


# Get audio files in selected folder 
#   -- alas no recursive search results without a lot more code... :(
#   -- or use mdfind or other command line tool using `do shell script...`
set afiles to {}
tell application "Finder"
    repeat with ext in {".mp3", ".m4a"}
        set l to (every file in adpath whose name contains ext)
        repeat with f in l
            set end of afiles to (f as alias)
        end repeat
    end repeat
end tell

tell application "iTunes"
    if not (user playlist listname exists) then
        make new user playlist with properties {name:listname}
    end if

    # Built a list of existing list tracks so we don't have duplicates...
    set itracks to {}
    try
        set itracks to (get location of every track in playlist listname)
    end try

    set view of window 1 to playlist listname

    # Add not already in playlist
    repeat with afile in afiles
        if afile is not in itracks then
            try
                set tid to (add afile to playlist listname)
            end try
        end if
    end repeat

    # Remove any tracks from the itunes playlist not in the folder
    # and from the iTunes database else they still show up as invalid tracks...
    set iItems to (every track in playlist listname)
    set iLib to library playlist named "Library"
    repeat with iItem in iItems
        set loc to location of iItem
        if loc is not in afiles then
            set pid to persistent ID of iItem

            log "Removing: " & loc
            try
                # Thanks Doug Adams, it was driving me nuts....
                delete (some file track of library playlist 1 whose persistent ID is pid)
            end try
            delay 1
        end if
    end repeat
end tell

En realidad, es divertido verlo reaccionar al agregar y eliminar archivos de la carpeta. Disfrutar.... :)

Finalmente, te recomiendo que revises estas URL.

www.macissues.com/2015/02/02/how-to-use-launchagents-to-monitor-folder-contents-in-os-x/ apple.stackexchange.com/questions/6658/

Wow, gracias, Vic, por la explicación detallada. Escribí un AppleScript que guarda la ubicación en la etiqueta de descripción (inútil). Cuando tenga más tiempo me sumergiré en launchd.
Ningún problema. Se sugirió una solución similar a la suya en otro lugar, aunque no puedo encontrarla ahora. Está bien si no usa el campo y recuerda cambiarlos todos. En cualquier caso, fue divertido hacerlo, ya que nunca antes había jugado con agentes de lanzamiento. El guión era una versión modificada de lo que escribí recientemente, así que no fue gran cosa.