iTunes tronque les MP3. Je connais le correctif, mais je souhaite l'automatiser avec AppleScript.

2

iTunes a commencé à tronquer les MP3 que j'ai ajoutés. Qui sait pourquoi Ils ont tendance à se faire couper à 4h10. Il y a une discussion, et un correctif, ici

L'incroyable résolveur de problèmes, abuckiew, donne à un AppleScript la possibilité de parcourir les morceaux et de les lire brièvement.

Si quelqu'un utilise ma solution de contournement, j'utilise le script Apple suivant après avoir ajouté des fichiers à ma bibliothèque pour permettre à chaque chanson de jouer pendant environ 1 seconde (modifiez le nombre 5 en fonction du nombre de chansons que vous avez ajoutées):

delay 1
activate application "iTunes"
tell application "System Events"
  repeat 5 times
  key code 124
  delay 1.5
  end repeat
end tell

Mais je veux améliorer cela. Ce que je recherche, c’est un AppleScript qui va supprimer des chansons d’iTunes (soit des chansons sélectionnées, soit une liste de lecture complète), puis les rajouter et les lire pendant une seconde. Je suis presque là! C'est ce que j'ai

global okflag, selectedTracks
set separator to "."
set okflag to false
-- check if iTunes is running 
tell application "Finder"
    if (get name of every process) contains "iTunes" then set okflag to true
end tell
if okflag then
    try
        tell application "iTunes"
            copy (a reference to (get view of front window)) to thePlaylist
            -- check if "Library"; later, we will not offer to number a Library playlist
            set using_the_Library to false
            if (class of thePlaylist) is library playlist then set using_the_Library to true

            if item 1 of selection exists then
                set using_selection to true
                copy (selection's items) to theTracks
            else -- its the whole playlist
                set selectedTracks to (get a reference to thePlaylist)
                copy (thePlaylist's tracks) to theTracks
                set using_selection to false
            end if

            repeat with i from 1 to (count theTracks)

                if using_selection then
                    copy item 1 of selection to thisTrack
                else
                    copy track 1 of selectedTracks to thisTrack
                end if
                -- thisTrack now set
                copy (get thisTrack's location) to location_in_finder

                delete (some track of library playlist 1 whose database ID is (get database ID of thisTrack))
                add location_in_finder to library playlist 1

            end repeat
        end tell -- iTunes
    on error error_message number error_number
        tell me to display dialog error_message & return & "Error number " & error_number
    end try
end if -- okflag

Ce script prend les pistes sélectionnées (ou toute la liste de lecture, si rien n'est sélectionné) et supprime les fichiers d'iTunes, puis les rajoute. Ce que je dois faire est de jouer chaque piste ré-ajoutée pendant 1 seconde. Comment puis-je obtenir une référence au fichier que j'ai ré-ajouté afin de pouvoir dire à iTunes de le lire?

Merci d'avance!

Richard Maneuv
la source

Réponses:

1

Deviner!

Voici la ligne correspondante : set newTrack to add location_in_finder to library playlist 1. Je n'avais pas réalisé que cela add trackrenvoyait une référence à la piste ajoutée, mais le dictionnaire AppleScript d'iTunes m'a éclairé.

Le script final est ci-dessous:

global okflag, selectedTracks, newTrack
set separator to "."
set okflag to false
-- check if iTunes is running 
tell application "Finder"
    if (get name of every process) contains "iTunes" then set okflag to true
end tell
if okflag then
    try
        tell application "iTunes"
            copy (a reference to (get view of front window)) to thePlaylist
            -- check if "Library"; later, we will not offer to number a Library playlist
            set using_the_Library to false
            if (class of thePlaylist) is library playlist then set using_the_Library to true

            if item 1 of selection exists then
                set using_selection to true
                copy (selection's items) to theTracks
            else -- its the whole playlist
                set selectedTracks to (get a reference to thePlaylist)
                copy (thePlaylist's tracks) to theTracks
                set using_selection to false
            end if

            repeat with i from 1 to (count theTracks)

                if using_selection then
                    copy item 1 of selection to thisTrack
                else
                    copy track 1 of selectedTracks to thisTrack
                end if
                -- thisTrack now set
                copy (get thisTrack's location) to location_in_finder

                delete (some track of library playlist 1 whose database ID is (get database ID of thisTrack))
                set newTrack to add location_in_finder to library playlist 1
                play newTrack
                delay 1.5
                stop

            end repeat
        end tell -- iTunes
    on error error_message number error_number
        tell me to display dialog error_message & return & "Error number " & error_number
    end try
end if -- okflag
Richard Maneuv
la source
1
Au lieu de copier et coller tout le script, pouvez-vous expliquer ce que vous avez changé et comment vous l'avez corrigé?
JBis
1
@ Josh: Bien sûr. Voici la ligne correspondante: set newTrack to add location_in_finder to library playlist 1. Je n'avais pas réalisé que cela add trackrenvoyait une référence à la piste ajoutée, mais le dictionnaire AppleScript d'iTunes m'a éclairé.
Richard Maneuv
Génial! Pouvez-vous modifier ceci dans votre réponse?
JBis