28/10/2008

Pour faciliter le retagging...

Si vous êtes comme moi amateur de beaucoup de musiques et maniaque à tendance obsessionnelle quant à l'exactitude des tags de vos fichiers audio et même des noms des fichiers eux-mêmes, vous vous retrouvez sûrement à retaper à la main pour les fichiers ce qui a déjà été tapé pour les tags. C'est redondant donc à éviter.

iTunes est pourvu d'un bon dictionnaire AppleScript, et j'ai dans mes tiroirs quelques scripts qui me facilitent la vie, donc qui peuvent la faciliter à d'autres.

Cela dit, petite mise en garde: c'est du brut de copier-coller de script à usage personnel; c'est donc sans garde-fou, sans vérification de bon déroulement, ça part du principe que je sais ce que je fais en les lançant. Je ferai éventuellement un soir de morne ennui une révision pour les rendre plus "solides" et génériques, mais dans l'immédiat "mange les restes"! A placer dans ~/Library/iTunes/Scripts/.

Pour remplir en incrémentant le champ "track number" des pistes sélectionnées:

tell application "iTunes"
    if selection is not {} then
        set track_list to selection
        set i to 0
        repeat with a_track in track_list
            set i to (i + 1)
            set a_track's track number to i
        end repeat
    end if
end tell

Pour renommer une liste de lecture pour qu'elle reflète son contenu (tiens, avec des commentaires propres et en anglais, ce qui me laisse supposer que j'avais l'intention de publier ça un jour):

(* 
* getArtistNames(aPlaylist: iTunes playlist)
* retrieves the list of artist names for the tracks in the passed playlist
* returns: list of strings
*)
on getArtistNames(aPlaylist)
    tell application "iTunes" to set theTempArtistNames to (artist of tracks of aPlaylist)
    set theArtistNames to {}
    repeat with aName in theTempArtistNames
        if theArtistNames does not contain aName then copy (contents of aName) to the end of theArtistNames
    end repeat
    return theArtistNames
end getArtistNames

(* 
* getAlbumName(aPlaylist: iTunes playlist)
* retrieves the album name for the first track in the passed playlist
* returns: string
*)
on getAlbumName(aPlaylist)
    tell application "iTunes" to set theAlbumName to album of first item of tracks of aPlaylist
    return theAlbumName
end getAlbumName

(*
* createPlaylistName(aPlaylist: iTunes playlist)
* creates a playlist name for the passed playlist
* returns: string
*)
on createPlaylistName(aPlaylist)
    set theArtistNames to getArtistNames(aPlaylist)
    if (count theArtistNames) = 1 then
        set theAlbumName to getAlbumName(aPlaylist)
        set thePlaylistName to (first item of theArtistNames) & " - " & theAlbumName
    else
        set thePlaylistName to first item of theArtistNames
        repeat with anArtistName in rest of theArtistNames
            set thePlaylistName to (thePlaylistName & ", " & anArtistName)
        end repeat
    end if
    return thePlaylistName
end createPlaylistName


(*
* Main
*)
on run
    tell application "iTunes"
        set thePlaylist to view of front window
    end tell
    set thePlaylistName to createPlaylistName(thePlaylist)
    tell application "iTunes"
        set name of thePlaylist to thePlaylistName
    end tell
end run

Et le plus pratique, pour renommer les fichiers en fonction de leurs tags (attention, j'y fais l'hypothèse forte que le fichier est soit au format AAC soit au format MP3):

tell application "iTunes"
    if selection is not {} then
        set cur_list to selection
        repeat with cur_track in cur_list
            tell cur_track
                set cur_track_name to name
                if kind of cur_track is "AAC audio file" then
                    set cur_track_suffix to ".m4a"
                else
                    set cur_track_suffix to ".mp3"
                end if
                if (track number) < 10 then
                    set cur_track_num to ("0" & ((track number) as string))
                else
                    set cur_track_num to ((track number) as string)
                end if
                set cur_track_location to location
                tell application "Finder"
                    set cur_track_file to (get cur_track_location)
                    set cur_track_file's name to cur_track_num & " " & cur_track_name & cur_track_suffix
                end tell
            end tell
        end repeat
    end if
end tell

Voilà, ça peut servir...


Tags:

cc-by-nc | code (applescript) | itunes


Rot13 en AppleScript (29/10/2008)Ceci est peut-être un manifeste terroriste (27/10/2008)