Ask Different is a question and answer site for power users of Apple hardware and software. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is there an easy way to extract metadata from iTunes? I want to know how much a certain artist has been played (for each track, playcount * track length.)

share|improve this question

You can do it with AppleScript (assuming you're on a Mac). Here's some scrappy code I've knocked together. Open up AppleScript editor, paste this in and run.

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"
            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
            display alert "Looks like you haven't played anything by " & artist_name & " yet?" as warning
        end if

    end if
end if
share|improve this answer

There's an app in the Mac App Store called mySpins that gives you all kinds of info like that: play counts, total play time, etc.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.