FasdUAS 1.101.10 k l  "Random Tracks by Artist to Party Shuffle" for iTunes written by Damon Parker damonp@damonparker.org based on "Random Tracks by Artist to Playlist" for iTunes written by Doug Adams dougadams@mac.com v1.1 oct 14 2005 -- initial release  l  j 0 path_to_xml m /)~/Music/iTunes/iTunes\ Music\ Library.xml  p 0 num_of_tracks 0 done_tracks 0 artist_list l l O k l l $ check source, gotta be iTunes ! r"# "l$ $e% %n&' &1   pKnd 'n () (1  ctnr )n *+ *1  pPly +4,  cBrW ,m #o 0 the_source!-. -ZB/0 />12 1o 0 the_source 2m  eSrckLib 0k>3345 4Q;67 6I289 .sysodlogaskr**** 8b":; :l < <c => =b?@ ?mA A'!Select a track in iTunes, not in  @o 0 the_source >m  TEXT ;m !B B.9CD  btns CJ#&EEF Fm#$G G CancelDHI  dflt Hm'(IJK  disp Jm)*KL  givu Lm+, 7R .ascrerr ********5M ML<>.NO NlCCOPQ PlCCR R check for selectionQST SZCUVW U=CNXY XnCKZ[ Z1GK  sele [4CG\  cBrW \mEF YJKM VkQ]]^_ ^lQQ` `0* get list of artists from XML, wicked fast_ab anQVcd cIRV 0get_artist_list dfQRbef erWpgh gcWlij ilWjk kIWjlm .gtqpchltTEXT@@TEXT loWZ 0 artist_listmno  prmp nm]`p pSelect an Artist...oq  mlsl qmcd  boovfals jmjk  TEXT ho 0artfr rZqst s=qxuv uoqt 0art vmtww w false tL{} Wkxxyz yr{| {n}~ }1  pArt ~n 4  cobj m n 1  sele 4  cBrW m |o 0artz lT l l l  proceed.... l l l )# get a list of all tracks by artist r I .hookSrchcTrkcPly 4  cLiP m  pTrm o 0art  pAre m  eSrAkSrR o 0 them_tracks l /) filter out Artist names that aren't the  l E? particular Artist (Don't want "Sugarcult" if it's "Sugar", eg) r J o 0 found_tracks X Z = n 1  pArt o 0a_trk o 0art r o 0a_trk n ; o 0 found_tracks 0a_trk o 0 them_tracks l l  how many ya want? r% n! I! 0 get_a_number m  b b b b b b b b m 93Enter the number of random tracks you want in your  o 0art m  Playlist... o  ret m  (You have  l  n  1   leng o  0 found_tracks m   o 0art m  tracks.) f o 0 num_of_tracks l&& l&& *$ establish variable for new playlist r&2 4&.~ ~ cPly m*-  Party Shuffle o} }0party_playlist l33|| =7 set shuffle of party_playlist to false -- just in case l33{z{z l33yy 82 got all tracks by selected artist in found_tracks l33xx 4. num_of_tracks is the limit of tracks we want  l33wvwv Z3u B3> n3: 16:t t leng o36s s0 found_tracks o:=r r0 num_of_tracks lAg XAgq IWbp p.coreclon******** oWXo o 0atraTrnm n insh o[^l l0party_playlistm q 0atraTr oDGk k0 found_tracks D> not enough/just enough tracks to meet criteria, so use em allu lj kj   rjp   Jjljj  oi i0 done_tracks  h  Qq tt lx Wx n Igf g0add_this_track oe e0 found_tracks od d0 done_tracksc ob b0party_playlistcf f =| n|!" !1a a leng "o|` `0 done_tracks  o_ _0 num_of_tracks VP it's possible to run into an infinite loop if all the track names are the same! mtw^^ R]\[ ].ascrerr ********\[ k##$% $Q&'Z &IY() Y.sysodlogaskr**** (m* *Couldn't create Playlist!)X+, X btns +J--.W .m/ / CancelW,V01 V dflt 0mUU1T23 T disp 2mSS3R4Q R givu 4mPPQ 'RONM O.ascrerr ********NMZ%5L 5lKJKJLh  select random tracks67 6lIHIH789 8lG:G : show new playlist9;F ;r<= <oE E0party_playlist =n>? >1D D pPly ?4C@ C cBrW @mBBF mAAnull iTunes.app1@( })(0lP~hookalis4Root.HH+ iTunes.app$( ApplicationsxRoot:Applications:iTunes.app iTunes.app RootApplications/iTunes.app/BC BlA@A@CDE DiFG FI?H> ?0add_this_trackHIJ Io= =0 found_tracksJKL Ko< <0 done_tracksLM; Mo: :0party_playlist;> GO4NO Nk3PPQR Ql9S9 S grab a random trackRTU Tr VW VnXY X38 8 cobj Yo7 70 found_tracks Wo6 60 this_trackUZ5 ZQ 3[\4 [Z *]^32 ]H _ _E `a `o 1 10 done_tracks alb0 bncd c1/ / pnam do. .0 this_track0 ^l&ef ek&gghi hl-,-,ijk jI+lm +.coreclon******** lo* *0 this_trackm)n( ) insh no' '0party_playlist(kop or$qr ql!s& sn!tu t1!% % pnam uo$ $0 this_track& rnvw v;"# wo!"# #0 done_trackspx" xl%%! ! " f don't already have it32 \R .ascrerr ********45 OmAEyz ylz{| {l|}~ }l~ i  I 0 get_a_number o  0addenda o 0txt kG I .miscactvnullnull r n 1  ttxt l I  .sysodlogaskr**** b  b  m  o 0addenda o 0txt   dtxt m    btns J m  Cancel m OK  dflt m o 0mynumbermyNumber l QG k * l # c # o ! 0mynumbermyNumber m!"  long L$( c$' o$% 0mynumbermyNumber m%&  nmbr l)) R .ascrerr ******** k2G r25 m23  o 0mynumbermyNumber n6G I7G 0 get_a_number b7B b7> m7: Enter only numbers... o:=  ret o>A  ret  oBC 0txt f67 l i  I 0get_artist_list t9 k8 r b  b  b  m grep "Artist"  o 0 path_to_xml l  m  YS | sort -fd | uniq | sed -e 's/Artist<\/key>//g' -e 's/<\/string>//g'  l  m  0*-e 's/&/\&/g' -e 's/ //g' | tr ' ' ' ' o 0 the_command r I 0 text_to_list l I .sysoexecTEXTTEXT o 0 the_command m   o 0 artist_list Z8 =$ n" 4"  cobj m ! o 0 artist_list m"#  r'4 n'2 7(2  cobj m,. m/1 o'( 0 artist_list o 0 artist_list m l l i I 0 text_to_list o 0txt o 0delim k3 r   n   1  txdl  1  ascr  o 0savedsaveD   Q* k  r  J  o 0delim n 1   txdl 1  ascr r n 2  citm o 0txt o 0thelisttheList R ! .ascrerr ********  o 0errstrerrStr!"  errn "o 0errnumerrNum k*##$% $r#&' &o 0savedsaveD 'n() (1 "  txdl )1  ascr%* *R$*+, .ascrerr ******** +o() 0errstrerrStr,-  errn -o&' 0errnumerrNum./ .r+001 0o+, 0savedsaveD 1n23 21-/  txdl 31,-  ascr/4 4L135 5l126 6o12 0thelisttheList7 7l8 9:;<=8 0 path_to_xml 0add_this_track 0 get_a_number 0get_artist_list 0 text_to_list .aevtoappnull****9G>? 0add_this_track@@ 0 found_tracks 0 done_tracks 0party_playlist> 0 found_tracks 0 done_tracks 0party_playlist 0 this_track?A  cobj  pnam  insh .coreclon********51.EO", l O,6FOPYhWXhU:AB 0 get_a_numberCC 0addenda 0txtA 0addenda 0txt 0mynumbermyNumberB~}|{zyxwvu .miscactvnullnull  dtxt  btns ~ dflt} |.sysodlogaskr**** { ttxt z long y nmbrxw v ret u0 get_a_numberH*j O%%lvl ,EO&O&OPWX EO)a_%_%l+;tsrDEq t0get_artist_listsrDp p0 the_commandE onmlkjo n.sysoexecTEXTTEXT m0 text_to_list l0 artist_list k cobjjq:nb%%%EO*j l+EOi/[\[Zk\Z2EYho<ihgFGf i0 text_to_listheHeHdc d0txt c 0delimgFba`_^] b0txt a 0delim `0savedsaveD _0thelisttheList ^0errstrerrStr ]0errnumerrNumG\[ZYIX \ ascr [ txdl Z citm Y0errstrerrStrIWVU W errn V0errnumerrNumU X errnf4,EOkv,FO-EWX,FO)lO,FO=TJSRKLQ T.aevtoappnull**** JkMMPPSRKON O 0a_trk N 0atraTrL=AMLKJIHAGBFGEDCBA@?>=<;:p9876w543210/.-,+*)('&%$#"! */ M cBrW L pPly K ctnr J pKnd I0 the_source H eSrckLib G TEXT F btns E dflt D disp C givuBA @.sysodlogaskr****?> = sele <0get_artist_list ;0 artist_list : prmp 9 mlsl8 7.gtqpchltTEXT@@TEXT 60art 5 cobj 4 pArt 3 cLiP 2 pTrm 1 pAre 0 eSrAkSrR /.hookSrchcTrkcPly .0 them_tracks -0 found_tracks , kocl +.corecnte******** * ret ) leng (0 get_a_number '0 num_of_tracks & cPly %0party_playlist $ insh #.coreclon******** "0 done_tracks! 0add_this_trackQ*k/,,,EEO+%&%kvkla WXhOhYhO*k/a,jv5)j+O_aaafa &E`O_ahYhY*k/a,ak/a,E`OPO*a k/a!_a"a#a $E`%OjvE`&O0_%[a'al (kha,_ _&6FYh[OYO)a)a*_%a+%_,%a-%_&a.,%a/%_%a0%l+1E`2O*a3a4/E`5O_&a.,_2+%_&[a'al (kha6_5l 7[OYY_jvE`8O-a9n"h_8a.,_2)_&_8_5m+:[OYoW*Xa;a