Yes - it does work and has saved me a lot of grief. I've actually modified it to make it even easier. I'm going to try to paste in the script here but am not sure Apple will let it through. The way I identify tracks that have metadata corrupted by Apple is to add a special character ( "|" ) at the end of the "sort name". When Apple corrupts the metadata that character disappears. I have a standard playlist to which I add all tracks with metadata that I've modified and a smart playlist that looks for any tracks in that playlist but don't have the "|" in the "sort name". Anything in that playlist has been corrupted by Apple. This scripts fixes the tracks in that playlist.
Here's the script. If Apple doesn't let it through I'm not going to be posting or emailing it. Thanks much to the original author.
Cheers,
Steve
-----
(*
Refresh Selected Tags v1.0
June 6, 2006 (yes, that's 6/6/06)
http://marv.kordix.com
Modifed 25 Jul '14 by Steve
Does not require tracks be pre-selected
Instead it touches all tracks in special smart playlists.
Those playlists are setup to only contain tracks with metadata that I changed but Apple subsequently corrupted
Corrupted tracks identified by those missing a special character "|" that I added to the "sort name"
Created 3 playlists to test this. This script lets you select which one to check
If the selected playlist is not empty is will tell you how many there are and ask if you want to continue
If the playlist is empty the only option is to quit
This is rough code but it works
Next update will be to run this automatically on a schedule
Tip on how to do that here
http://www.peachpit.com/blogs/blog.aspx?uk=Mac-Productivity-Scheduling-AppleScri pts
*)
tell application "iTunes"
set initialFI to fixed indexing
set fixed indexing to true
set whichList to button returned of (display dialog "Which playlist?" buttons {"Edited Metadata", "Prot Movie No (", "Missing |"} default button 3)
set thePlayList to user playlist whichList
set numtracks to count of tracks of thePlayList
if numtracks < 1 then
(* quit *)
beep 1
set answer to button returned of (display dialog "NumTracks < 1" buttons {"Quit"} default button 1)
else
beep 1
set question to display dialog (numtracks as text) & " Tracks. Proceed?" buttons {"Yes", "No"} default button 1
set answer to button returned of question
if answer is equal to "Yes" then
set SelectedTracks to every track of thePlayList
repeat with CurrentTrack in SelectedTracks
if CurrentTrack's class is file track then
tell CurrentTrack
refresh CurrentTrack
end tell
end if
end repeat
end if
end if
set fixed indexing to initialFI
if answer is equal to "Yes" then
beep 1
display dialog "Finished Refresh" buttons {"Quit"} default button 1
end if
end tell