Pobierz całą historię zakupów iTunes jako plik CSV

7

Zastanawiam się, czy ktoś znalazł sposób na pobranie całej historii zakupów iTunes lub App Store jako plik CSV?

Wiem, że z iTunes mogę przejść do konta / przeglądania konta / historii zakupów, ale ma to wiele problemów. Nie pozwala mi pobrać wyników, ale pokazuje je tylko w iTunes. Nie pokazuje wszystkich zakupów, ale zamiast tego pokazuje wyniki po jednym ekranie na raz. I nawet nie pokazuje zakupów jako pojedynczych elementów zamówienia, ale pokazuje je pogrupowane w kolekcje, w które należy kliknąć. To prawie tak, jakby próbowali utrudnić sprawdzenie, jak wydajesz w App Store lub iTunes Store ...

Nie oszczędzałem sumiennie wszystkich potwierdzeń e-mail dotyczących moich zakupów, więc nie mogę uzyskać dostępu do tych informacji, przetwarzając masowo te stare e-maile.

Czy jest więc jakikolwiek inny sposób uzyskania dostępu do tych informacji oprócz nieodpowiedniego interfejsu iTunes?

A jeśli jedynym sposobem jest interfejs iTunes, czy jest jakiś sposób na napisanie skryptu interfejsu użytkownika, abym mógł napisać program, który będzie iterował wszystkie wyniki i je rozpakował? Czy komukolwiek się to udało?

glon
źródło
Jeśli nikt nie zeskrobuje danych, zastanów się, czy nie poprosić o wsparcie Apple o podsumowanie. Mogą być w stanie uzyskać dane, jeśli poprosisz i wyjaśnisz, w jaki sposób próbowałeś, a nie udało Ci się je pobrać za pomocą dostarczonych przez nich narzędzi.
bmike
pytasz o ponad 90 dni?
Ruskes,
Tak. Chcę dowiedzieć się, ile pieniędzy wydawałem co miesiąc od 2007 roku na te rzeczy. Po drugie, chcę dokonać inwentaryzacji wszystkich dokonanych przeze mnie zakupów, których nie będzie można udostępniać za pośrednictwem udostępniania rodziny iCloud, co wyklucza między innymi zakupy w aplikacji i aplikacje, których nie można udostępniać.
algal
Oprócz przeglądania historii zakupów w App Store, prawdopodobnie lepiej spojrzeć na raporty kart kredytowych, które można pobrać jako plik CSV.
Ruskes,
Tak, to zadziała, aby obliczyć całkowite wydatki. Ale tylko iTunes (tylko Apple ...) może dostarczyć informacje o zakupie potrzebne do zidentyfikowania zakupów w aplikacji i odróżnienia muzyki od zakupów w aplikacji. Wydaje się, że jedynym sposobem jest zgarnianie ekranu, co jest innym sposobem na powiedzenie, że nie mam szczęścia ...
algal

Odpowiedzi:

6

Zapytałeś: „Czy jest jakiś sposób na napisanie skryptu?” Tak, jeśli korzystasz z komputera Mac. Zapytałeś także: „Czy komuś udało się to zrobić?” Raczej. Moja historia sięga 2005 roku, a sesja w sklepie iTunes Store upłynęła limit czasu, więc musiałem ją uruchamiać partiami, ale poniższy skrypt działa. Pamiętaj, że działa bardzo wolno; samo pobranie klasy obiektu z iTunes może zająć prawie sekundę. Z zadowoleniem przyjmuję wszelkie ulepszenia wydajności, które każdy może zaproponować.

To działało na OS X Yosemite 10.10.5 z iTunes 12.3.2.35 i na OS X Mavericks 10.9.5 z iTunes 12.3.2.35, 28 lutego 2016 r. Lub około. Wszelkie zmiany wprowadzone przez Apple w interfejsie konta iTunes Store prawdopodobnie się zepsują ten skrypt.

W iTunes przejdź do Sklepu> Wyświetl konto, zaloguj się, przewiń do Historii zakupów i kliknij Zobacz wszystko, a następnie, gdy widoczny będzie ekran pokazujący Partię 1 z N, uruchom następujący skrypt w edytorze skryptów:

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

Powoduje to utworzenie tekstu rozdzielanego tabulatorami, a nie CSV zgodnie z żądaniem PO, ale większość aplikacji do obsługi arkuszy kalkulacyjnych go zaimportuje. Wydaje się, że zakupy prezentów psują formatowanie, więc może wymagać ręcznej selekcji.

Oparłem się na informacjach pod adresem http://n8henrie.com/2013/03/a-strategy-for-ui-scripting-in-applescript/, aby dowiedzieć się, jak wykonać skrypt GUI.

jjpr
źródło
Niestety wydaje się, że nie działa to już w systemach macOS Sierra i iTunes 12.5.3.x
Bradley MacDonald
wywołuje ten błąd w Sierra:System Events got an error: Can’t get UI element 1 of UI element "loading iTunes store" of splitter group 1 of window "iTunes" of application process "iTunes" whose value starts with "Viewing Batch". Invalid index.
Bjørson Ålmer
(Dodałem ten komentarz w niewłaściwym miejscu: do pytania, a nie do odpowiedzi…) Działało idealnie dla mnie. MacOS Sierra 10.12.4, 56 partii. Za około 1,5 godziny. Dane nie były idealnie sformatowane z powodu niespójności w rzeczywistych danych, ale później łatwo je było naprawić. Dzięki za najbardziej przydatny skrypt! Szkoda, że ​​nie mogę dodać go bezpośrednio do iTunes.
Manngo,
Wow, wielkie dzięki! Postępowałem zgodnie ze wskazówkami obok skryptu i działał on powoli, jak powiedziałeś. I dał mi idealny plik, który otworzył się idealnie w programie Excel. Korzystanie z OSX 10.11.6.
Todd
Działa na High Sierra 10.13.5 i najnowszym iTunes: apple.stackexchange.com/a/325065/191531
boris42
0

Używam głównie maszyny windoze i znalazłem półautomatyczny sposób na wykonanie tego zadania w następujący sposób:

W iTunes Przejdź do informacji o koncie (obecnie w prawym górnym rogu iTunes obok przycisku wyszukiwania). Przewiń w dół do Historii zakupów, kliknij „Zobacz wszystko”.

  1. Użyj Greenshot, aby przechwycić informacje o zakupie
  2. Wklej ze schowka do One-Note,
  3. Użyj opcji „Obraz do tekstu” na wklejonym obrazie.
  4. Wklej tekst do jednej notatki - lub innego dokumentu.
  5. Popraw i sformatuj w razie potrzeby.

Kliknij przycisk „Dalej” i poczekaj, aż iTunes dostarczy Ci kolejne tuziny wpisów. Powtarzaj, powtarzaj, powtarzaj.

Przykładowy ekran One-Note zakupów iTunes

Wskazówka: Wygląda na to, że domyślnie widok dotyczy ostatnich zakupów, a „Dalej” cofa się w czasie. Zauważ też, że wiele zakupów tego samego dnia (np. Albumbs) zostaje zebranych razem i musisz kliknąć mały symbol ->, aby zobaczyć znaczące szczegóły.

Łatwo rozbawiony Steven
źródło
0

Skrypt ten faktycznie nie działa! po prostu nie zgodnie z oczekiwaniami…

  1. postępowałem zgodnie ze wskazówkami, ale dostałem błąd: coś o niemożności obsługi TYTUŁÓW jako łańcucha (?). zajęło to około 2-3 minut.
  2. pierwsze podejrzenia:
    • kiedy kopiowałem i wklejałem kod do Script Editor, następujące wiersze zostały „zinterpretowane”, tj. \ n pojawił się jako podział wiersza [dosłowny / wizualny], podobnie jak \ t pojawił się jako tabulator [dosłowny / wizualny]
      • ustaw myOutput na myOutput & „\ n”
      • jeśli jest gotowy, ustaw myOutput na myOutput & val & "\ t"
    • przecinki oddzielające „Tytuły uwzględnione w zamówieniu” wskazujące na wielokrotne zakupy w ciągu jednego dnia
    • myliłem się… myślę… nie wiem.
  3. na skowrzu, przeskoczyłem do OSTATNIEJ partii (najwyraźniej mój pierwszy zakup z tym kontem miał miejsce w 2004 r., co oznaczało 49 partii) i ponownie uruchomiłem skrypt
    • wynik: skrypt działał dłużej niż oczekiwano, więc przyjąłem błąd i zatrzymałem proces po około 10 minutach… ALE wygenerowano plik * .txt [w moim folderze Dokumenty]. ten plik pokazał dane dla
      • OSTATNIA partia [która była wyświetlana w iTunes, kiedy zaczynałem skrypt] TO
      • PIERWSZA partia [CZĘŚĆ 1, pokazująca moje ostatnie zakupy]
      • kiedy poszedłem do iTunes, zauważyłem, że wyświetlono BATCH 2
    • wniosek: polecenie przycisku NASTĘPNY (przycisk „Dalej” webArea) działało. COŚ SIĘ STAŁO !!! (… A moja teoria o przecinkach została zmniejszona)
  4. aby uzyskać potrzebne informacje (partie 1-13 z 49), wykonałem następujące czynności:
    • skoczył do OSTATNIEJ partii (tutaj 49. partii)
    • uruchomiłem skrypt
    • monitorowałem iTunes i obserwowałem, jak wyświetlanie partii zmienia się automatycznie, dopóki nie wyświetli się WERSJA 14
    • zatrzymałem skrypt i sprawdziłem plik * .txt w moim folderze Dokumenty
    • LO! plik * .txt pokazuje moje zakupy od [mojej ostatniej] partii 49 do partii 13!
  5. jeszcze nie zrobione! chciałem powtórzyć błąd początkowy, aby zapisać dokładny błąd i sprawdzić, czy moje początkowe podejrzenia mają sens. NIE! zacząłem od początku, a TO:
    • skrypt działał zgodnie z oczekiwaniami
    • jedynym błędem (do tej pory, ponieważ wciąż uruchamiam skrypt) był limit czasu utraconego połączenia na BATCH 21

obecnie skrypt działa na BATCH 32…

WYCZUCIE CZASU:

  • na podstawie daty utworzenia wygenerowanego pliku * .txt i czasów modyfikacji (które również monitoruję), wygląda na to, że każda partia zajmuje około 3 minut na przetworzenie i aktualizację wspomnianego pliku * .txt.
  • jak dotąd, dla moich 49 partii (nie uwzględniono przekroczenia limitu czasu połączenia) zajęło to…
    • SERIE 1-21 = @ 45 minut
    • SERIE 21–49 (w toku: aktualna ZAPISANA partia = 34) = @ 30 minut

wiem… TMI! TMI!
ale mam nadzieję, że to pomoże!



EDYTOWAĆ:

  1. ODPOWIEDŹ: # 5 powyżej… „jedynym błędem (jak dotąd, ponieważ wciąż uruchamiam skrypt) było przekroczenie limitu czasu utraty połączenia na BATCH 21”
    • ponownie uruchomiłem skrypt, zaczynając od BATCH 21 (gdzie nastąpił limit czasu utraconego połączenia)
    • spodziewałem się, że skończy się w CZĘŚCI 1… NOPE! kontynuował, nieprzerwanie, aż zaokrąglił się i nagrał do BATCH 20 (po zakończeniu wyświetli BATCH 21 w iTunes)

WNIOSEK: skrypt będzie działał od BATCH [n] do BATCH [n-1] (pod warunkiem, że nie ma żadnych limitów czasu / przerw)

Dorsey Krofft1
źródło
Przez ten skrypt faktycznie działa , czy masz na myśli ten oferowany przez jjpr w odpowiedzi ? Niezależnie od tego dobrze byłoby, gdybyś mógł to wyjaśnić, aby inni czytelnicy wiedzieli, o czym mówisz, i nie musieli zgadywać.
Monomeeth