Trakt: backup del tuo archivio dati, via Python / Bash

| |

Se ti sei perso tutto il calvario dovuto alla corruzione del database di Trakt durante una manutenzione programmata ti consiglio di dare un’occhiata alla discussione generatasi dai tweet dell’account ufficiale. Diversamente puoi digerire più facilmente questo sunto pubblicato disponibile nella pagina principale del servizio per gli utenti connessi:

On December 11 at 7:30 pm PST our main database crashed and corrupted some of the data. We’re deeply sorry for the extended downtime and we’ll do better moving forward. Updates to our automated backups are already in place and they will be tested on an ongoing basis.

  • Data prior to November 7 is fully restored.
  • Watched history between November 7 and December 11 has been recovered. There is a separate message on your dashboard allowing you to review and import any recovered data.
  • All other data (besides watched history) after November 7 has already been restored and imported.
  • Some data might be permanently lost due to data corruption.
  • Trakt API is back online as of December 20.
  • Active VIP members will get 2 free months added to their expiration date.

Cavalcando un po’ l’onda di quanto accaduto, gli sviluppatori della piattaforma hanno recentemente introdotto il backup automatico dei dati utente di Trakt dedicato ai suoi utilizzatori, il quale esula dal backup che viene già effettuato e che riguarda il database dell’intero servizio. È più un “vuoi andare ancora più sul tranquillo? Ok, programma il tuo backup personale e depositalo su Google Drive o Dropbox!“. Ne hanno dato notizia tramite Twitter e un articolo dedicato sul blog.

Backup a pagamento, l’alternativa gratuita

Il problema è che questo servizio è dedicato esclusivamente agli utenti paganti, non a quelli che sfruttano gratuitamente il servizio. Questo articolo vuole spiegarti come aggirare l’ostacolo utilizzando Python (ti propongo poi un’alternativa via Bash Linux) e programmando il processo per eseguire il backup a intervalli regolari. In futuro (non troppo in là) vorrei poter studiare qualcosa che vada a integrarsi con GitHub Action se non hai a disposizione una macchina in grado di far girare lo script Python a cadenza programmata, magari caricando i file di output sul repository stesso oppure su Dropbox / Google Drive.

Genera le tue chiavi API

È la prima cosa da fare, senza la quale non puoi certamente mettere in piedi nulla di automatizzato. Collegati a Trakt, autenticati e poi punta il browser all’indirizzo trakt.tv/oauth/applications. Fai clic su New application e compila i campi obbligatori (Nome, Descrizione e URI di reindirizzamento), poi fai clic su Save app in fondo alla pagina.

Trakt: backup del tuo archivio storico 1

Ti verrà così proposta una pagina riepilogativa contenente due dettagli fondamentali: Client ID e Client Secret. Custodisci questi dati al sicuro e non fornirli a nessuno. Il primo dei due ti servirà per far funzionare lo script di backup.

Lo script di backup

Esiste già, si trova su GitHub e basta poco per farlo funzionare. Parlo di Trakt Backup di iacoviola. Una volta installato il necessario (pip install -r requirements.txt) ti basterà andare a modificare il file trakt_request.py e inserire il Client ID – precedentemente ottenuto – in riga 111, lì dove trovi 'trakt-api-key': '', te lo mostro nello screenshot qui di seguito (che magari un domani la riga 111 potrebbe fare riferimento ad altro dato, non si sa mai!):

Trakt: backup del tuo archivio storico 2

Salva il file modificato, non serve fare null’altro, sei pronto a lanciarlo :-)
Da prompt ti basterà ora eseguire lo script di backup (e non quello di request, occhio!) e rispondere alle domande poste:

root@117:/Scripts/Trakt/trakt_backup# python3 trakt_backup.py
Save files here (shell current working directory) ? [Y/n]
(files will otherwise be saved in /root): y
Files will be saved in: /Scripts/Trakt/trakt_backup/trakt_backup
Enter your Trakt username: gioxx

In cosa consistono le risposte fornite? Semplice. Ho chiesto allo script di creare la cartella di backup all’interno di quella dello script e gli ho indicato il mio username sulla piattaforma. Avrei potuto lanciare lo script fornendo la risposta e lo username già da riga di comando (quindi python3 trakt_backup.py -Y gioxx) per far prima, utile saperlo per quando si programma l’esecuzione automatica dello script:

root@117:/Scripts/Trakt/trakt_backup# python3 trakt_backup.py -Y gioxx
Files will be saved in: /Scripts/Trakt/trakt_backup/trakt_backup
Unsupported or no file type specified, defaulting to json

L’operazione andrà avanti e scaricherà tutti i dettagli personali del mio account fino a quando non arriverà il momento di eseguire il file di risultato, cosa che fallisce sulla mia virtuale DietPi senza però impattare in alcun modo il corretto backup:

Trakt: backup del tuo archivio storico 3

A voler evitare l’errore si potrebbe tranquillamente commentare la riga 94 dello script (launch_file(new_backup_folder_name)). Tutto il necessario si troverà ora nella cartella “trakt_backup” all’interno della quale verranno create tante sottocartelle per quanti backup verranno lanciati, nominando le cartelle con data e ora corrente:

Trakt: backup del tuo archivio storico 5

I file JSON sono perfettamente compatibili con Trakt e possono essere facilmente conservati e reimportati sulla piattaforma in caso di emergenza. In generale sono di “facile manipolazione” (per chi è abituato a lavorare con) e quindi lavorazione per trasferirsi altrove.

E l’alternativa Bash?

Hai ragione, eccola: github.com/mstarzinger/trakt-backup. Anche questa è abbastanza semplice da utilizzare perché ben documentata su GitHub, e puoi sempre programmare un’operazione che a cadenza regolare vada a scaricare i dati sempre aggiornati dai server di Trakt. Nulla che un crontab non possa facilmente permetterti.

Va da sé che sulla macchina Linux che si occupa di effettuare il backup puoi sempre pensare di usare Rclone per copiare quei file su Dropbox, Google Drive e una serie di altri Cloud Drive che mira all’imbarazzo per la scelta. Se ci sono dubbi ricorda che l’area commenti è a tua totale disposizione, anche per confrontarci su ulteriori possibili soluzioni :-)

#StaySafe

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments