set sharename to getShareName()
if sharename "" then
set pids to getPIDs()
log pids
if (pids is not equal to {}) then
set XMLpath to getTemporaryFilePath()
writePIDs(pids, XMLpath)
addPlaylist(sharename, XMLpath)
end if
end if
-- get iTunes source name, if it's a share only
-- otherwise return empty string
on getShareName()
set sharename to ""
tell application "iTunes"
try -- avoid errors from iTMS windows, etc
if kind of container of view of front window is shared library then
set sharename to name of container of view of front window as Unicode text
end if
on error
log "error with kind of container of front window"
end try
end tell
return sharename
end getShareName
-- get persistent IDs
-- otherwise return empty list
on getPIDs()
set pids to {}
tell application "iTunes"
set sel to selection
repeat with tra in sel
set end of pids to persistent ID of tra
end repeat
end tell
return pids
end getPIDs
-- write PIDs to XML playlist format
on writePIDs(pids, XMLpath)
-- write XML file
set ret to ASCII character 10
try
set handle to open for access file XMLpath with write permission
on error e
log "Can't open file for writing: "
log e
return false
end try
write XMLHeader() to handle as Çclass utf8È
repeat with pid in pids
write " " & ret to handle as Çclass utf8È
write " Persistent ID" & ret to handle as Çclass utf8È
write " " & pid & "" & ret to handle as Çclass utf8È
write " " & ret to handle as Çclass utf8È
end repeat
write XMLFooter() to handle as Çclass utf8È
close access handle
end writePIDs
-- add playlist to specified iTunes share
on addPlaylist(sharename, XMLpath)
tell application "iTunes"
-- activate
set shares to every source where kind is shared library
repeat with share in shares
get name of share
if name of share is sharename then
set playlist_path to XMLpath as alias
log class of playlist_path
log playlist_path
(add playlist_path to share)
-- todo break
end if
end repeat
end tell
end addPlaylist
-- get path for XML playlist
on getTemporaryFilePath()
return (path to "temp" from system domain as Unicode text) & ("FrontRowExportPlaylist.xml")
end getTemporaryFilePath
-- XML content
on XMLHeader()
return "
Playlists
Name
Remote Playlist
Playlist Items
"
end XMLHeader
on XMLFooter()
return "
Tracks
"
end XMLFooter