Un Applescript que copy por lotes la label de canción a la label de movimiento

Tengo una biblioteca bastante grande de iTunes (~ 300GB) que es principalmente música clásica. Me gusta mucho el formatting Trabajo y Movimiento, pero lamentablemente no es práctico actualizar manualmente mis metadatos al formatting Trabajo y Movimiento. Casi todas las tags de canción existentes tienen el siguiente formatting:

Telemann - Concerto in E minor: I. Andante II. Allegro III. Largo IV. Allegro etc. 

Un script que podría automatizar la actualización del sistema de labeldo sería similar al siguiente.

  • ¿Cómo ordero una list de reproducción por nombre de file en iTunes?
  • Applescript click la automation en el browser Google Chrome?
  • El button "Buscar actualización" de iTunes pone un cuadro de dialog que solicita un file
  • ¿Es posible presionar teclas en caracteres especiales en AppleScript?
  • ¿Hay alguna manera de sincronizar música entre un PowerPC Mac y un dispositivo con iOS 7?
  • itunes connect analytics de aplicaciones - número de actualizaciones de aplicaciones
    1. En todas las canciones seleccionadas, copie la label de canción en la label de movimiento
    2. Borre el número romano, el punto y el espacio del frente de la label de Movimiento. O bien, en el formatting donde todo el nombre del trabajo está incluido en la label de la canción, elimínelo.

    Cualquier ayuda o pointers para implementar este script realmente sería muy útil. He examinado y usado los guiones de Doug Work and Movement , pero no cubren el process de emparejamiento que se necesitaría para eliminar los numbers romanos desde el principio.

    EDITAR

    Se ha hecho evidente que muchas de las tags no están en el formatting anterior, pero en un formatting como el siguiente:

     Serenade for strings in C major, Op. 48 - I. Allegro Serenade for strings in C major, Op. 48 - II. Adagio Serenade for strings in C major, Op. 48 - III. Allegro moderato etc. 

    O en el mismo formatting que el anterior excepto que usa numbers arábigos en el lugar de los numbers romanos.

    La secuencia de commands debe dar como resultado las tags de "Movimiento" que tienen los siguientes resultados:

     Allegro Adagio Allegro moderato 

    La idea es get la primera parte de esto ("Serenata para strings en Do mayor, Op. 48") y copyrla en la label "trabajo", que ya he implementado, luego get el text restante, eliminar el movimiento numbers, y asignarlo a la label de Movimiento. Cualquier ayuda para implementar un sistema que haría esto sería apreciada.

    Aquí está el guión en su forma actual. Se basa en el guión de Nombre del trabajo de Doug.

     tell application "iTunes" set sel to selection of front browser window if sel is {} then try display dialog "Nothing is selected…" buttons {"Quit"} with icon 0 end try return end if set c to (count of sel) set songName to (get name of item 1 of sel) set userOptions to display dialog "Edit for Work name and then click OK." default answer songName --prompt for work name repeat with i from 1 to c --set the movement numbers set thisTrack to item i of sel try set work of thisTrack to text returned of userOptions set movement number of thisTrack to i set movement count of thisTrack to c set movement of thisTrack to my delRomNum(name of thisTrack) -- copy movement text from song name and delete roman numerals end try end repeat end tell on delRomNum(t) -- the perl command search and delete any roman numeral (must be a word followed by the period and a space character) do shell script "/usr/bin/perl -pe 's/\\b[IVXLCDM]+\\b. //g' <<< " & quoted form of t end delRomNum 

  • "Ineligible" canciones de iCloud en dispositivos iOS
  • La música desaparece del iPod Classic después de desconectarse de la computadora
  • ¿Qué significa exactamente "borrar y sincronizar" en iTunes?
  • cambiar la carpeta de descarga en base al website desde el que descargo
  • OS X: Especificación de la invocación de línea de command personalizada del progtwig como aplicación para abrir files con doble clic
  • Abre iTunes cuando el iPhone está conectado en una Mac
  • 2 Solutions collect form web for “Un Applescript que copy por lotes la label de canción a la label de movimiento”

    Para eliminar los numbers romanos, puede usar el manejador delRomNum() desde este script:

     --- this text as an example. set movementText to "Telemann - Concerto in E minor: I. Andante II. Allegro III. Largo IV. Allegro etc." set movementText to my delRomNum(movementText) -- delete roman numerals on delRomNum(t) -- the perl command search and delete any roman numeral (must be a word followed by the period and a space character) do shell script "/usr/bin/perl -pe 's/\\b[IVXLCDM]+\\b. //g' <<< " & quoted form of t end delRomNum 

    El resultado del guion es

     "Telemann - Concerto in E minor: Andante Allegro Largo Allegro etc." 

    Actualizar:

    Si entendí correctamente:

    Desde cada línea en una cadena, el command debe eliminar los caracteres desde el comienzo de la línea hasta la primera aparición de (un número romano o un número arábigo) seguido del punto y un carácter de espacio, por lo tanto, use este manejador:

     -- call it, like this --> set movement of thisTrack to my delRomNum(name of thisTrack) on delRomNum(t) (*** from the contents of the 't' variable (the end of lines must be an Unix Line Endings), so the 'tr' command change the carriage returns (Mac Line Endings) to linefeed (Unix Line Endings) the 'perl' command delete the first character in each line through the first occurrence of a word which contains (a roman numeral or a number) followed by the period and a space character ***) do shell script "tr '\\r' '\\n' <<< " & (quoted form of t) & " | /usr/bin/perl -pe 's/^.*?\\b[IVXLCDM0-9]+\\b. //g'" end delRomNum 

    Ejemplo: el script pasa esta cadena al controller como parámetro

     Serenade for strings in C major, Op. 48 - I. Allegro Serenade for strings in C major, Op. 48 - II. Adagio Serenade for strings in C major, Op. 48 - III. Allegro moderato Serenade for strings in C major, Op. 48 - 4. Allegro Molto Appassionato Serenade for strings in C major, Op. 48 - 5. Adagio - Allegro Molto Serenade for strings in C major, Op. 48 - 6. Allegro moderato VII. Adagio - Allegro Non Troppo 8. Allegro Ma Non Tanto 9. Largo Adagio etc. 

    El controller regresa:

     Allegro Adagio Allegro moderato Allegro Molto Appassionato Adagio - Allegro Molto Allegro moderato Adagio - Allegro Non Troppo Allegro Ma Non Tanto Largo Adagio etc. 

    Bueno, me he dado count de esto. En el caso de que esto sea útil para otra persona, esta es la secuencia de commands completa.

     tell application "iTunes" set sel to selection of front browser window if sel is {} then try display dialog "Nothing is selected…" buttons {"Quit"} with icon 0 end try return end if set c to (count of sel) set songName to (get name of item 1 of sel) set workName to display dialog "Edit for Work name and then click OK." default answer songName --prompt for work name set movementLength to display dialog "Edit to everything except the movement name. Do not include the roman numeral if one is present. If an arabic numeral is present, include it." default answer songName --prompt for movement length repeat with i from 1 to c --set the movement numbers set thisTrack to item i of sel set songName to (get name of thisTrack) set work of thisTrack to text returned of workName set movement number of thisTrack to i set movement count of thisTrack to c set movement of thisTrack to my delRomNum(text ((length of text returned of movementLength) + 1) thru (length of songName) of songName as string) -- copy movement text from song name and delete roman numerals end repeat end tell on delRomNum(t) -- the perl command search and delete any roman numeral (must be a word followed by the period and a space character) do shell script "/usr/bin/perl -pe 's/\\b[IVXLCDM]+\\b. //g' <<< " & quoted form of t end delRomNum 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).