2010-08-04 12 views
0

J'ai obtenu des indices de http://www.dougscripts.com/itunes/ pour venir avec le code suivant. Mais il faut beaucoup plus d'améliorations.Lecture des paroles à partir de iTunes pour faire un fichier

 
tell application "iTunes" 
if player state is playing then 
    set sel to current track as list 
else if selection is not {} then 
    set sel to selection 
end if 

set noSong to "" 
set summaryFile to ((path to desktop as Unicode text) & "songs2.txt") 
set ff to open for access file summaryFile with write permission 
repeat with this_track in sel 
    set the_lyrics to this_track's lyrics 
    set {art, nom} to {this_track's artist, this_track's name} 
    if the_lyrics is not "" then 
    tell application "TextEdit" 
    activate 
    set myVar to art & nom & the_lyrics 
    write myVar to ff starting at eof 
    end tell 
    else 
    beep 
    end if 
end repeat 
end tell 

Répondre

1

vous venez d'avoir des choses hors champ toute la fermeture d'ouverture et de l'écriture du fichier texte doit être fait qu'iTunes et TEXEDIT ne sont pas nécessaires

set summaryFile to ((path to desktop as Unicode text) & "songs2.txt") 
try 
    close access (summaryFile as alias) -- close the file if its open alreayd 
end try 
set ff to open for access file summaryFile with write permission 
tell application "iTunes" 
    if player state is playing then 
     set sel to current track as list 
    else if selection is not {} then 
     set sel to selection 
    end if 

    set noSong to "" 
    repeat with this_track in sel 
     set the_lyrics to lyrics of this_track 
     set {art, nom} to {artist of this_track, name of this_track} 
     if the_lyrics is not "" then 
      tell me 
       set myVar to art & nom & the_lyrics 
       write myVar to ff starting at eof 
      end tell 
     else 
      beep 
     end if 
    end repeat 
end tell 
close access (summaryFile as alias) 
2

Voici deux sous-routines I utiliser pour gérer les données d'écriture dans un fichier texte:

on WriteLog(the_text) 
     set this_story to the_text 
     set this_file to (((path to desktop folder) as text) & "MY STORY") 
     my write_to_file(this_story, this_file, true) 
end WriteLog 

on write_to_file(this_data, target_file, append_data) 
    try 
     set the target_file to the target_file as text 
     set the open_target_file to ¬ 
      open for access file target_file with write permission 
     if append_data is false then ¬ 
      set eof of the open_target_file to 0 
     write this_data to the open_target_file starting at eof 
     close access the open_target_file 
     return true 
    on error 
     try 
      close access file target_file 
     end try 
     return false 
    end try 
end write_to_file  

S'il vous plaît noter write_to_file() est le code d'Apple à partir de leur propre ancien site AppleScript Sous-routines essentielles. WriteToLog() est mon propre sous-programme qui écrit pour s'interfacer avec write_to_file avec un seul argument, le texte lui-même. Ajouter le sel au goût. Pour réécrire le script ACCUEILLENT les sous-routines ci-dessus, je le ferais comme ceci:

tell application "iTunes" 
    if player state is playing then 
     set sel to current track as list 
    else if selection is not {} then 
     set sel to selection 
    end if 

    set noSong to "" 
    repeat with this_track in sel 
     set the_lyrics to this_track's lyrics 
     set {art, nom} to {this_track's artist, this_track's name} 
     if the_lyrics is not "" then 
      set myVar to art & nom & the_lyrics 
      my WriteLog(myVar) 
     else 
      beep 
     end if 
    end repeat 
end tell 
+0

Merci pour le script et le WriteToLog() aurait dû être WriteLog(), sans elle, il fonctionne très bien. – prosseek

+0

Oups! Fixé. Merci d'avoir attrapé ça. –