iTunes tronca MP3. Conosco la correzione, ma voglio automatizzarla con AppleScript

2

iTunes ha iniziato a troncare gli MP3 che aggiungo. Chissà perché. Tendono ad essere tagliati alle 4:10. C'è una discussione e una correzione qui

L'incredibile risolutore di problemi, abuckiew, consente a AppleScript di scorrere tra le canzoni e riprodurle brevemente ognuna di esse.

If anyone uses my workaround I use the following Apple script after adding files to my library to let each song play for appx 1 second (change 5 to however many songs you have added):

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

Ma voglio migliorare su questo. Quello che sto cercando è un AppleScript che rimuova i brani da iTunes (sia brani selezionati che un'intera playlist) e li aggiunga nuovamente, e li riproduca per 1 secondo. Ci sono quasi! Questo è quello che ho:

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

Questo script acquisisce i brani selezionati (o l'intera playlist, se non è selezionato nulla) e rimuove i file da iTunes, quindi li aggiunge nuovamente. Quello che devo fare è suonare ogni traccia aggiunta per 1 secondo. Come posso ottenere un riferimento al file che ho aggiunto nuovamente, quindi posso dire a iTunes di riprodurlo?

Grazie in anticipo!

    
posta Richard Maneuv 05.06.2018 - 04:30
fonte

1 risposta

1

Capito!

Ecco la riga pertinente : set newTrack to add location_in_finder to library playlist 1 . Non mi ero reso conto che add track ha restituito un riferimento alla traccia aggiunta, ma il dizionario AppleScript di iTunes mi ha mostrato la luce.

Lo script finale è il seguente:

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
    
risposta data 05.06.2018 - 19:27
fonte

Leggi altre domande sui tag