Applescript (PDF in iTunes): come estrarre e / o scrivere metadati con caratteri speciali? Aiuto per favore :-)

1

Introduzione

Ciao,

Come sempre, voglio mettere in evidenza che non sono un esperto di sceneggiature. Non sono nemmeno un programmatore di base. Cerco solo di imparare, a poco a poco sulla codifica quando ho queste sfide. Si prega di passare attraverso abbastanza per un manichino!

PRECEDENTE

Ho bisogno di trasferire le informazioni sui metadati dell'autore di un libro PDF sul tag Autore nella mia libreria di iTunes. (Sì! Mi sono sbarazzato di iBooks e ho recuperato libri in iTunes)

Recentemente qui in questo sito, con l'aiuto di uno dei membri ho risolto un problema di script. O una specie di.

IL PROBLEMA

Dico di sì, perché anche quando lo script eseguirà il compito in modo impeccabile se nel nome non è presente alcun carattere speciale, lo script ha un enorme limite: non leggerà, non scriverà o entrambi, il testo che contiene caratteri speciali.

Esempio:

Mercé Lamás del Jagüey Nuñez diventa in iTunes Merce \ U0301 Lama \ U0301s del Jagu \ U0308ey Nun \ U0303ez -

Apprezzo il tuo aiuto per trovare una soluzione. Devo automatizzare questa attività per curare correttamente i libri PDF +4000 nella mia libreria di iTunes.

Grazie!

SCRIPT IN DEVELOPMENT

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

    
posta Jostma 16.04.2015 - 21:56
fonte

2 risposte

1

Puoi usare perl per convertire il carattere unicode in escape dal testo 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')\""
    
risposta data 18.04.2015 - 22:30
fonte
0

Alla fine del tuo script, sostituisci "come stringa" con "come stringa Unicode". E prova. Se questo non risolve il tuo problema, prova con "come testo Unicode".

    
risposta data 19.04.2015 - 11:08
fonte

Leggi altre domande sui tag