¿Existe una manera fácil de extraer los metadatos de iTunes? Quiero saber cuánto se ha reproducido un determinado artista (para cada pista, playcount * duración de la pista.)
Respuestas
¿Demasiados anuncios?
alex
Puntos
3964
Puedes hacerlo con AppleScript (suponiendo que estés en un Mac). Aquí hay un código que he creado. Abre el editor de AppleScript, pega esto y ejecútalo.
set dialog_reply to display dialog "Enter artist name:" default answer "Boards Of Canada"
if text returned of dialog_reply is not "" then
set plays_list to {}
set times_list to {}
set artist_name to text returned of dialog_reply
tell application "iTunes"
try
tell source 1
tell library playlist 1
tell (every track whose artist is artist_name)
set plays_list to played count
set times_list to time
end tell
end tell
end tell
on error
display alert "Couldn't find anything by " & artist_name as warning
end try
end tell
if length of plays_list is greater than 0 then
set total_time_minutes to 0
set total_time_seconds to 0
repeat with i from 1 to (length of times_list)
set this_time to (item i of times_list)
set text item delimiters to ":"
set time_elements to every text item of this_time
set this_minutes to item 1 of time_elements
set this_seconds to item 2 of time_elements
if item i of plays_list is greater than 0 then
set total_time_minutes to total_time_minutes + (this_minutes)
set total_time_seconds to total_time_seconds + (this_seconds)
end if
end repeat
set total_time_minutes to total_time_minutes + (total_time_seconds div 60)
set total_time_seconds to (total_time_seconds mod 60)
if total_time_minutes is greater than 0 or total_time_seconds is greater than 0 then
if length of (total_time_seconds as string) is less than 2 then set total_time_seconds to "0" & total_time_seconds as string
display alert "You've played " & artist_name & " for " & total_time_minutes & "m " & total_time_seconds & "s." as informational
else
display alert "Looks like you haven't played anything by " & artist_name & " yet?" as warning
end if
end if
end if
Kirk McElhearn
Puntos
1299