Sauvegarder son Twitter

Coucou l’internet 🙂

L’actu autour de Twitter est plutĂŽt chargĂ©e, et il y a 2 Ă©vĂšnements notables: la fermeture progressive de l’API 1.0 a Ă©tĂ© amorcĂ©e, et la rĂ©cupĂ©ration d’archive a Ă©tĂ© Ă©tendu aux langues autre que l’anglais.

Twitter devient un hikikomori [?]

Petit Ă©tat des lieux: Twitter est le plus utilisĂ© des systĂšmes de microblogging. TrĂšs ouvert au dĂ©part, Twitter se renferme progressivement autant sur le plan esthĂ©tique (le nom des applications n’est plus affichĂ© sous les tweets, sur le site) que technique (les flux RSS ne sont plus accessibles publiquement). Twitter impose de passer par sa plateforme technique, en utilisant leurs API, pour accĂ©der aux donnĂ©es. Ainsi il est par exemple encore possible d’afficher le flux RSS de mon compte via cette URL:

 

Et c’est sous cette forme (l’API 1.0) que le Projet Autoblog permet(-tait) de sauvegarder les comptes Twitter. Las ! C’est trop ouvert au goĂ»t de Twitter, qui aime pas que les gens puissent garder leurs tweets ailleurs que sur Twitter. C’est pas dans l’intĂ©rĂȘt de Twitter de laisser les utilisateurs gambader sur de plus vertes prairies. L’API 1.1 introduit une obligation d’authentification OAuth ne serait-ce que pour avoir la timeline d’un utilisateur, et OAuth c’est tout simplement immonde: je veux juste AVOIR LA TIMELINE, pourquoi doit-on faire des requĂȘtes cURL signĂ©es timestampĂ©es avec 4 clĂ©s et tokens d’application ?!

1

2

3

4

Tant et si bien que je me suis pris une petite demi-heure sous Inkscape pour adapter Kitsu Ă  mes Ă©motions d’alors.

dEMpps3

(oui le truc bleu c’est l’oiseau de Twitter, tandis que Kitsu lui ouvre la gorge)

Bref, nouveau dépÎt Github avec exemple pratique:

http://wwz.suumitsu.eu/social/twitterbridge/?u=mitsukarenai

Tant de sang et de sueur, juste parce que je ne veux pas donner à Twitter la mainmise exclusive sur MES TWEETS (avec lesquels ils font déjà du business à leur seul profit, ce qui explique bien cette fermeture progressive) . Bref, mes nouveaux tweets sont sauvegardés, et tout le monde a aussi la possibilité de sauvegarder ses nouveaux tweets. Mais quid des tweets plus anciens ?

L’archive Twitter

Il y a de ça plusieurs mois, Twitter a prĂ©sentĂ© un truc.. inattendu: l’archivage du compte Twitter. D’abord rĂ©servĂ© au langage anglais (fallait passer le paramĂštre de langue du compte Ă  « English » pour voir le bouton apparaitre), c’est maintenant disponible pour les autres langues aussi. ConcrĂštement: vous cliquez sur le bouton, Twitter gĂ©nĂšre une archive de votre compte et vous envoie par mail le lien pour la tĂ©lĂ©charger.

Dans le fichier ZIP vous voyez tout de suite un fichier « tweets.csv »: je m’Ă©tais dĂ©jĂ  un peu amusĂ© dessus, mais l’Ă©chappement de caractĂšres laisse Ă  dĂ©sirer et au final c’est juste bon Ă  ĂȘtre ouvert dans un tableur (et encore). Ils fournissent un attirail HTML-CSS-JS qui vous permet de « naviguer sur un mini-site » vous permettant d’explorer votre archive dans une interface sympa. Mais lĂ  oĂč ça devient intĂ©ressant:

/data/js/tweets/

Des fichiers JSON, un par mois, les donnĂ©es brutes de vos tweets ! VoilĂ  qui est exploitable pour libĂ©rer ses tweets. J’ai ainsi pu formater mes tweets pour en nourrir ma sauvegarde sociale, la voici dotĂ©e de tous mes tweets (reply compris) depuis la crĂ©ation du compte. Puis j’ai abandonnĂ© mon script dans une Zerobin, peut-ĂȘtre que ça a pu servir Ă  d’autres, mais j’en doute. Aujourd’hui je me rattrape.

Passer de JSON en RSS

script sur le wiki

Placer ce script dans /data/js/tweets, et exĂ©cuter (php exec.php). La premiĂšre Ă©tape est dĂ©jĂ  Ă©pique. Correction des donnĂ©es JSON, dĂ©codage en tableaux, itĂ©rations avec mise en forme XML, et enfin Ă©criture du flux complĂ©tĂ© dans des fichiers RSS. Notez que les itĂ©rations prĂ©voient jusqu’Ă  3.7 tweets par seconde durant 1 mois, ce qui me semble ĂȘtre une marge confortable pour ne rien rater. Et puis le correctif apportĂ© tantĂŽt, c’est l’exclusion des rĂ©ponses. AprĂšs exĂ©cution de ce script, on retrouve pour chaque mois un fichier RSS contenant juste l’essentiel (texte, date, lien d’origine). On peut passer Ă  la suite.

Injecter les données RSS dans une base SQLite

script sur le wiki

Placer ce script dans /data/js/tweets, ajouter aussi « autoblog.php« , et exĂ©cuter (php injector.php). Il vous faudra peut-ĂȘtre juste rĂ©crire la ligne 10, vu que j’ai prĂ©vu ça pour une exĂ©cution sur pc local et non sur serveur web (trop gourmand):

exec('php autoblog.php');

devient:

get_headers('http://www.monsite.web/autoblog.php');

LĂ  c’est artisanal au possible: pour chaque fichier RSS, le script crĂ©e un nouveau fichier « vvb.ini » (essentiel pour autoblog), exĂ©cute autoblog, supprime vvb.ini et fait une pause (de 1,000001 secondes, car autoblog ne refraichit pas en dessous de 1 seconde). À chaque fois autoblog.php lit le contenu d’un fichier RSS mensuel, en extrait les donnĂ©es et les insĂšre ensuite dans la base SQLite « articles.db ». Une fois terminĂ©, ce fichier « articles.db » peut ĂȘtre placĂ© dans un autoblog, l’autoblog ayant alors la timeline intĂ©grale du compte qui peut ĂȘtre rĂ©-extraite par la suite, bref tout ça est sauvegardĂ©.

– merci Ă  @Loadriku pour le test du script, du coup il a un autoblog intĂ©gral  ^^

Au passage si vous voulez aussi avoir un autoblog intĂ©gral de votre compte dans ma ferme d’autoblogs, vous pouvez m’envoyer votre « articles.db » complet ou mĂȘme juste un ZIP avec les fichiers RSS dedans ( par contre le nombre de comptes autobloggĂ©s est limitĂ© car je dois autoriser les comptes dans ma twitterbridge). Une dizaine de comptes, pas plus 🙂

Les hĂ©ros du dĂ©veloppement PHP sont invitĂ©s Ă  venir rĂ©flĂ©chir sur un rĂ©seautage simple de twitterbridge, genre pour que la mienne puisse servir de relais pour la timeline de Paul da Silva par exemple (avec redondance) pour que les autres twitterbridges contactent Twitter pour d’autres comptes 🙂

5 pensĂ©es sur “Sauvegarder son Twitter”

    1. Et moins bien: « only the latest 3200 tweets can be retrieved ».

      Surtout que ça passe par l’API de Twitter, alors que dans mon cas seul le propriĂ©taire du compte peut sortir l’archive et traiter ses tweets (tous ses tweets), ce que Twitter ne peut refuser.

      1. Tu as raison 🙂

        En fait, j’aurais dĂ» dire « Plus noob/user friendly » 😉

        Par contre, dans le readme, il donne la mĂ©thode pour tout rĂ©cupĂ©rer : passer par une demande d’archive sur TW, uploader les .js (un par mois) et il peut ensuite les importer.

        Ce que j’ai fait car, pour je ne sais quelle raison, il n’a pas voulu rĂ©cupĂ©rer plus de 200 tweets sur 493.

        Et comme tu dis, il se base sur l’API TW.

        Tu nous sors bientĂŽt une interface comme lui pour l’import ? 😀

  1. Je sais 😉 et en tout cas ta solution est pas mal faite.

    Faut juste trouver un hĂ©bergement qui accepte « php exec » 🙂 mais je suppose qu’en LAMP local ou mĂȘme WMAP ça doit ĂȘtre possible.

Les commentaires sont fermés.