|
Description
Requirements
InstallationPut script into ~/Library/iTunes/Scripts
|
Download
|
Instructions
|
Applescript Source Code
-- Constants property allOptions : { "Book Title", "Author", "Disc Total", "Track Prefix", "Genre", "Join Tracks (Yes/No)" } -- Stored Variables (first run only) property mySettings : {"", "", "", "", "Books & Spoken", "Yes"} property myDisc : 1 tell application "iTunes" activate -- Get the library set the_library to (get a reference to library playlist 1) repeat with timeout of 31000 seconds -- i.e. with infinite timeout set myChoice to "" repeat until myChoice is "Import" set dispSet to my buildSet() set myChoice to display dialog ((dispSet as string) & return & "Disc Number") default answer myDisc buttons {"Stop", "Edit", "Import"} default button 3 set myDisc to text returned of myChoice set myChoice to button returned of myChoice if myChoice is "Edit" then my EditOptions() if myChoice is "Stop" then return end repeat -- Find the CD to import -- if none, skip to the eject and wait portion set theCD to "" repeat with z from 1 to (count of sources) if kind of source z is audio CD then set theCD to audio CD playlist 1 of source z set AudioPlaylist to (a reference to audio CD playlist 1 of source z) exit repeat end if end repeat if theCD is not "" then -- Set the CD and Track Names and other information set diskID to myDisc as number if diskID < 10 then set diskID to "0" & diskID set name of theCD to item 1 of mySettings set artist of theCD to item 2 of mySettings set disc number of theCD to myDisc set disc count of theCD to item 3 of mySettings set genre of theCD to item 5 of mySettings set trackNum to 1 repeat with the_track in every track of AudioPlaylist set trackID to track number of the_track if trackID < 10 then set trackID to "0" & trackID set theName to (item 4 of mySettings) & "_" & diskID & " " & trackID set name of the_track to theName end repeat if item 6 of mySettings is "Yes" then set theName to (item 4 of mySettings) & "_" & diskID set album of track 1 of AudioPlaylist to theName tell application "System Events" tell process "iTunes" activate set frontmost to true click menu item "Select All" of menu "Edit" of menu bar 1 delay 1 click menu item "Join CD Tracks" of menu "Advanced" of menu bar 1 end tell end tell end if -- Import the tracks convert the tracks of AudioPlaylist -- Copy the tracks into the book's playlist set playlist_name to item 1 of mySettings if not (exists playlist playlist_name) then make new user playlist with properties {name:playlist_name} end if if item 6 of mySettings is "Yes" then set the_track_ref to (get a reference to track ((item 4 of mySettings) & "_" & diskID) of the_library) copy the_track_ref to user playlist playlist_name set album of the_track_ref to item 1 of mySettings else repeat with the_track in every track of AudioPlaylist set the_track_ref to (get a reference to track (name of the_track) of the_library) copy the_track_ref to user playlist playlist_name end repeat end if end if -- Eject the CD «event aevtejct» -- Wait until another CD is inserted set disk_inserted to false repeat until disk_inserted display dialog "Insert next CD" giving up after 8.0 buttons {"Cancel"} repeat with i from 1 to the count of sources if kind of source i is audio CD then set disk_inserted to true end if end repeat end repeat if theCD is not "" then set myDisc to myDisc + 1 end timeout end repeat end tell on EditOptions() tell application "iTunes" set editChoice to 1 repeat until ((editChoice is {}) or (editChoice is false)) set dispSet to my buildSet() set editChoice to (choose from list dispSet with prompt "Current book settings:" default items {} with empty selection allowed) if ((editChoice is not {}) and (editChoice is not false)) then set myEye to my list_position(item 1 of editChoice, dispSet) set newVal to text returned of (display dialog (item myEye of allOptions) default answer (item myEye of mySettings)) set item myEye of mySettings to newVal end if end repeat end tell end EditOptions on list_position(this_item, this_list) repeat with i from 1 to the count of this_list if (item i of this_list) is this_item then return i end repeat return 0 end list_position on buildSet() set dispSet to {} repeat with g from 1 to (count of mySettings) copy (item g of allOptions) & ": " & (item g of mySettings) & return to end of dispSet end repeat return dispSet end buildSet
|
Version History
|
|