| Paste number 133959: | AppleScript iTunes playlist creation |
| Pasted by: | PowerUser |
| When: | 5 months, 2 weeks ago |
| Share: | Tweet this! | http://paste.lisp.org/+2VD3 |
| Channel: | None |
| Paste contents: |
property allowed_file_types : {"public.audio", "public.movie"}
property last_playlist_name : ""
on playlist_named(playlist_name)
local matching_playlists
tell application "iTunes" to set matching_playlists to (every playlist whose name is playlist_name)
if length of matching_playlists > 0 then return first item of matching_playlists
return missing value
end playlist_named
on create_playlist(playlist_name)
local the_playlist
set the_playlist to playlist_named(playlist_name)
if the_playlist = missing value then
tell application "iTunes" to set the_playlist to make new playlist with properties {name:playlist_name}
end if
return the_playlist
end create_playlist
to insert_tracks of file_list into playlist_name
-- Sanitize the file list
local start_date, track_list, a_file
set start_date to current date
set track_list to {}
repeat with a_file in file_list
local a_track
tell application "iTunes"
set a_track to add (a_file as alias)
if (date added of a_track) > start_date then
try
local alternate_track
set alternate_track to (first track in playlist "Library" whose name is (get name of a_track) and album is (get album of a_track) and artist is (get artist of a_track) and kind is (get kind of a_track) and bit rate is (get bit rate of a_track) and disc count is (get disc count of a_track) and disc number is (get disc number of a_track) and track count is (get track count of a_track) and track number is (get track number of a_track) and year is (get year of a_track) and date added < (get date added of a_track))
set an_alias to get location of alternate_track
delete a_track
set a_track to alternate_track
end try
end if
end tell
copy a_track to the end of track_list
end repeat
-- Get the playlist
local the_playlist
set the_playlist to create_playlist(playlist_name)
set last_playlist_name to playlist_name
-- Do the work
tell application "iTunes"
local a_track
repeat with a_track in track_list
duplicate a_track to the_playlist
end repeat
end tell
end insert_tracks
on prompt_for_playlist_name()
local playlist_name
set playlist_name to ""
repeat while playlist_name = ""
local dialog_result
set playlist_name to text returned of (display dialog "Enter a name for the new playlist:" default answer last_playlist_name with title "Name Playlist")
if playlist_name = "" then
beep
else
if playlist_named(playlist_name) is not missing value then
try
display dialog "Playlist \"" & playlist_name & "\" already exists. Add the tracks to it?" buttons {"No", "Yes"} default button "Yes" cancel button "No"
on error
set playlist_name to ""
end try
end if
end if
end repeat
return playlist_name
end prompt_for_playlist_name
on open file_list
insert_tracks of file_list into prompt_for_playlist_name()
end open
on prompt_for_files()
return choose file of type allowed_file_types with prompt "Choose files to make into a new playlist" with multiple selections allowed
end prompt_for_files
on run
open prompt_for_files()
end run
This paste has no annotations.