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

1

INTRODUCTION

Hola,

Como siempre, quiero decir que no soy un experto en guiones. Ni siquiera soy un codificador básico. Solo trato de aprender, poco a poco, sobre la codificación cuando tengo estos desafíos. ¡Por favor, basta con un muñeco!

PRECEDENT

Necesito transferir la información de metadatos del autor de un libro PDF a la etiqueta de Autor en mi biblioteca de iTunes. (¡Sí! Me deshice de iBooks y volví a Libros en iTunes)

Recientemente aquí en este sitio, con la ayuda de uno de los miembros, pude resolver un problema de script. O una especie de.

EL PROBLEMA

Digo algo así, porque incluso cuando el script realiza la tarea sin problemas si no hay un carácter especial en el nombre, el script tiene una gran limitación: no leerá, escribirá o ambos, texto que contenga caracteres especiales.

EJEMPLO :

Mercé Lamás del Jagüey Nuñ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 para curar correctamente los libros PDF +4000 en mi biblioteca de iTunes.

¡Gracias!

SCRIPT EN 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

GRAPHIC

    
pregunta Jostma 16.04.2015 - 21:56

2 respuestas

1

Puede usar perl para convertir caracteres de Unicode escapados 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')\""
    
respondido por el jackjr300 18.04.2015 - 22:30
0

Al final de su script, reemplace "como cadena" con "como cadena Unicode". Y prueba. Si esto no resuelve su problema, intente con "como texto Unicode".

    
respondido por el Nicolas Barbulesco 19.04.2015 - 11:08

Lea otras preguntas en las etiquetas