Supprimer automatiquement ses anciens tweets

J'utilise beaucoup twitter, principalement pour suivre l'actualité, et converser avec quelques amis. Mon compte est privé, c'est à dire que mes tweets ne sont pas publiques, car ils n'intéressent potentiellement que mes amis.

Étant quelque peu "parano" vis-à-vis des réseaux sociaux, je n'aime pas laisser trainer des informations derrière moi. C'est pourquoi d'ailleurs je n'utilise plus Facebook et que j'avais à l'époque supprimé un à un tout ce que j'avais posté.

Dans cette optique, je cherchais une méthode pour supprimer automatiquement mes tweets anciens, car de toute façon plus personne ne les lira. Potentiellement, ils ne serviront donc qu'à une utilisation détournée (publicitaires, statistiques, etc...), d'où mon souhait de faire le ménage.

Une solution radicale est de supprimer mon compte, puis de le recréer. Mais ce n'est pas envisageable car il faudrait à chaque fois se ré-abonner à tous les comptes qu'on souhaite suivre. Un autre idée est de le faire à la main, en cliquant un à un sur les messages à supprimer. Or, j'ai presque atteint les 1000 tweets, ce qui peut être assez rébarbatif...

Le but de cet article est donc de vous présenter une manière plus propre de faire le ménage, en utilisant l'API twitter. En fait, je ne vais pas utiliser directement l'API twitter, mais un bibliothèque python pour l'utiliser : python-twitter, que vous pouvez trouver sur le Google Code du projet. Pour l'installer sur MacOS avec Macports, tapez :

$ sudo port install py-twitter

Une remarque importante est que cette bibliothèque fonctionne avec la version 2.4 de python. N'étant pas un grand expert de python, je ne sais pas si c'est possible ni comment utiliser cette bibliothèque avec une version supérieure. Mais pour ce qu'on souhaite faire, je ne sais pas si ça a une grande importance...

Python-twitter est simple d'utilisation, et après une lecture de la documentation, on arrive vite à se connecter à l'API, récupérer ses followers, ou envoyer des tweets. Un exemple simple, ici pour envoyer un tweet :

import twitter

api = twitter.Api(username='Votre_Username', password='azerty') status = api.PostUpdate("Ceci est un test !") print status.text

{filename}../images/envoi_tweet.png

Le résultat est immédiatement visible sur ma timeline :

{filename}../images/resultat_tweet.png

Bon, venons-en maintenant au cœur du problème. Nous allons faire un petit script dont le principe est le suivant :

  • On récupère notre timeline (en fait, ce sont seulement nos 20 derniers tweets)
  • On supprime les 20-x derniers tweets, où x est le nombre des tweets les plus récents que l'on souhaite garder
  • On recommence, jusqu'à ce que tous les tweets soient supprimés.

L'inconvénient est que lors de la mise en place de ce script, on a généralement beaucoup de tweets, et donc il faut exécuter beaucoup de fois cette boucle. Le problème, c'est que twitter n'autorise qu'une fréquence limitée d'accès à son API, à savoir 150 requêtes par heure. Qu'à cela ne tienne on n'exécute la boucle qu'un petit nombre de fois, et un petit cron exécuté régulièrement finira par purger la timeline !

Voici le script que j'ai écrit rapidement :

import twitter

n = 10     # Nombre de tweets a garder dans sa timeline

api = twitter.Api(username='Votre_Username', password='azerty') tl = api.GetUserTimeline(since_id=0) print('Nombre de tweets recuperes : %d' % len(tl)) print ('Supression des %d derniers tweets :' % (len(tl)-n) )

for i in range(n,len(tl)) :     status = tl[i]     print('Status #%d' % status.id)     api.DestroyStatus(status.id)

Et le résultat :

{filename}../images/py_clean_tl.png

Pour mettre en place le cron, on édite le fichier utilisateur :

$ crontab -e

Puis on ajoute la ligne suivante, par exemple pour exécuter le cron toute les 10 minutes :

*/10 * * * * python2.4 /chemin/vers/le/script/clean_timeline.py >> /chemin/vers/le/log/clean.log

A terme, une fois ma timeline vidée, je remettrai le cron une fois par jour, ce qui sera largement suffisant compte tenu de ma fréquence de gazouillage.

Dernières remarques :

  • Le mot de passe est stocké en clair dans le script, ce qui n'est pas super...
  • Le script tel quel ne marche pas si vous souhaitez garder vos 50 derniers tweets par exemple.
  • Les données récupérées par l'API ont par défaut un cache de 60 secondes. Il est donc normal qu'un deuxième appel au script juste après ne fasse rien !

Maintenant, à vous de jouer pour adapter le script, par exemple pour sauvegarder vos tweets avant de les supprimer !

Commentaires

Pour commenter cet article, merci de m'écrire directement par mail : mailto