iTunes trunca los archivos MP3. Conozco la solución, pero quiero automatizarla con AppleScript

2

iTunes ha comenzado a truncar los archivos MP3 que agrego. Quien sabe por que Tienden a cortarse a las 4:10. Hay una discusión y una solución, aquí

El asombroso solucionador de problemas, abuckiew, ofrece un AppleScript para recorrer las canciones y reproducir cada una de ellas brevemente.

  

Si alguien usa mi solución alternativa, uso el siguiente script de Apple después de   agregando archivos a mi biblioteca para que cada canción se reproduzca durante aproximadamente 1 segundo   (cambie 5 a las canciones que haya agregado):

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

Pero quiero mejorar en esto. Lo que estoy buscando es un AppleScript que eliminará las canciones de iTunes (ya sea una de las canciones seleccionadas o una lista de reproducción completa) y luego las volverá a agregar, y las reproducirá durante 1 segundo. ¡Estoy casi allí! Esto es lo que tengo:

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

Este script toma las pistas seleccionadas (o la lista de reproducción completa, si no se selecciona nada), elimina los archivos de iTunes y luego los vuelve a agregar. Lo que necesito hacer es reproducir cada pista re-agregada por 1 segundo. ¿Cómo puedo obtener una referencia al archivo que he vuelto a agregar para que pueda indicarle a iTunes que lo reproduzca?

Gracias de antemano!

    
pregunta Richard Maneuv 05.06.2018 - 04:30

1 respuesta

1

Lo descubrí!

Aquí está la línea correspondiente : set newTrack to add location_in_finder to library playlist 1 . No me había dado cuenta de que add track devolvía una referencia a la pista agregada, pero el diccionario AppleScript de iTunes me mostró la luz.

El guión final está debajo:

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
    
respondido por el Richard Maneuv 05.06.2018 - 19:27

Lea otras preguntas en las etiquetas