Buku en action !
buku
est un puissant gestionnaire de favoris et un mini-web textuel personnel.
Pour ceux qui préfèrent l'interface graphique, bukuserver
expose un frontal consultable sur un serveur d'hébergement Web local. Voir la page bukuserver pour la configuration et les captures d'écran.
Lorsque j'ai commencé à l'écrire, je ne trouvais pas de solution de ligne de commande flexible avec une base de données privée, portable et fusionnable ainsi qu'une intégration transparente de l'interface graphique. Par conséquent, buku
.
buku
peut importer des signets à partir d'un ou plusieurs navigateurs ou récupérer le titre, les balises et la description d'une URL sur le Web. Utilisez votre éditeur préféré pour ajouter, composer et mettre à jour des signets. Recherchez instantanément des signets avec plusieurs options de recherche, notamment regex et un mode d'analyse approfondie (pratique avec les URL).
Il peut rechercher des liens rompus sur la Wayback Machine. Il y a un œuf de Pâques pour revisiter des signets aléatoires.
Il n'y a pas de suivi, d'historique caché, d'enregistrements obsolètes, d'analyse d'utilisation ou de référencement.
Pour commencer immédiatement, accédez à la section Démarrage rapide. buku
possède l’une des meilleures documentations du marché. La page de manuel contient des exemples. Pour les détails internes, veuillez vous référer aux notes opérationnelles.
buku
c'est aussi une bibliothèque ! Il existe plusieurs projets connexes, dont un plug-in de navigateur.
Fonctionnalité | Dépendance |
---|---|
Lang, SQLite | Python3.8+ |
HTTPS | certificat, urllib3 |
Cryptage | cryptographie |
HTML | bellesoup4, html5lib |
Pour copier l'URL dans le presse-papiers, buku
utilise xsel
(ou xclip
) sous Linux, pbcopy
(installé par défaut) sur OS X, clip
(installé par défaut) sous Windows, termux-clipboard
sur Termux (émulation de terminal pour Android), wl-copy
sur Wayland. Si X11 est manquant, les tampons copier-coller GNU Screen ou tmux sont reconnus.
Pour installer buku avec toutes ses dépendances depuis PyPI, exécutez :
# pip3 install buku
Vous pouvez également installer buku
depuis votre gestionnaire de paquets. Si la version disponible est datée, essayez une autre méthode d'installation.
● PyPI ( pip3 install buku
)
● Termux ( pip3 install buku
)
Les packages générés automatiquement (avec uniquement le composant cli) pour Arch Linux, CentOS, Debian, Fedora, openSUSE Leap et Ubuntu sont disponibles avec la dernière version stable.
REMARQUE : CentOS peut ne pas avoir le package python3-beautifulsoup4 dans les dépôts. Installez-le en utilisant pip3.
Si git est installé, clonez ce référentiel. Sinon, téléchargez la dernière version stable ou version de développement ( risquée ).
Installez les dépendances. Par exemple, sur Ubuntu :
$ apt-get install ca-certificates python3-urllib3 python3-cryptography python3-bs4
Installez le composant cli à l'emplacement par défaut ( /usr/local
) :
$ sudo make install
Pour supprimer, exécutez :
$ sudo make uninstall
PREFIX
est pris en charge, au cas où vous souhaiteriez installer à un emplacement différent.
buku
est un utilitaire autonome. Depuis le répertoire contenant, exécutez :
$ chmod +x buku
$ ./buku
Les scripts de complétion Shell pour Bash, Fish et Zsh peuvent être trouvés dans les sous-répertoires respectifs d'auto-complétion/. Veuillez vous référer au manuel de votre shell pour les instructions d'installation.
usage: buku [OPTIONS] [KEYWORD [KEYWORD ...]]
Bookmark manager like a text-based mini-web.
POSITIONAL ARGUMENTS:
KEYWORD search keywords
GENERAL OPTIONS:
-a, --add URL [+|-] [tag, ...]
bookmark URL with comma-separated tags
(prepend tags with '+' or '-' to use fetched tags)
-u, --update [...] update fields of an existing bookmark
accepts indices and ranges
refresh title and desc if no edit options
if no arguments:
- update results when used with search
- otherwise refresh all titles and desc
-w, --write [editor|index]
edit and add a new bookmark in editor
else, edit bookmark at index in EDITOR
edit last bookmark, if index=-1
if no args, edit new bookmark in EDITOR
-d, --delete [...] remove bookmarks from DB
accepts indices or a single range
if no arguments:
- delete results when used with search
- otherwise delete all bookmarks
-h, --help show this information and exit
-v, --version show the program version and exit
EDIT OPTIONS:
--url keyword bookmark link
--tag [+|-] [...] comma-separated tags
clear bookmark tagset, if no arguments
'+' appends to, '-' removes from tagset
--title [...] bookmark title; if no arguments:
-a: do not set title, -u: clear title
-c, --comment [...] notes or description of the bookmark
clears description, if no arguments
--immutable N disable web-fetch during auto-refresh
N=0: mutable (default), N=1: immutable
--swap N M swap two records at specified indices
SEARCH OPTIONS:
-s, --sany [...] find records with ANY matching keyword
this is the default search option
-S, --sall [...] find records matching ALL the keywords
special keywords -
"blank": entries with empty title/tag
"immutable": entries with locked title
--deep match substrings ('pen' matches 'opens')
--markers search for keywords in specific fields
based on (optional) prefix markers:
'.' - title, '>' - description, ':' - URL,
'#' - tags (comma-separated, PARTIAL matches)
'#,' - tags (comma-separated, EXACT matches)
'*' - any field (same as no prefix)
-r, --sreg expr run a regex search
-t, --stag [tag [,|+] ...] [- tag, ...]
search bookmarks by tags
use ',' to find entries matching ANY tag
use '+' to find entries matching ALL tags
excludes entries with tags after ' - '
list all tags, if no search keywords
-x, --exclude [...] omit records matching specified keywords
--random [N] output random bookmarks out of the selection (default 1)
--order fields [...] comma-separated list of fields to order the output by
(prepend with '+'/'-' to choose sort direction)
ENCRYPTION OPTIONS:
-l, --lock [N] encrypt DB in N (default 8) # iterations
-k, --unlock [N] decrypt DB in N (default 8) # iterations
POWER TOYS:
--ai auto-import bookmarks from web browsers
Firefox, Chrome, Chromium, Vivaldi, Edge
-e, --export file export bookmarks to Firefox format HTML
export XBEL, if file ends with '.xbel'
export Markdown, if file ends with '.md'
format: [title](url) <!-- TAGS -->
export Orgfile, if file ends with '.org'
format: *[[url][title]] :tags:
export rss feed if file ends with '.rss'
export buku DB, if file ends with '.db'
combines with search results, if opted
-i, --import file import bookmarks from file
supports .html .xbel .json .md .org .rss .db
-p, --print [...] show record details by indices, ranges
print all bookmarks, if no arguments
-n shows the last n results (like tail)
-f, --format N limit fields in -p or JSON search output
N=1: URL; N=2: URL, tag; N=3: title;
N=4: URL, title, tag; N=5: title, tag;
N0 (10, 20, 30, 40, 50) omits DB index
-j, --json [file] JSON formatted output for -p and search.
prints to stdout if argument missing.
otherwise writes to given file
--colors COLORS set output colors in five-letter string
--nc disable color output
-n, --count N show N results per page (default 10)
--np do not show the subprompt, run and exit
-o, --open [...] browse bookmarks by indices and ranges
open a random bookmark, if no arguments
--oa browse all search results immediately
--replace old new replace old tag with new tag everywhere
delete old tag, if new tag not specified
--url-redirect when fetching an URL, use the resulting
URL from following *permanent* redirects
(when combined with --export, the old URL
is included as additional metadata)
--tag-redirect [tag] when fetching an URL that causes permanent
redirect, add a tag in specified pattern
(using 'http:{}' if not specified)
--tag-error [tag] when fetching an URL that causes an HTTP
error, add a tag in specified pattern
(using 'http:{}' if not specified)
--del-error [...] when fetching an URL causes any (given)
HTTP error, delete/do not add it
--export-on [...] export records affected by the above
options, including removed info
(requires --update and --export; specific
HTTP response filter can be provided)
--shorten index|URL fetch shortened url from tny.im service
--expand index|URL expand a tny.im shortened url
--cached index|URL browse a cached page from Wayback Machine
--offline add a bookmark without connecting to web
--suggest show similar tags when adding bookmarks
--tacit reduce verbosity, skip some confirmations
--nostdin do not wait for input (must be first arg)
--threads N max network connections in full refresh
default N=4, min N=1, max N=10
-V check latest upstream version available
-g, --debug show debug information and verbose logs
SYMBOLS:
> url
+ comment
# tags
PROMPT KEYS:
1-N browse search result indices and/or ranges
R [N] print out N random search results
(or random bookmarks if negative or N/A)
^ id1 id2 swap two records at specified indices
O [id|range [...]] open search results/indices in GUI browser
toggle try GUI browser if no arguments
a open all results in browser
s keyword [...] search for records with ANY keyword
S keyword [...] search for records with ALL keywords
d match substrings ('pen' matches 'opened')
m search with markers - search string is split
into keywords by prefix markers, which determine
what field the keywords is searched in:
'.', '>' or ':' - title, description or URL
'#'/'#,' - tags (comma-separated, partial/full match)
'*' - all fields (can be omitted in the 1st keyword)
note: tag marker is not affected by 'd' (deep search)
v fields change sorting order (default is '+index')
multiple comma/space separated fields can be specified
r expression run a regex search
t [tag, ...] search by tags; show taglist, if no args
g taglist id|range [...] [>>|>|<<] [record id|range ...]
append, set, remove (all or specific) tags
search by taglist id(s) if records are omitted
n show next page of search results
o id|range [...] browse bookmarks by indices and/or ranges
p id|range [...] print bookmarks by indices and/or ranges
w [editor|id] edit and add or update a bookmark
c id copy URL at search result index to clipboard
? show this help
q, ^D, double Enter exit buku
buku
prend en charge les couleurs personnalisées. Visitez la page wiki sur la façon de personnaliser les couleurs pour plus de détails.
Exportez VISUAL
ou EDITOR
pour pointer vers votre éditeur préféré. Notez que VISUAL
est prioritaire sur EDITOR
.
Créez un raccourci plus agréable et plus pratique.
alias b='buku --suggest'
Importez automatiquement les favoris depuis votre (vos) navigateur(s). Veuillez quitter les navigateurs concernés au préalable pour vous assurer que les bases de données ne sont pas verrouillées.
b --ai
Ajoutez manuellement un signet (pour la pratique).
b -w
Répertoriez vos favoris avec l'index DB.
b -p
Pour l'intégration de l'interface graphique et du navigateur (ou pour synchroniser les favoris avec votre service de gestion de favoris préféré), reportez-vous à la page wiki sur l'intégration du système.
Commandes rapides (bash/zsh) pour effectuer une recherche floue avec fzf et ouvrir la sélection dans Firefox :
firefox $(buku -p -f 10 | fzf)
firefox $(buku -p -f 40 | fzf | cut -f1)
Script POSIX pour afficher également un aperçu du signet :
#! /usr/bin/env sh
url= $( buku -p -f4 | fzf -m --reverse --preview " buku -p {1} " --preview-window=wrap | cut -f2 )
if [ -n " $url " ] ; then
echo " $url " | xargs firefox
fi
Modifiez et ajoutez un signet depuis l'éditeur :
$ buku -w
$ buku -w 'gedit -w'
$ buku -w 'macvim -f' -a https://ddg.gg search engine, privacy
La première commande sélectionne l'éditeur à partir de la variable d'environnement EDITOR
. La deuxième commande ouvre gedit en mode blocage. La troisième commande ouvre macvim avec l'option -f et l'URL et les balises renseignées dans le modèle.
Ajoutez un simple signet :
$ buku --nostdin -a https://github.com/
2648. GitHub: Let’s build from here · GitHub
> https://github.com/
+ GitHub is where over 94 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs
and features, power your CI/CD and DevOps workflows, and secure code before you commit it.
$ buku --nostdin -a https://github.com/
[ERROR] URL [https://github.com/] already exists at index 2648
>
: URL, +
: commentaire, #
: balises
Le titre, la description et les balises seront récupérés sur le site. Buku ne stocke que les URL uniques et générera une erreur si l'URL est déjà présente dans la base de données :
Ajoutez un signet avec des balises search engine
et privacy
, commentez Search engine with perks
, récupérez le titre de la page sur le Web :
$ buku -a https://ddg.gg search engine, privacy -c Search engine with perks
336. DuckDuckGo
> https://ddg.gg
+ Alternative search engine with perks
# privacy,search engine
où, >
: URL, +
: commentaire, #
: balises
Ajoutez un marque-page avec les balises search engine
& privacy
et le titre personnalisé immuable DDG
:
$ buku -a https://ddg.gg search engine, privacy --title 'DDG' --immutable 1
336. DDG (L)
> https://ddg.gg
# privacy,search engine
Notez que l'URL doit précéder les balises.
Ajouter un signet sans titre (fonctionne également pour la mise à jour) :
$ buku -a https://ddg.gg search engine, privacy --title
Modifier et mettre à jour un favori depuis l'éditeur :
$ buku -w 15012014
Cela ouvrira les détails du signet existant dans l'éditeur pour modifications. La variable d'environnement EDITOR
doit être définie.
Mettez à jour le signet existant à l'index 15012014 avec une nouvelle URL, des balises et des commentaires, récupérez le titre sur le Web :
$ buku -u 15012014 --url http://ddg.gg/ --tag web search, utilities -c Private search engine
Récupérer et mettre à jour uniquement le titre du signet à 15012014 :
$ buku -u 15012014
Mettre à jour uniquement le commentaire pour le signet à 15012014 :
$ buku -u 15012014 -c this is a new comment
S'applique également à --url, --title et --tag.
Exportez les signets balisés tag 1
ou tag 2
vers HTML, XBEL, Markdown, Orgfile ou une nouvelle base de données :
$ buku -e bookmarks.html --balise cerf 1, balise 2 $ buku -e bookmarks.xbel --balise cerf 1, balise 2 $ buku -e bookmarks.md --balise cerf 1, balise 2 $ buku -e signets .org --stag tag 1, tag 2 $ buku -e bookmarks.db --stag tag 1, tag 2 Tous les signets sont exportés lors de la recherche n’est pas opté.
Importez des signets depuis HTML, XBEL, Markdown ou Orgfile :
$ buku -i bookmarks.html
$ buku -i bookmarks.xbel
$ buku -i bookmarks.md
$ buku -i bookmarks.org
$ buku -i bookmarks.db
Supprimer uniquement le commentaire du signet à 15012014 :
$ buku -u 15012014 -c
S'applique également à --title et --tag. L'URL ne peut pas être supprimée sans supprimer le signet.
Mettez à jour ou actualisez la base de données complète avec les titres des pages du Web :
$ buku -u
$ buku -u --tacit (show only failures and exceptions)
Cette opération peut mettre à jour les champs de titre ou de description des signets non immuables en analysant la page récupérée. Les champs sont mis à jour uniquement si les champs récupérés ne sont pas vides. Les balises restent intactes.
Supprimer le signet à l'index 15012014 :
$ buku -d 15012014
Index 15012020 moved to 15012014
Le dernier index est déplacé vers l'index supprimé pour conserver la base de données compacte. Ajoutez --tacit
pour supprimer sans confirmation.
Supprimez tous les favoris :
$ buku -d
Supprimer une plage ou une liste de favoris :
$ buku -d 100-200
$ buku -d 100 15 200
Recherchez dans les favoris TOUS les mots-clés kernel
et debugging
dans l'URL, le titre ou les balises :
$ buku kernel debugging
$ buku -s kernel debugging
Recherchez des favoris avec TOUS les mots-clés kernel
et debugging
dans l'URL, le titre ou les balises :
$ buku -S kernel debugging
Rechercher des favoris étiquetés sur general kernel concepts
:
$ buku --stag general kernel concepts
Recherchez des signets correspondant à N'IMPORTE QUELLE balise kernel
, debugging
, general kernel concepts
:
$ buku --stag kernel, debugging, general kernel concepts
Recherchez les signets correspondant à TOUTES les balises kernel
, debugging
, general kernel concepts
:
$ buku --stag kernel + debugging + general kernel concepts
Recherchez des signets correspondant à l'un des mots-clés hello
ou world
, à l'exclusion des mots-clés real
et life
, correspondant à la fois aux balises kernel
et debugging
, mais à l'exclusion des balises general kernel concepts
et books
du noyau :
$ buku hello world --exclude real life --stag 'kernel + debugging - general kernel concepts, books'
Recherchez des signets avec des jetons différents pour chaque champ et imprimez-les triés par balises (ascendantes) et URL (décroissantes).
$ buku --order +tags,-url --markers --sall 'global substring' '.title substring' ':url substring' :https '> description substring' '#partial,tags:' '#,exact,tags' '*another global substring'
Répertoriez toutes les balises uniques par ordre alphabétique :
$ buku --stag
Lancez une recherche et mettez à jour les résultats :
$ buku -s kernel debugging -u --tag + linux kernel
Lancez une recherche et supprimez les résultats :
$ buku -s kernel debugging -d
Cryptez ou déchiffrez la base de données avec un nombre d'itérations personnalisé (15) pour générer la clé :
$ buku -l 15
$ buku -k 15
Le même nombre d'itérations doit être spécifié pour une instance de verrouillage et de déverrouillage. La valeur par défaut est 8, si elle est omise.
Afficher les détails des signets à l'index 15012014 et aux plages 20-30, 40-50 :
$ buku -p 20-30 15012014 40-50
Afficher les détails des 10 derniers favoris :
$ buku -p -10
Afficher tous les signets avec un index réel de la base de données :
$ buku -p
$ buku -p | more
Remplacez la balise « ancienne balise » par « nouvelle balise » :
$ buku --replace 'old tag' 'new tag'
Supprimer la balise « ancienne balise » de la base de données :
$ buku --replace 'old tag'
Ajouter (ou supprimer) les balises « tag 1 », « tag 2 » aux (ou depuis) les balises existantes du signet à l'index 15012014 :
$ buku -u 15012014 --tag + tag 1, tag 2
$ buku -u 15012014 --tag - tag 1, tag 2
Ouvrir l'URL à l'index 15012014 dans le navigateur :
$ buku -o 15012014
Répertoriez les signets sans titre ni balise pour la comptabilité :
$ buku -S blank
Liste des favoris avec un titre immuable :
$ buku -S immutable
Raccourcissez l'URL www.google.com et l'URL à l'index 20 :
$ buku --shorten www.google.com
$ buku --shorten 20
Ajouter, supprimer des balises à l'invite (index de la liste de balises à gauche, index des signets à droite) :
// append tags at taglist indices 4 and 6-9 to existing tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 >> 5 3-2
// set tags at taglist indices 4 and 6-9 as tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 > 5 3-2
// remove all tags from bookmarks at indices 5 and 2-3
buku (? for help) g > 5 3-2
// remove tags at taglist indices 4 and 6-9 from tags in bookmarks at indices 5 and 2-3
buku (? for help) g 4 9-6 << 5 3-2
Liste des signets avec sortie colorée :
$ buku --colors oKlxm -p
Ajoutez un signet après avoir suivi toutes les redirections permanentes, mais seulement si le serveur ne répond pas avec une erreur (et qu'il n'y a pas de panne de réseau)
$ buku --add http://wikipedia.net --url-redirect --del-error
2. Wikipedia
> https://www.wikipedia.org/
+ Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation.
Ajoutez un signet avec la balise http redirect
si le serveur répond par une redirection permanente, ou une balise en forme de http 404
sur une réponse d'erreur :
$ buku --add http://wikipedia.net/notfound --tag-redirect 'http redirect' --tag-error 'http {}'
[ERROR] [404] Not Found
3. Not Found
> http://wikipedia.net/notfound
# http 404,http redirect
Mettez à jour tous les favoris correspondant à la recherche en mettant à jour l'URL si le serveur répond par une redirection permanente, en supprimant le favori si le serveur répond avec l'erreur HTTP 400, 401, 402, 403, 404 ou 500, ou en ajoutant une balise en forme de http:{}
en cas de toute autre erreur HTTP ; exportez ensuite les personnes concernées par ces modifications dans un fichier HTML, en marquant les enregistrements supprimés ainsi que les anciennes URL pour ceux remplacés par la redirection.
$ buku -S ://wikipedia.net -u --url-redirect --tag-error --del-error 400-404,500 --export-on --export backup.html
Imprimez un seul signet aléatoire :
$ buku --random --print
Imprimez 3 signets aléatoires classés par titre (inversé) et URL :
$ buku --random 3 --order ,-title,+url --print
Imprimez un seul signet aléatoire correspondant aux critères de recherche et exportez -le dans un fichier Markdown (dans l'ordre DB) :
$ buku --random -S kernel debugging --export random.md
Échangez les positions des enregistrements n°4 et n°5 :
$ buku --swap 4 5
Plus d'aide :
$ buku -h
$ man buku
Les flux de travail interactifs peuvent être automatisés à l'aide d'expect. Le numéro 368 contient un exemple fonctionnel sur l'automatisation de l'importation automatique.
Vous pouvez rencontrer des problèmes avec les éditeurs d'interface graphique qui ne conservent qu'une seule instance par défaut et reviennent immédiatement des autres instances. Utilisez l'option d'éditeur appropriée pour bloquer l'appelant lorsqu'un nouveau document est ouvert. Voir le numéro 210 pour gedit.
Copyright © 2015-2024 Arun Prakash Jana
Il manque une fonctionnalité ? Il existe une liste de tâches glissante avec des tâches identifiées. Les contributions sont les bienvenues ! Veuillez suivre les directives des relations publiques.
Voir aussi notre documentation ici