Dear Asker,
if you're not affraid of AppleScript, copy the code below into new AppleScriptEditor document, SAVE, press RUN, and here you go.
This is my code, created specially for this missing-in-itunes feature.
This exports a playlist choosen, into a folder indicated, keepeng the tree structure of AUTHOR-ALBUM-tracks
You can adapt this to fit your needs.
Enjoy ;l)
-------------------------------------------------------
set my_lists to {}
tell application "iTunes"
repeat with curr_list in user playlists
set the end of the my_lists to name of curr_list
end repeat
end tell
set pl_name to item 1 of (choose from list (my_lists) with prompt "Choose the list!")
set dst_location to (choose folder with prompt "Where to? A super-folder will be created (if folder exists some random sufix will be added)?" as text)
-------------------------------------------------------
set prev_artist to ""
set prev_album to ""
set prev_composer to ""
set mynumbers to {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
tell application "Finder"
set myFolder to folder dst_location
if not (exists folder pl_name of the myFolder) then
set newFolder to make folder new folder at myFolder
set name of newFolder to pl_name
set dst_location to (dst_location & pl_name)
else
set newFolder to make folder new folder at folder dst_location
set new_name to pl_name & "-" & some item of mynumbers & some item of mynumbers & some item of mynumbers
set name of newFolder to new_name
set dst_location to (dst_location & new_name)
end if
tell application "iTunes"
set pl to user playlist pl_name
--------------------------------------------------------
set my_tracks to {}
set missing_tracks to {}
repeat with curr_track in tracks of pl
if location of curr_track is not missing value then
set the end of the my_tracks to curr_track
else
set the end of the missing_tracks to curr_track
end if
end repeat
--------------------------------------------------------
repeat with curr_track in my_tracks
set curr_loc to location of curr_track as string
set album_name to (album of curr_track) as string
set artist_name to (album artist of curr_track) as string
if length of artist_name is 0 then
set artist_name to (artist of curr_track) as string
end if
set folder_name to (artist_name & " - " & album_name)
tell application "Finder"
set fileRef to file curr_loc
if not (exists folder folder_name of folder dst_location) then
set newFolder to make folder new folder at folder dst_location
set name of newFolder to folder_name
end if
set dst_path to (dst_location & ":" & folder_name & ":" & name of fileRef)
if not (exists file dst_path) then
duplicate file curr_loc to folder folder_name of folder dst_location
end if
end tell
end repeat
end tell
end tell
return