Nettoyer la base de donnée de Gwibber
Gwibber est un client pour réseaux sociaux (StatusNet, Twitter & co) assez sympa. Seulement, il a un problème : sa base de donnée à tendance à augmenter au fur et à mesure du temps. Aujourd'hui le fichier ~/.config/gwibber/gwibber.sqlite
faisait 132MB chez moi, c'est beaucoup pour gérer juste un flux Twitter et un StatusNet.
En fouillant un peu le code, j'ai trouvé la fonction de maintenance qui sert à supprimer les 2000 plus vieux status au démarrage. Seulement, les status ne sont pas la seule chose qui sont stockées dans la base de donnée, il y a aussi les liens, une crasse qui augmente vite. La preuve :
Ouch 40000 liens stockés, pas étonnant que ça monte. J'avais ouvert un bug report à ce sujet là il y a plus de deux mois mais je n'ai eu aucune réponse. Tant pis, on est jamais mieux servi que par soit même de toute façon. On peut donc supprimer les plus vieux en modifiant un peu la commande (triviale) de la fonction de maintenance pour obtenir:
DELETE FROM messages WHERE operation = 'receive' AND stream = 'links' AND time IN (SELECT CAST (time AS int) FROM (SELECT time FROM messages WHERE operation = 'receive' AND stream = 'links' AND time != 0 ORDER BY time ASC LIMIT (SELECT COUNT(time) FROM messages WHERE operation = 'receive' AND stream = 'links' AND time != 0) - 2000) ORDER BY time ASC);
Après avoir lancé cette commande dans le shell sqlite, on purge le tout et tadaaaaam
41MB, pas mal le nettoyage. On peut même faire mieux en supprimant les autres types de status qui prennent un peu trop de place. Testez chez vous pour voir ce qui encombre le plus.
Hmmm un peu trop d'images chez moi, ne gardons que les 1000 dernières.
Vous pouvez facilement jouer un peu avec la base de donnée en changeant les paramètres mais prudence. Je n'ai pas inspecté en long et en large la structure et cette façon de faire n'est peut être pas la plus propre (si vous avez beaucoup de lien par message, vous risquez d'en effacer trop par exemple). Mais bon, je n'avais pas envie de passer 2h là dessus et en sachant que je ne retourne rarement plus loin que les 100 derniers status, je ne prend pas trop de risque en nettoyant dans les 2000 derniers. À vous de voir... Vous pouvez aussi mettre les commandes dans un cron pour automatiser tout ça pour garder la base de donnée à une taille raisonnable.