Possible to automate entering star ratings and play counts for identical/duplicate song in iTunes

applescriptautomatoritunesmusic

I'm in the process of replacing my low quality <192 kpbs MP3s into either 320 kpbs MP3 or ALAC files in iTunes.

Right now my routine is to import the new HQ files to iTunes, go to "Show Duplicate items" mode, sort according to Song Name, manually replace the star ratings and using Doug's Applescripts to add the new Play Count to the new songs.

Anyone have a better and faster way of doing this? I have a large library and it's really cumbersome manually replacing ratings and play count for the same song but in higher quality. I searched Doug's page but can't find anything like what I'm describing.

Thanks

Best Answer

Here is my little script to do what you are asking for. Tested on a couple of tracks on my iTunes 11 under Snow Leopard and it run just fine.

tell application "iTunes"

    set myMusicLib to some playlist whose special kind is Music
    log "Debug: Count of library items: " & (count of tracks of myMusicLib)

    set myNewTracks to (get tracks in myMusicLib whose bit rate is greater than 256)
    log "Debug: Count hi bit rate tracks: " & (count of myNewTracks)

    repeat with newTrack in myNewTracks

        -- Try to match it with a low bit rate track
        set trackName to name of newTrack
        set albumName to album of newTrack

        --log "Debug: Hi Rate Track Name: " & (get name of newTrack)
        --log "Debug: Rate: " & (get bit rate of newTrack)

        set oldTracks to {}
        try
            set oldTracks to (get tracks in myMusicLib ¬
                whose bit rate is less than 256 ¬
                and name is trackName ¬
                and album is albumName)
        end try

        if (count of oldTracks) is 1 then
            log "Debug: Dup Name: " & trackName
            log "Debug: BitRate: " & (get bit rate of item 1 of oldTracks)

            set oldPlayCount to (get played count of item 1 of oldTracks)
            set played count of newTrack to oldPlayCount
            log "Debug: Reset Play Count to: " & oldPlayCount

            set oldRating to (get rating of item 1 of oldTracks)
            set rating of newTrack to oldRating
            log "Debug: Reset rating to: " & oldRating
        end if
        if (count of oldTracks) is greater than 1 then
            log "ERROR: Found more than 1 duplicate. Not doing anything."
        end if
    end repeat
end tell

EDIT:

You can get a glimpse of what is going on by looking at the output it sents to the Events pane. Just run it inside the Applescript Editor and click on the Events & Replies buttons to unhighlight them.

Output of script


EDIT2:

To limit the script you can change the line

set myNewTracks to (get tracks in myMusicLib whose bit rate is greater than 256)

to

set myNewTracks to (get tracks in myMusicLib whose bit rate is greater than 256 and Album is "My Album Name")