1 votos

Applescript (PDF a iTunes): Cómo extraer y/o escribir los metadatos con los caracteres especiales? Ayuda por favor :-)

INTRODUCCIÓN

Hola,

Como siempre, quiero poner delante que no soy un experto de script. Aún no soy un programador basic. Yo sólo trato de aprender, poco a poco acerca de la codificación cuando tengo estos desafíos. Por favor, sea a través suficiente para que un Maniquí!

PRECEDENTE

Lo que necesito para transferir la información de metadatos de autor de un libro PDF el Autor de la etiqueta en mi biblioteca de iTunes. (¡Sí! Me deshice de iBooks y volvió Libros en iTunes)

Recientemente aquí en este sitio, con la ayuda de uno de los miembros tengo un script problema resuelto. O algo así.

EL PROBLEMA

Yo digo algo así, porque aún cuando el script va a hacer la tarea a la perfección si no hay ningún carácter especial en el nombre, el guión tiene una gran limitación: no leer, a escribir o a ambos, texto que contiene caracteres especiales.

EJEMPLO:

Mercé Lamás del Jagüey Núñez se convierte en iTunes Merce\U0301 Lama\U0301s del Jagu\U0308ey Nun\U0303ez-

Agradezco su ayuda para encontrar una solución. Necesito automatizar esta tarea correctamente coadjutor en la +4000 libros en PDF en mi biblioteca de iTunes.

Gracias!

LA SECUENCIA DE COMANDOS EN EL DESARROLLO

tell application "iTunes"

set sel to the selection

if sel is {} then display dialog "Please select something" buttons {"Cancel"}

repeat with i from 1 to count of sel

    set the_track to item i of sel

    set the_posix_path to POSIX path of (location of the_track as alias)

    set authorfield to paragraph 2 of (do shell script "mdls -name kMDItemAuthors " & quoted form of the_posix_path & "|  awk -F\\\" '{print $2'}")

    set artist of the_track to (authorfield & "-") as string
end repeat  
end tell

GRÁFICO

enter image description here

1voto

Baczek Puntos 150

Usted puede utilizar perl para convertir escapado de caracteres unicode de texto ASCII :

tell application "iTunes"
    set sel to the selection
    if sel is {} then display dialog "Please select something" buttons {"Cancel"}
    set tc to count sel
    repeat with i from 1 to tc
        tell (get item i of sel)
            set loc to location
            set authorfield to my getAuthors(loc)
            if authorfield is not "" then set artist to authorfield & "-"
        end tell
    end repeat
end tell

on getAuthors(f)
    do shell script "mdls -name kMDItemAuthors  " & (quoted form of POSIX path of f) & " | /usr/bin/perl -ne 'if (m/^ /) {s/^ +[\"]?|\"$//g;s/\\\\u([[:xdigit:]]{1,4})/chr(eval(\"0x$1\"))/egi;print}' "
end getAuthors

O python :

do shell script "export PYTHONIOENCODING=UTF-8; /usr/bin/python -c 'import sys; print (sys.argv[1].replace(\"\\U\",\"\\u\").decode(\"unicode-escape\"))' \"$(mdls -name kMDItemAuthors  " & (quoted form of POSIX path of f) & " |  sed -nE 's/\"$//;s/^ +[\"]?//p')\""

0voto

artvolk Puntos 199

Al final de la secuencia de comandos, reemplazar "como cadena" con "como cadena Unicode". Y probar. Si esto no resuelve el problema, intente con "como texto Unicode".

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X