Me gustaría crear una lista de reproducción inteligente en iTunes basada en una carpeta específica (gestiono mi biblioteca multimedia manualmente).
¿Sigue siendo posible de alguna manera en ITunes 12 (aunque implique la creación de scripts)?
Me gustaría crear una lista de reproducción inteligente en iTunes basada en una carpeta específica (gestiono mi biblioteca multimedia manualmente).
¿Sigue siendo posible de alguna manera en ITunes 12 (aunque implique la creación de scripts)?
No lo creo. Parece que utilizan información de la base de datos/biblioteca de iTunes, así que ¿cómo podrían saber algo sobre una carpeta aleatoria de tu ordenador?
Sin embargo, podría simularlo utilizando Folder Actions o launchd, pero ninguno de los dos es perfecto.
Folder Actions sólo funciona para los nuevos archivos en un directorio y proporciona la lista de archivos añadidos al programa/script que va a ejecutar para que sepa qué ha cambiado.
launchd por otro lado ejecutará tu script/app cada vez que algo cambie en la(s) carpeta(s), puedes monitorear mupltiples, pero no te dirá qué ruta cambió o cómo - se agregó o eliminó, etc.
Personalmente, me decantaría por el launchd. Si se trata de una sola carpeta que podría hardcode en su script.
En cuanto al script, 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
Es realmente divertido ver cómo reacciona al añadir y eliminar archivos de la carpeta. Disfruta.... :)
Por último, te recomiendo que consultes estas URL.
www.macissues.com/2015/02/02/how-to-use-launchagents-to-monitor-folder-contents-in-os-x/ apple.stackexchange.com/questions/6658/
Vaya, gracias, Vic, por la exhaustiva explicación. Escribí un AppleScript que guarda la ubicación en la (inútil) etiqueta de descripción. Cuando tenga más tiempo me sumergiré en launchd
.
No hay problema. En otro sitio se sugirió una solución similar a la tuya, aunque ahora no la encuentro. Está bien si no usas el campo y te acuerdas de cambiarlos todos. En cualquier caso, esto fue divertido de hacer ya que nunca antes había jugado con agentes de lanzamiento. El script era una versión modificada de lo que escribí hace poco así que no fue gran cosa.
AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.