Récupérer les bookmarks de Firefox en ligne de commande (en jouant avec sqlite)

Depuis que j’utilise l’astuce du Ctrl+l sur Firefox, je me base énormément sur mes bookmarks (marque-pages). L’étape suivante était de pouvoir les récupérer en ligne de commande (pour faire des trucs rigolos avec). Ça tombe bien, ça va me permettre de vous montrer un peu sqlite.

sqlitebrowser

Sur Ubuntu/Debian un apt install sqlitebrowser vous installera sqlitebrowser, à mon sens la meilleure application graphique pour les bases sqlite. Afin de jouer avec la base sqlite Firefox qui nous intéresse, on lancera sqlitebrowser ~/.mozilla/firefox/*.default*/places.sqlite &. Je vous invite ensuite à cliquer sur l’onglet Parcourir les données puis dans Table regarder moz_boomarks et moz_places. Ce sont les deux tables qui vont nous intéresser.

Dans l’onglet Exécuter le SQL :

  • Si vous tapez select url from moz_places; puis appuyez sur le bouton Play (ou F5 ou Ctrl+Entrée), vous allez récupérer la liste des URL de vos bookmarks. Vous venez d’afficher la colonne url de la table moz_places
  • Si vous tapez select title from moz_bookmarks; puis appuyez sur le bouton Play, vous allez récupérer la liste des titres de vos bookmarks. Vous venez d’afficher la colonne title de la table moz_bookmarks
  • Malheureusement la colonne url de la table moz_places vous renvoie beaucoup de résultats. On va utiliser select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;, on sélectionne la colonne url des tables moz_places et moz_bookmarks où (condition where) les valeurs de la colonne id de la table moz_places (moz_places.id) sont égales aux valeurs de la colonne fk de la table moz_bookmarks (moz_bookmarks.fk)
  • Sinon vous pouvez aussi faire select url from moz_places inner join moz_bookmarks on fk=moz_places.id; mais pour les explications, il faudra me payer

Interroger sqlite en ligne de commande

On peut tester nos requêtes SQL, chercher ce qui nous intéresse dans les tables mais comment récupérer les résultats directement depuis la ligne de commande ? On aura besoin de apt install sqlite3 puis echo 'select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite. C’est simple… quand on connaît.

Voici la ligne de commande complète que je vous recommande echo 'select url from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite | grep '^http' > ~/firefox.bookmarks. La seule subtilité est le grep '^http' qui va sélectionner uniquement les lignes commençant par http en effet il est fort probable que vous ne vouliez pas les « place: » et les bookmarklets (comme celui du Jdh).

Moi perso je voulais encore autre chose les url des bookmarks ainsi que leurs titres :

echo 'select moz_places.url,moz_bookmarks.title from moz_places,moz_bookmarks where moz_places.id=moz_bookmarks.fk;' | sqlite3 ~/.mozilla/firefox/*.default*/places.sqlite | grep '^http' > ~/firefox.bookmarks

Fonction ff

ff() {
if [[ "$#" -eq 0 ]]
then
	(firefox >/dev/null 2>&1 &)
elif [[ "$#" -gt 0 ]] 
then
	fzf --bind 'right:accept' --multi --literal --exact --query="$*" --select-1 --exit-0 --print0 <~/firefox.bookmarks | sed -z 's/|.*//' | xargs -0 -I '{}' bash -c '(firefox "{}" >/dev/null 2>&1 &)'
fi
}

Vous devez copier cette fonction par exemple dans votre ~/.bashrc. Vous aurez besoin de fzf (et du man hé hé hé). Si vous tapez ff, ça vous lancera Firefox. J’ai « https://www.journalduhacker.net/newest|jdh » dans mon ~/firefox.bookmarks, si je tape ff jdh ou ff hack, ça me lancera https://www.journalduhacker.net/newest. Si vous tapez ff h (http étant un résultat présent sur chaque ligne) vous afficherez tous les bookmarks et pourrez lancer plusieurs bookmarks simultanément en les sélectionnant avec Tab.

Je ne donne aucune explication de plus : 1/ Devoir de vacances (j’ai été sympa, j’ai viré des paramètres) 2/ Pour apprendre et comprendre, il faut nécessairement mettre les mains dedans, il ne suffit pas de lire, il faut pratiquer, tester, se tromper 3/ Je me suis dit que certains apprécieraient de chercher à comprendre par eux-mêmes, il y a un grand plaisir à découvrir et comprendre par soi-même 4/ L’article sur fzf arrivera un jour mais va être long ha ha ha

Tcho !

Vus : 675
Publié par blog-libre : 133