بوكو في العمل!
buku
هو مدير إشارات مرجعية قوي وشبكة ويب نصية صغيرة شخصية.
بالنسبة لأولئك الذين يفضلون واجهة المستخدم الرسومية، يعرض bukuserver
واجهة أمامية قابلة للتصفح على خادم مضيف ويب محلي. راجع صفحة bukuserver للحصول على التكوين ولقطات الشاشة.
عندما بدأت كتابته، لم أتمكن من العثور على حل مرن لسطر الأوامر مع قاعدة بيانات خاصة ومحمولة وقابلة للدمج بالإضافة إلى تكامل سلس مع واجهة المستخدم الرسومية. وبالتالي، buku
.
يمكن buku
استيراد الإشارات المرجعية من المتصفح (المتصفحات) أو جلب العنوان والعلامات ووصف عنوان URL من الويب. استخدم المحرر المفضل لديك لإضافة الإشارات المرجعية وإنشائها وتحديثها. ابحث في الإشارات المرجعية على الفور باستخدام خيارات بحث متعددة، بما في ذلك التعبير العادي ووضع الفحص العميق (سهل الاستخدام مع عناوين URL).
يمكنه البحث عن الروابط المعطلة على Wayback Machine. هناك بيضة عيد الفصح لإعادة زيارة الإشارات المرجعية العشوائية.
لا يوجد تتبع أو سجل مخفي أو سجلات قديمة أو تحليلات استخدام أو توجيه.
للبدء فورًا، انتقل إلى قسم Quickstart. buku
لديه واحدة من أفضل الوثائق الموجودة. صفحة الرجل تأتي مع الأمثلة. للحصول على التفاصيل الداخلية، يرجى الرجوع إلى الملاحظات التشغيلية.
buku
هي مكتبة أيضًا! هناك العديد من المشاريع ذات الصلة، بما في ذلك البرنامج الإضافي للمتصفح.
ميزة | التبعية |
---|---|
لانج، سكليتي | بايثون 3.8+ |
HTTPS | شهادة، urllib3 |
التشفير | التشفير |
HTML | beautifulsoup4، html5lib |
لنسخ عنوان URL إلى الحافظة، يستخدم buku
xsel
(أو xclip
) على Linux، pbcopy
(مثبت افتراضيًا) على OS X، clip
(مثبت افتراضيًا) على Windows، termux-clipboard
على Termux (محاكاة طرفية لنظام Android)، و wl-copy
على Wayland. إذا كان X11 مفقودًا، فسيتم التعرف على مخازن نسخ ولصق GNU Screen أو tmux.
لتثبيت buku بكل تبعياته من PyPI، قم بتشغيل:
# pip3 install buku
يمكنك أيضًا تثبيت buku
من مدير الحزم لديك. إذا كان الإصدار المتوفر قديمًا، فجرّب طريقة تثبيت بديلة.
● PyPI ( pip3 install buku
)
● Termux ( pip3 install buku
)
تتوفر الحزم التي تم إنشاؤها تلقائيًا (مع مكون cli فقط) لأنظمة Arch Linux وCentOS وDebian وFedora وopenSUSE Leap وUbuntu بأحدث إصدار ثابت.
ملاحظة: قد لا يحتوي CentOS على حزمة python3-beautifulsoup4 في اتفاقيات إعادة الشراء. تثبيته باستخدام pip3.
إذا قمت بتثبيت git، فقم باستنساخ هذا المستودع. بخلاف ذلك، قم بتنزيل أحدث إصدار ثابت أو إصدار تطوير ( محفوف بالمخاطر ).
تثبيت التبعيات. على سبيل المثال، على أوبونتو:
$ apt-get install ca-certificates python3-urllib3 python3-cryptography python3-bs4
قم بتثبيت مكون cli في الموقع الافتراضي ( /usr/local
):
$ sudo make install
لإزالة، قم بتشغيل:
$ sudo make uninstall
يتم دعم PREFIX
، في حالة رغبتك في التثبيت في موقع مختلف.
buku
هي أداة قائمة بذاتها. من الدليل الذي يحتوي على، قم بتشغيل:
$ chmod +x buku
$ ./buku
يمكن العثور على البرامج النصية لإكمال Shell لـ Bash وFish وZsh في الدلائل الفرعية الخاصة بالإكمال التلقائي/. يرجى الرجوع إلى دليل شل الخاص بك للحصول على تعليمات التثبيت.
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
الألوان المخصصة. تفضل بزيارة صفحة wiki للتعرف على كيفية تخصيص الألوان لمزيد من التفاصيل.
قم بتصدير VISUAL
أو EDITOR
للإشارة إلى المحرر المفضل لديك. لاحظ أن VISUAL
له الأسبقية على EDITOR
.
أنشئ اختصارًا أفضل مع بعض الراحة.
alias b='buku --suggest'
استيراد الإشارات المرجعية تلقائيًا من متصفحك (متصفحاتك). يرجى إنهاء المتصفحات ذات الصلة مسبقًا لضمان عدم قفل قواعد البيانات.
b --ai
أضف إشارة مرجعية يدويًا (للتدريب العملي).
b -w
قم بإدراج إشاراتك المرجعية باستخدام فهرس قاعدة البيانات.
b -p
لتكامل واجهة المستخدم الرسومية والمتصفح (أو لمزامنة الإشارات المرجعية مع خدمة إدارة الإشارات المرجعية المفضلة لديك) راجع صفحة wiki الخاصة بتكامل النظام.
أوامر سريعة (bash/zsh) للبحث الغامض باستخدام fzf وفتح التحديد في Firefox:
firefox $(buku -p -f 10 | fzf)
firefox $(buku -p -f 40 | fzf | cut -f1)
البرنامج النصي POSIX لإظهار معاينة للإشارة المرجعية أيضًا:
#! /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
تحرير وإضافة إشارة مرجعية من المحرر:
$ buku -w
$ buku -w 'gedit -w'
$ buku -w 'macvim -f' -a https://ddg.gg search engine, privacy
يقوم الأمر الأول باختيار المحرر من متغير البيئة EDITOR
. الأمر الثاني يفتح gedit في وضع الحظر. يفتح الأمر الثالث macvim مع الخيار -f وعنوان URL والعلامات المملوءة في القالب.
أضف إشارة مرجعية بسيطة:
$ 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، +
: تعليق، #
: علامات
سيتم جلب العنوان والوصف والعلامات من الموقع. يقوم Buku بتخزين عناوين URL الفريدة فقط وسيظهر خطأ إذا كان عنوان URL موجودًا بالفعل في قاعدة البيانات:
أضف إشارة مرجعية مع علامات search engine
privacy
، وتعليق Search engine with perks
، وجلب عنوان الصفحة من الويب:
$ 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
حيث، >
: عنوان URL، +
: تعليق، #
: علامات
أضف إشارة مرجعية تحتوي على علامات search engine
privacy
والعنوان المخصص غير القابل للتغيير DDG
:
$ buku -a https://ddg.gg search engine, privacy --title 'DDG' --immutable 1
336. DDG (L)
> https://ddg.gg
# privacy,search engine
لاحظ أن عنوان URL يجب أن يسبق العلامات.
أضف إشارة مرجعية بدون عنوان (تعمل للتحديث أيضًا):
$ buku -a https://ddg.gg search engine, privacy --title
تحرير وتحديث إشارة مرجعية من المحرر:
$ buku -w 15012014
سيؤدي هذا إلى فتح تفاصيل الإشارة المرجعية الموجودة في المحرر لإجراء التعديلات. يجب تعيين متغير البيئة EDITOR
.
قم بتحديث الإشارة المرجعية الموجودة في الفهرس 15012014 باستخدام عنوان URL الجديد والعلامات والتعليقات، وجلب العنوان من الويب:
$ buku -u 15012014 --url http://ddg.gg/ --tag web search, utilities -c Private search engine
جلب وتحديث العنوان الوحيد للإشارة المرجعية على الرقم 15012014:
$ buku -u 15012014
تحديث التعليق الوحيد للإشارة المرجعية على الرقم 15012014:
$ buku -u 15012014 -c this is a new comment
ينطبق على --url و --title و --tag أيضًا.
تصدير الإشارات المرجعية ذات tag 1
أو tag 2
إلى HTML أو XBEL أو Markdown أو Orgfile أو قاعدة بيانات جديدة:
$ 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 يتم تصدير جميع الإشارات المرجعية إذا لم يتم اختيار البحث.
استيراد الإشارات المرجعية من HTML أو XBEL أو Markdown أو Orgfile:
$ buku -i bookmarks.html
$ buku -i bookmarks.xbel
$ buku -i bookmarks.md
$ buku -i bookmarks.org
$ buku -i bookmarks.db
حذف التعليق فقط للإشارة المرجعية على الرقم 15012014:
$ buku -u 15012014 -c
ينطبق على --title و --tag أيضًا. لا يمكن حذف عنوان URL دون حذف الإشارة المرجعية.
قم بتحديث أو تحديث قاعدة البيانات الكاملة باستخدام عناوين الصفحات من الويب:
$ buku -u
$ buku -u --tacit (show only failures and exceptions)
يمكن لهذه العملية تحديث حقول العنوان أو الوصف للإشارات المرجعية غير القابلة للتغيير عن طريق تحليل الصفحة التي تم جلبها. يتم تحديث الحقول فقط إذا كانت الحقول التي تم جلبها غير فارغة. العلامات تبقى دون تغيير.
حذف الإشارة المرجعية في الفهرس 15012014:
$ buku -d 15012014
Index 15012020 moved to 15012014
يتم نقل الفهرس الأخير إلى الفهرس المحذوف للحفاظ على ضغط قاعدة البيانات. أضف --tacit
للحذف دون تأكيد.
حذف جميع الإشارات المرجعية:
$ buku -d
حذف نطاق أو قائمة الإشارات المرجعية:
$ buku -d 100-200
$ buku -d 100 15 200
ابحث في الإشارات المرجعية عن أي من الكلمات الرئيسية kernel
debugging
في عنوان URL أو العنوان أو العلامات:
$ buku kernel debugging
$ buku -s kernel debugging
ابحث في الإشارات المرجعية باستخدام جميع الكلمات kernel
debugging
في عنوان URL أو العنوان أو العلامات:
$ buku -S kernel debugging
البحث في الإشارات المرجعية الموسومة general kernel concepts
:
$ buku --stag general kernel concepts
ابحث عن الإشارات المرجعية المطابقة لأي من العلامات kernel
، debugging
، general kernel concepts
:
$ buku --stag kernel, debugging, general kernel concepts
ابحث عن الإشارات المرجعية المطابقة لجميع العلامات kernel
، debugging
، general kernel concepts
:
$ buku --stag kernel + debugging + general kernel concepts
ابحث عن الإشارات المرجعية المطابقة لأي من الكلمات الرئيسية hello
أو world
، باستثناء الكلمات الأساسية real
و life
، ومطابقة كل من العلامات kernel
و debugging
، ولكن باستثناء العلامات general kernel concepts
books
:
$ buku hello world --exclude real life --stag 'kernel + debugging - general kernel concepts, books'
ابحث عن إشارات مرجعية ذات رموز مختلفة لكل حقل، ثم قم بطباعتها مرتبة حسب العلامات (تصاعديًا) وعنوان URL (تنازليًا)
$ buku --order +tags,-url --markers --sall 'global substring' '.title substring' ':url substring' :https '> description substring' '#partial,tags:' '#,exact,tags' '*another global substring'
قم بإدراج جميع العلامات الفريدة أبجديًا:
$ buku --stag
قم بإجراء بحث وتحديث النتائج:
$ buku -s kernel debugging -u --tag + linux kernel
قم بإجراء بحث وحذف النتائج:
$ buku -s kernel debugging -d
تشفير أو فك تشفير قاعدة البيانات بعدد مخصص من التكرارات (15) لإنشاء المفتاح:
$ buku -l 15
$ buku -k 15
يجب تحديد نفس عدد التكرارات لمثيل قفل وفتح واحد. الافتراضي هو 8، إذا تم حذفه.
إظهار تفاصيل الإشارات المرجعية في الفهرس 15012014 والنطاقات 20-30، 40-50:
$ buku -p 20-30 15012014 40-50
عرض تفاصيل آخر 10 إشارات مرجعية :
$ buku -p -10
إظهار جميع الإشارات المرجعية ذات الفهرس الحقيقي من قاعدة البيانات:
$ buku -p
$ buku -p | more
استبدال العلامة "العلامة القديمة" بـ "العلامة الجديدة":
$ buku --replace 'old tag' 'new tag'
حذف العلامة "العلامة القديمة" من قاعدة البيانات:
$ buku --replace 'old tag'
إلحاق (أو حذف) العلامات "العلامة 1" و"العلامة 2" إلى (أو من) علامات الإشارة المرجعية الموجودة في الفهرس 15012014:
$ buku -u 15012014 --tag + tag 1, tag 2
$ buku -u 15012014 --tag - tag 1, tag 2
افتح عنوان URL في الفهرس 15012014 في المتصفح:
$ buku -o 15012014
قائمة الإشارات المرجعية بدون عنوان أو علامات لحفظ الدفاتر:
$ buku -S blank
قائمة الإشارات المرجعية ذات العنوان غير القابل للتغيير :
$ buku -S immutable
قم بتقصير عنوان URL www.google.com وعنوان URL الموجود في الفهرس 20:
$ buku --shorten www.google.com
$ buku --shorten 20
إلحاق العلامات وإزالتها عند المطالبة (فهرس قائمة العلامات على اليسار، وفهرس الإشارات المرجعية على اليمين):
// 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
قائمة الإشارات المرجعية مع الإخراج الملون :
$ buku --colors oKlxm -p
أضف إشارة مرجعية بعد اتباع جميع عمليات إعادة التوجيه الدائمة، ولكن فقط إذا لم يستجب الخادم بخطأ (وليس هناك فشل في الشبكة)
$ 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.
أضف إشارة مرجعية مع علامة http redirect
إذا استجاب الخادم بإعادة توجيه دائمة، أو علامة على شكل http 404
عند استجابة خطأ:
$ 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
قم بتحديث جميع الإشارات المرجعية المطابقة للبحث عن طريق تحديث عنوان URL إذا استجاب الخادم بإعادة توجيه دائمة، أو حذف الإشارة المرجعية إذا استجاب الخادم بخطأ HTTP 400 أو 401 أو 402 أو 403 أو 404 أو 500، أو إضافة علامة على شكل http:{}
في حالة وجود أي خطأ HTTP آخر؛ ثم قم بتصدير تلك المتأثرة بهذه التغييرات إلى ملف HTML، مع وضع علامة على السجلات المحذوفة بالإضافة إلى عناوين URL القديمة لتلك التي تم استبدالها بإعادة التوجيه.
$ buku -S ://wikipedia.net -u --url-redirect --tag-error --del-error 400-404,500 --export-on --export backup.html
اطبع إشارة مرجعية عشوائية واحدة:
$ buku --random --print
اطبع 3 إشارات مرجعية عشوائية مرتبة حسب العنوان (معكوسًا) وعنوان URL:
$ buku --random 3 --order ,-title,+url --print
اطبع إشارة مرجعية عشوائية واحدة تطابق معايير البحث ، وقم بالتصدير إلى ملف Markdown (بترتيب قاعدة البيانات):
$ buku --random -S kernel debugging --export random.md
تبديل مواضع السجلات رقم 4 ورقم 5:
$ buku --swap 4 5
مزيد من المساعدة :
$ buku -h
$ man buku
يمكن أتمتة سير العمل التفاعلي باستخدام التوقع. يحتوي الإصدار رقم 368 على مثال عملي حول أتمتة الاستيراد التلقائي.
قد تواجه مشكلات مع برامج تحرير واجهة المستخدم الرسومية التي تحتفظ بمثيل واحد فقط بشكل افتراضي وتعود فورًا من المثيلات الأخرى. استخدم خيار المحرر المناسب لحظر المتصل عند فتح مستند جديد. راجع العدد رقم 210 لـ gedit.
حقوق الطبع والنشر © 2015-2024 آرون براكاش جانا
هل تفتقد ميزة؟ هناك قائمة المهام المتداولة مع المهام المحددة. المساهمات هي موضع ترحيب! يرجى اتباع إرشادات العلاقات العامة.
انظر أيضًا وثائقنا هنا