buku beraksi!
buku
adalah pengelola bookmark yang hebat dan web mini tekstual pribadi.
Bagi mereka yang lebih menyukai GUI, bukuserver
menampilkan front-end yang dapat dijelajahi di server host web lokal. Lihat halaman bukuserver untuk konfigurasi dan tangkapan layar.
Ketika saya mulai menulisnya, saya tidak dapat menemukan solusi baris perintah yang fleksibel dengan database pribadi, portabel, yang dapat digabungkan bersama dengan integrasi GUI yang mulus. Oleh karena itu, buku
.
buku
dapat mengimpor bookmark dari browser atau mengambil judul, tag, dan deskripsi URL dari web. Gunakan editor favorit Anda untuk menambah, menulis, dan memperbarui bookmark. Cari bookmark secara instan dengan beberapa opsi pencarian, termasuk regex dan mode pemindaian mendalam (berguna dengan URL).
Itu dapat mencari tautan yang rusak di Mesin Wayback. Ada Telur Paskah untuk mengunjungi kembali penanda acak.
Tidak ada pelacakan, riwayat tersembunyi, catatan usang, analisis penggunaan, atau homing.
Untuk segera memulai, lompat ke bagian Mulai Cepat. buku
memiliki salah satu dokumentasi terbaik. Halaman manual dilengkapi dengan contoh. Untuk rincian internal, silakan lihat catatan operasional.
buku
juga merupakan perpustakaan! Ada beberapa proyek terkait, termasuk plugin browser.
Fitur | Ketergantungan |
---|---|
Lang, SQLite | Python 3.8+ |
HTTPS | sertifikat, urllib3 |
Enkripsi | kriptografi |
HTML | sup indah4, html5lib |
Untuk menyalin URL ke clipboard buku
menggunakan xsel
(atau xclip
) di Linux, pbcopy
(diinstal secara default) di OS X, clip
(diinstal secara default) di Windows, termux-clipboard
di Termux (emulasi terminal untuk Android), wl-copy
di Wayland. Jika X11 hilang, GNU Screen atau buffer copy-paste tmux akan dikenali.
Untuk menginstal buku dengan semua dependensinya dari PyPI, jalankan:
# pip3 install buku
Anda juga dapat menginstal buku
dari manajer paket Anda. Jika versi yang tersedia sudah ketinggalan zaman, cobalah metode instalasi alternatif.
● PyPI ( pip3 install buku
)
● Termux ( pip3 install buku
)
Paket yang dibuat secara otomatis (hanya dengan komponen cli) untuk Arch Linux, CentOS, Debian, Fedora, openSUSE Leap, dan Ubuntu tersedia dengan rilis stabil terbaru.
CATATAN: CentOS mungkin tidak memiliki paket python3-beautifulsoup4 di repo. Instal menggunakan pip3.
Jika Anda telah menginstal git, kloning repositori ini. Jika tidak, unduh rilis stabil terbaru atau versi pengembangan ( berisiko ).
Instal dependensinya. Misalnya, di Ubuntu:
$ apt-get install ca-certificates python3-urllib3 python3-cryptography python3-bs4
Instal komponen cli ke lokasi default ( /usr/local
):
$ sudo make install
Untuk menghapus, jalankan:
$ sudo make uninstall
PREFIX
didukung, jika Anda ingin menginstal ke lokasi lain.
buku
adalah utilitas mandiri. Dari direktori yang memuatnya, jalankan:
$ chmod +x buku
$ ./buku
Skrip penyelesaian shell untuk Bash, Fish dan Zsh dapat ditemukan di masing-masing subdirektori pelengkapan otomatis/. Silakan merujuk ke manual shell Anda untuk instruksi instalasi.
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
mendukung warna khusus. Kunjungi halaman wiki tentang cara menyesuaikan warna untuk lebih jelasnya.
Ekspor VISUAL
atau EDITOR
untuk menunjuk ke editor favorit Anda. Perhatikan bahwa VISUAL
lebih diutamakan daripada EDITOR
.
Buat pintasan yang lebih manis dengan sedikit kemudahan.
alias b='buku --suggest'
Impor bookmark secara otomatis dari browser Anda. Harap keluar dari browser yang relevan terlebih dahulu untuk memastikan database tidak terkunci.
b --ai
Tambahkan bookmark secara manual (untuk praktik langsung).
b -w
Daftarkan bookmark Anda dengan indeks DB.
b -p
Untuk integrasi GUI dan browser (atau untuk menyinkronkan bookmark dengan layanan manajemen bookmark favorit Anda) lihat halaman wiki pada Integrasi sistem.
Perintah cepat (bash/zsh) untuk pencarian fuzzy dengan fzf dan membuka pilihan di Firefox:
firefox $(buku -p -f 10 | fzf)
firefox $(buku -p -f 40 | fzf | cut -f1)
Skrip POSIX untuk menampilkan pratinjau bookmark juga:
#! /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
Edit dan tambahkan bookmark dari editor:
$ buku -w
$ buku -w 'gedit -w'
$ buku -w 'macvim -f' -a https://ddg.gg search engine, privacy
Perintah pertama mengambil editor dari variabel lingkungan EDITOR
. Perintah kedua membuka gedit dalam mode pemblokiran. Perintah ketiga membuka macvim dengan opsi -f dan URL serta tag diisi dalam templat.
Tambahkan penanda sederhana:
$ 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, +
: komentar, #
: tag
Judul, deskripsi dan tag akan diambil dari situs. Buku hanya menyimpan URL unik dan akan menimbulkan kesalahan jika URL sudah ada di database:
Tambahkan bookmark dengan tag search engine
dan privacy
, komentar Search engine with perks
, ambil judul halaman dari 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
dimana, >
: URL, +
: komentar, #
: tag
Tambahkan bookmark dengan tag search engine
& privacy
dan judul khusus yang tidak dapat diubah DDG
:
$ buku -a https://ddg.gg search engine, privacy --title 'DDG' --immutable 1
336. DDG (L)
> https://ddg.gg
# privacy,search engine
Perhatikan bahwa URL harus mendahului tag.
Tambahkan bookmark tanpa judul (berfungsi untuk pembaruan juga):
$ buku -a https://ddg.gg search engine, privacy --title
Edit dan perbarui bookmark dari editor:
$ buku -w 15012014
Ini akan membuka detail bookmark yang ada di editor untuk dimodifikasi. Variabel lingkungan EDITOR
harus disetel.
Perbarui bookmark yang ada di indeks 15012014 dengan URL, tag, dan komentar baru, ambil judul dari web:
$ buku -u 15012014 --url http://ddg.gg/ --tag web search, utilities -c Private search engine
Ambil dan perbarui hanya judul untuk bookmark di 15012014:
$ buku -u 15012014
Perbarui hanya komentar untuk bookmark di 15012014:
$ buku -u 15012014 -c this is a new comment
Berlaku untuk --url, --title dan --tag juga.
Ekspor bookmark yang diberi tag tag 1
atau tag 2
ke HTML, XBEL, Markdown, Orgfile atau database baru:
$ buku -e bookmarks.html --stag tag 1, tag 2 $ buku -e bookmarks.xbel --stag tag 1, tag 2 $ buku -e bookmarks.md --stag tag 1, tag 2 $ buku -e bookmarks .org --stag tag 1, tag 2 $ buku -e bookmarks.db --stag tag 1, tag 2 Semua bookmark diekspor jika pencarian tidak dipilih.
Impor bookmark dari HTML, XBEL, Markdown atau Orgfile:
$ buku -i bookmarks.html
$ buku -i bookmarks.xbel
$ buku -i bookmarks.md
$ buku -i bookmarks.org
$ buku -i bookmarks.db
Hapus hanya komentar untuk bookmark di 15012014:
$ buku -u 15012014 -c
Berlaku untuk --title dan --tag juga. URL tidak dapat dihapus tanpa menghapus bookmark.
Perbarui atau segarkan DB lengkap dengan judul halaman dari web:
$ buku -u
$ buku -u --tacit (show only failures and exceptions)
Operasi ini dapat memperbarui bidang judul atau deskripsi dari bookmark yang tidak dapat diubah dengan menguraikan halaman yang diambil. Bidang diperbarui hanya jika bidang yang diambil tidak kosong. Tag tetap tidak tersentuh.
Hapus bookmark pada indeks 15012014:
$ buku -d 15012014
Index 15012020 moved to 15012014
Indeks terakhir dipindahkan ke indeks yang dihapus untuk menjaga DB tetap kompak. Tambahkan --tacit
untuk menghapus tanpa konfirmasi.
Hapus semua bookmark:
$ buku -d
Menghapus rentang atau daftar bookmark:
$ buku -d 100-200
$ buku -d 100 15 200
Cari bookmark untuk APAPUN dari kata kunci kernel
dan debugging
di URL, judul atau tag:
$ buku kernel debugging
$ buku -s kernel debugging
Cari bookmark dengan SEMUA kata kunci kernel
dan debugging
di URL, judul atau tag:
$ buku -S kernel debugging
Cari bookmark yang diberi tag general kernel concepts
:
$ buku --stag general kernel concepts
Cari bookmark yang cocok dengan salah satu tag kernel
, debugging
, general kernel concepts
:
$ buku --stag kernel, debugging, general kernel concepts
Cari bookmark yang cocok dengan SEMUA tag kernel
, debugging
, general kernel concepts
:
$ buku --stag kernel + debugging + general kernel concepts
Cari bookmark yang cocok dengan salah satu kata kunci hello
atau world
, tidak termasuk kata kunci real
dan life
, cocok dengan tag kernel
dan debugging
, tetapi tidak termasuk tag general kernel concepts
dan books
:
$ buku hello world --exclude real life --stag 'kernel + debugging - general kernel concepts, books'
Cari bookmark dengan token berbeda untuk setiap bidang, dan cetaklah diurutkan berdasarkan tag (menaik) dan URL (menurun)
$ buku --order +tags,-url --markers --sall 'global substring' '.title substring' ':url substring' :https '> description substring' '#partial,tags:' '#,exact,tags' '*another global substring'
Daftar semua tag unik menurut abjad:
$ buku --stag
Jalankan pencarian dan perbarui hasilnya:
$ buku -s kernel debugging -u --tag + linux kernel
Jalankan pencarian dan hapus hasilnya:
$ buku -s kernel debugging -d
Enkripsi atau dekripsi DB dengan jumlah iterasi khusus (15) untuk menghasilkan kunci:
$ buku -l 15
$ buku -k 15
Jumlah iterasi yang sama harus ditentukan untuk satu instance lock & unlock. Defaultnya adalah 8, jika dihilangkan.
Tampilkan detail bookmark pada indeks 15012014 dan rentang 20-30, 40-50:
$ buku -p 20-30 15012014 40-50
Tampilkan detail 10 bookmark terakhir :
$ buku -p -10
Tampilkan semua bookmark dengan indeks nyata dari database:
$ buku -p
$ buku -p | more
Ganti tag 'tag lama' dengan 'tag baru':
$ buku --replace 'old tag' 'new tag'
Hapus tag 'tag lama' dari DB:
$ buku --replace 'old tag'
Tambahkan (atau hapus) tag 'tag 1', 'tag 2' ke (atau dari) tag bookmark yang ada di indeks 15012014:
$ buku -u 15012014 --tag + tag 1, tag 2
$ buku -u 15012014 --tag - tag 1, tag 2
Buka URL pada indeks 15012014 di browser:
$ buku -o 15012014
Daftar bookmark tanpa judul atau tag untuk pembukuan:
$ buku -S blank
Daftar bookmark dengan judul yang tidak dapat diubah :
$ buku -S immutable
Persingkat URL www.google.com dan URL pada indeks 20:
$ buku --shorten www.google.com
$ buku --shorten 20
Tambahkan, hapus tag saat diminta (indeks daftar tag ke kiri, indeks bookmark ke kanan):
// 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
Daftar bookmark dengan keluaran berwarna :
$ buku --colors oKlxm -p
Tambahkan bookmark setelah mengikuti semua pengalihan permanen, tetapi hanya jika server tidak merespons dengan kesalahan (dan tidak ada kegagalan jaringan)
$ 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.
Tambahkan bookmark dengan tag http redirect
jika server merespons dengan pengalihan permanen, atau tag berbentuk seperti http 404
pada respons kesalahan:
$ 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
Perbarui semua bookmark yang cocok dengan pencarian dengan memperbarui URL jika server merespons dengan pengalihan permanen, menghapus bookmark jika server merespons dengan kesalahan HTTP 400, 401, 402, 403, 404 atau 500, atau menambahkan tag berbentuk seperti http:{}
jika terjadi kesalahan HTTP lainnya; lalu ekspor yang terpengaruh oleh perubahan tersebut ke dalam file HTML, tandai catatan yang dihapus serta URL lama untuk yang diganti dengan pengalihan.
$ buku -S ://wikipedia.net -u --url-redirect --tag-error --del-error 400-404,500 --export-on --export backup.html
Cetak satu penanda acak :
$ buku --random --print
Cetak 3 bookmark acak yang diurutkan berdasarkan judul (terbalik) dan url:
$ buku --random 3 --order ,-title,+url --print
Cetak satu kriteria pencarian pencocokan bookmark acak , dan ekspor ke file Markdown (dalam urutan DB):
$ buku --random -S kernel debugging --export random.md
Tukar posisi catatan #4 dan #5:
$ buku --swap 4 5
Bantuan lebih lanjut:
$ buku -h
$ man buku
Alur kerja interaktif dapat diotomatisasi menggunakan ekspektasi. Edisi #368 memiliki contoh yang berfungsi dalam mengotomatiskan impor otomatis.
Anda mungkin mengalami masalah dengan editor GUI yang hanya memelihara satu instance secara default dan langsung kembali dari instance lainnya. Gunakan opsi editor yang sesuai untuk memblokir pemanggil ketika dokumen baru dibuka. Lihat edisi #210 untuk gedit.
Hak Cipta © 2015-2024 Arun Prakash Jana
Ada fitur yang hilang? Ada Daftar Tugas yang bergulir dengan tugas yang teridentifikasi. Kontribusi dipersilakan! Harap ikuti pedoman PR.
Lihat juga dokumentasi kami di sini