Slow script with long lists
Slow script with long lists
- Subject: Slow script with long lists
- From: Chris Mahn <email@hidden>
- Date: Tue, 18 Oct 2005 20:42:12 -0700
Hello,
I have searched the archives to no avail, so I have come here. Please
take pity on me before I pull all my hair out!
This script is designed to create a random list of tracks from a
playlist (library playlist 1 in this example) in iTunes & play them
sequentially, according to this list. However, if the user decides to
skip a track or tracks, I want those tracks removed from the random
list. This is slightly complicated because when you skip a track in
iTunes, the tracks progress numerically. The following is an extreme
example: Track 7 begins playing (which is not what you are in the mood
for), so you skip the track by hitting the ffwd button moving to track
8 (which is yuck), so you skip to track 9(yuck), skip to track 10
(ahhh, finally). Well now the tracks 7,8,9,10 must be removed from the
playlist, so they are not played again.
The script below achieves this goal, although it does it very very
slowly when the list is only moderately long (>300 songs). I shudder to
think of it working on 20,000 songs.
Can someone help me make this process happen quickly or at least much
quicker?
Cheers, Chris
---script below---
global trk_list
on run
tell application "iTunes"
activate
set trk_list to get index of every track of library playlist 1
--randomize trk_list using HAS "unsortList" subroutine (not included
here)
repeat until trk_list is {}
set limit to length of trk_list
set dummyList to {}
play track (item 1 of trk_list) of library playlist 1
delay 10
if index of current track is not (item 1 of trk_list) then
set lst_plyd to index of current track
repeat with i from 1 to limit
set this_item to (item i of trk_list)
if this_item < (item 1 of trk_list) then
copy this_item to end of dummyList
else
if this_item > (index of current track) then
copy this_item to end of dummyList
end if
end if
end repeat
set trk_list to dummyList
log trk_list
else
set trk_list to rest of trk_list
end if
end repeat
log trk_list
end tell
end run
(* using this subroutine, when you skip a track or tracks it will
remove those tracks from the master track list & countinue playing the
master track list where things left off.
*)
-----------------------
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Applescript-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden