9 votos

Descargar todo el historial de compras de iTunes como archivo CSV

Me pregunto si alguien ha encontrado una manera de descargar todo el historial de compras de iTunes o App Store como un archivo CSV.

Sé que desde iTunes puedo ir a Cuenta / Ver cuenta / Historial de compras, pero esto tiene numerosos problemas. No me permite descargar los resultados, sino que sólo los muestra en iTunes. No muestra todas las compras, sino que muestra los resultados de una en una. Y ni siquiera muestra las compras como partidas individuales, sino que las muestra agrupadas en colecciones en las que hay que hacer clic. Es casi como si trataran de dificultar la visualización de lo que se gasta en la App Store o en la iTunes Store....

No he guardado asiduamente todos los recibos de correo electrónico relativos a mis compras, por lo que no puedo acceder a esta información haciendo un tratamiento masivo de esos antiguos correos electrónicos.

Entonces, ¿hay alguna otra forma de acceder a esta información que no sea la inadecuada interfaz de iTunes?

Y si la única manera es a través de la interfaz de iTunes, ¿hay alguna forma de scribir la UI para poder escribir un programa que itere por todos los resultados y los extraiga? ¿Alguien ha logrado hacer esto?

5voto

jjpr Puntos 61

Has preguntado: "¿hay alguna forma de scribir la interfaz de usuario?". Sí, si estás en un Mac. También preguntaste, "¿alguien ha logrado hacer esto?" Más o menos. Mi historial se remonta a 2005, y la sesión de iTunes Store se desconectaba, así que tuve que ejecutarla por lotes, pero el siguiente script funciona. Ten en cuenta que se ejecuta muy lentamente; simplemente recuperar la clase de un objeto de iTunes puede tardar casi un segundo. Agradecería cualquier mejora de rendimiento que alguien pueda sugerir.

Esto funcionaba en OS X Yosemite 10.10.5 con iTunes 12.3.2.35, y en OS X Mavericks 10.9.5 con iTunes 12.3.2.35, en torno al 28 de febrero de 2016. Cualquier cambio que Apple haga en la interfaz de la cuenta de iTunes Store probablemente romperá este script.

En iTunes, vaya a Tienda > Ver cuenta, inicie sesión, desplácese hasta Historial de compras y haga clic en Ver todo, luego, cuando la pantalla que muestra Lote 1 de N sea visible, ejecute el siguiente scripten Editor:

tell application "System Events"
    set dateString to do shell script "date \"+%Y-%m-%d_%H.%M.%S\""
    log dateString
    set target_file to ((path to documents folder) as text) & dateString & "_iTunes_Purchase_History.txt"
    set myOutput to ""

    set webArea to UI element "loading iTunes store" of splitter group 1 of window "iTunes" of application process "iTunes"
    set batchText to value of first UI element of webArea whose value starts with "Viewing Batch"
    log batchText
    set AppleScript's text item delimiters to {" "}
    set num to last text item in batchText
    log num
    set currentNum to text item 3 in batchText
    log currentNum

    repeat num times
        set els to UI elements of webArea
        set ready to false
        set open_target_file to open for access file target_file with write permission
        --repeat with el in els
        repeat with el in els
            set cl to class of el
            if cl is button then
                set myOutput to myOutput & "\n"
            end if
            if cl is static text then
                set val to value of el
                if val starts with "Copyright" then set ready to false
                if ready then set myOutput to myOutput & val & "\t"
                if val is "Total Price" then set ready to true
            end if
        end repeat
        log myOutput
        write myOutput to open_target_file starting at eof
        set myOutput to ""
        close access open_target_file

        click button "Next" of webArea
        repeat
            delay 2
            set batchText to value of first UI element of webArea whose value starts with "Viewing Batch"
            set tempNum to text item 3 in batchText
            if tempNum is not currentNum then
                set currentNum to tempNum
                log currentNum
                exit repeat
            end if
        end repeat
        delay 2
    end repeat
end tell

Esto produce un texto delimitado por tabulaciones, no un CSV como pedía el OP, pero la mayoría de las aplicaciones de hojas de cálculo lo importarán. Las compras de regalos parecen estropear el formato, por lo que puede ser necesario un tratamiento manual.

Me basé en la información de http://n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript/ para aprender a hacer scripts GUI.

-1voto

djule5 Puntos 810

Yo uso una máquina windoze principalmente y encontré una forma semimanual de realizar la tarea de la siguiente manera:

En iTunes, vaya a Información de la cuenta (actualmente en la parte superior derecha de iTunes, junto al botón de búsqueda). Desplázate hasta el Historial de compras y haz clic en "Ver todo".

  1. Utilice Tiro verde para capturar la información de la compra
  2. Pegar desde el portapapeles en One-Note,
  3. Utilice la opción "Imagen a texto" en la imagen pegada.
  4. Pegar texto en One-Note - o en otro documento.
  5. Corrija y reformule según sea necesario.

Haz clic en el botón "Siguiente" y espera a que iTunes te dé la siguiente docena de entradas. Repite, repite, repite.

Sample One-Note screen of iTunes purchases

Sugerencia: Parece que por defecto la vista es de las últimas compras y "Siguiente" va hacia atrás en el tiempo. También hay que tener en cuenta que las compras múltiples en el mismo día (como los álbumes) se agrupan y hay que hacer clic en el pequeño símbolo -> para ver los detalles significativos.

-1voto

Dorsey Krofft1 Puntos 1

Este script realmente hace ¡funciona! sólo que no como se esperaba

  1. Seguí las instrucciones, pero me dio un error: algo sobre no poder manejar los TÍTULOS como una cadena (?). esto tomó unos 2-3 minutos.
  2. primeras sospechas:
    • cuando copié y pegué el código en el editor script, las siguientes líneas fueron "interpretadas", es decir \n apareció como un salto de línea [literal/visual], al igual que \t aparecer como una pestaña [literal/visual]
      • establecer miSalida como miSalida & " \n "
      • si está listo entonces establece miSalida como miSalida & val & " \t "
    • comas que separan los "Títulos incluidos en el pedido" indicando las compras múltiples en un mismo día
    • Me equivoqué creo no sé.
  3. En una broma, salté al último lote (aparentemente, mi primera compra con esta cuenta fue en 2004, lo que significó 49 lotes) y ejecuté el scriptde nuevo
    • resultado: el script se estaba ejecutando más de lo esperado, así que supuse que había un error y detuve el proceso después de unos 10 minutos PERO se generó un archivo *.txt [en mi carpeta de Documentos]. este archivo mostraba datos para
      • el último lote [que se mostraba en iTunes cuando inicié el script] ENTONCES
      • el PRIMER lote [LOTE 1, que muestra mis compras más recientes]
      • cuando fui a iTunes, me di cuenta de que aparecía el BATCH 2
    • conclusión: el comando para el botón NEXT (clic en el botón "Next" de webArea) estaba funcionando. ¡¡¡ALGO ESTABA PASANDO!!! ( y mi teoría sobre las comas se vio disminuida)
  4. para obtener la información que necesitaba (lotes 1-13 de 49), hice lo siguiente:
    • saltó a la ÚLTIMA tanda (aquí, la 49ª tanda)
    • ejecutó el script
    • He monitorizado iTunes, y he visto cómo la pantalla de lotes cambiaba automáticamente hasta mostrar BATCH 14
    • He detenido el script y he comprobado el archivo *.txt en mi carpeta de Documentos
    • LO! el archivo *.txt mostraba mis compras desde el [último] BATCH 49 hasta el BATCH 13!
  5. aún no he terminado! quería repetir el error inicial para registrar el error exacto y ver si mis sospechas iniciales tenían sentido. NOPE! empecé desde el principio, y ESTO:
    • el scriptse ejecutó como se esperaba
    • el único error (hasta ahora, porque todavía estoy ejecutando el script) fue una pérdida de tiempo de conexión en el BATCH 21

actualmente, el script está trabajando en el BATCH 32

HORARIO:

  • Según la fecha de creación del archivo *.txt generado y los tiempos de modificación (que también estoy controlando), parece que cada lote tarda unos 3 minutos en procesar y actualizar dicho archivo *.txt.
  • Hasta ahora, para mis 49 lotes (sin incluir el tiempo de espera de la conexión) ha tardado
    • BOTES 1-21 = @45 minutos
    • LOTES 21-49 (en curso: lote actual guardado = 34) = @30 minutos

Lo sé ¡TMI! ¡TMI!
¡pero espero que esto ayude!

EDITAR:

  1. RE: #5 arriba " el único error (hasta ahora, porque sigo ejecutando el script) fue una pérdida de tiempo de conexión en el BATCH 21"
    • He reiniciado el script, empezando por el BATCH 21 (donde se produjo la pérdida de tiempo de conexión)
    • Esperaba que terminara en el BATCH 1 ¡NO! continuó, sin interrupción, hasta que redondeó sobre sí mismo y grabó hasta el BATCH 20 (que mostrará el BATCH 21 en iTunes al terminar)

CONCLUSIÓN: el script se ejecutará desde el BATCH[n] hasta el BATCH[n-1] (siempre que NO haya tiempos de espera/interrupciones)

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