Pobierz całą historię zakupów iTunes jako plik CSV (MacOS High Sierra)

0

Czy ktoś znalazł sposób na pobranie historii zakupów iTunes do jakiegoś formatu csv lub tekstowego?

Najbliższą rzeczą, jaką mogłem znaleźć, była odpowiedź StackExchange na wielki skrypt jabłkowy, który może zautomatyzować to zadanie, ale skrypt nie działa z High Sierra i nowszymi wersjami iTunes.

https://apple.stackexchange.com/a/229240/288140

pepe
źródło

Odpowiedzi:

1

Poniższe prace dotyczą aktualnie używanego systemu MacOS (High Sierra 10.13.5 Beta) i najnowszego iTunes (12.7.4.76).

Napisałem skrypt AppleScript, który używa skryptów interfejsu użytkownika i kompiluje listę zakupionych utworów w iTunes. Skrypt otworzy nowy dokument TextEdit i wypełni utwory w formacie rozdzielanym przecinkami i będzie zawierał kolejny numer, nazwę utworu, wykonawcę, album i czas trwania utworu. Wynik będzie podobny do tego:

"Nr","Song Name","Artist","Album","Duration"
"1","Badinerie","Lucero Tena","Lección de castañuelas","1:03"
"2","El colibrí","Lucero Tena","Lección de castañuelas","1:07"
"3","El relicario","Lucero Tena","Lección de castañuelas","1:36"

itunes

Oto skrypt:

tell application "iTunes" to activate
tell application "TextEdit"
    activate
    make new document at the front with properties {name:"iTunes purchased.txt"}
    delay 1
    tell application "System Events" to click menu item "Make Plain Text" of menu 1 of menu bar item "Format" of menu bar 1 of application process "TextEdit"
end tell
tell application "iTunes" to activate
tell application "System Events"
    keystroke "1" using {command down}
    set w to window "iTunes" of application process "iTunes"
    click radio button "Store" of radio group 1 of w
    delay 2
    set webarea to UI element 1 of scroll area 1 of group 1 of group 1 of splitter group 1 of w
    click static text 1 of UI element 1 of group 6 of list 2 of webarea
    delay 2
    click radio button "All" of tab group 1 of group 2 of webarea
    delay 3
    click radio button "Songs" of tab group 1 of group 5 of webarea
    delay 5
    set allRows to UI elements of table 1 of webarea
    set entireContent to quote & "Nr" & quote & "," & quote & "Song Name" & quote & "," & quote & "Artist" & quote & "," & quote & "Album" & quote & "," & quote & "Duration" & quote & return
    tell application "TextEdit" to activate
    repeat with aRow in allRows
        if class of aRow is row then
            set gr to UI element 1 of group 1 of UI element 2 of aRow
            if class of gr is group then
                set songNum to value of static text 1 of group 1 of UI element 1 of aRow
                set songName to value of static text 1 of group 2 of UI element 2 of aRow
                set songArtist to value of static text 1 of group 1 of UI element 1 of UI element 3 of aRow
                set album to UI element 1 of UI element 4 of aRow
                set songAlbum to ""
                if (count of UI elements of album) is greater than 0 then
                    set songAlbum to value of static text 1 of group 1 of album
                end if
                set songDuration to ""
                set dur to UI element 5 of aRow
                if (count of UI elements of dur) is greater than 0 then
                    set songDuration to value of static text 1 of group 1 of dur
                end if
                set aLine to quote & songNum & quote & "," & quote & songName & quote & "," & quote & songArtist & quote & "," & quote & songAlbum & quote & "," & quote & songDuration & quote
                set entireContent to entireContent & aLine & return
                tell application "TextEdit" to set text of front document to entireContent
            end if
        end if
    end repeat
end tell

Proces nie jest szybki, na moim komputerze trwa około 1 sekundy na utwór, więc bądź przygotowany na chwilę oczekiwania. Ponadto, jeśli zaczniesz otrzymywać błędy „poza indeksem”, spróbuj, podczas gdy skrypt jest uruchomiony, przewijając listę utworów iTunes w tle, aby upewnić się, że cała zawartość listy jest załadowana przed uzyskaniem dostępu przez AppleScript.

boris42
źródło
Używam High Sierra OS 10.13.4 (17E202) z iTunes 12.7.4.76, a kiedy uruchamiam ten skrypt, pojawia się następujący błąd: Zdarzenia systemowe mają błąd: Nie można uzyskać elementu interfejsu użytkownika „Zakupione” z grupy 6 lista 2 elementu UI 1 obszaru przewijania 1 grupy 1 grupy 1 rozdzielacza grupa 1 okna „iTunes” procesu aplikacji „iTunes”. Po podświetleniu tego wiersza: kliknij tekst statyczny „Zakupione” elementu interfejsu użytkownika „Zakupione” z grupy 6 listy 2 witryny sieci Web Wszelkie pomysły dotyczące problemów?
Stephen
@ Stephen Czy skrypt przechodzi do sekcji Store w iTunes? Jeśli tak, jaka jest nazwa łącza do Zakupione (lokalizacja może być powodem)?
boris42
@Następnie spróbuj zaktualizowanego skryptu, w którym zastąpiłem tekst „Zakupione” dostępem przez indeks, powinien działać lepiej
boris42