diff --git a/README.md b/README.md index 0470ebc..0cb7975 100644 --- a/README.md +++ b/README.md @@ -105,28 +105,32 @@ Shell completion scripts for Bash, Fish and Zsh can be found in respective subdi **NOTE:** If you are using `buku` v1.9 or below please refer to the installed man page or program help. - usage: buku [-a URL [tags ...]] [-u [N [URL tags ...]]] - [-t [...]] [-c [...]] [-d [N]] [-h] + usage: buku [-a URL [tags ...]] [-u [N]] [-d [N]] + [--url keyword] [--tag [...]] [-t [...]] [-c [...]] [-s keyword [...]] [-S keyword [...]] [--st [...]] [-k [N]] [-l [N]] [-p [N]] [-f N] - [-r oldtag [newtag ...]] [-j] [-o N] [-z] + [-r oldtag [newtag ...]] [-j] [-o N] [-z] [-h] A private command-line bookmark manager. Your mini web! general options: -a, --add URL [tags ...] bookmark URL with comma-separated tags - -u, --update [N [URL tags ...]] - update fields of bookmark at DB index N + -u, --update [N] update fields of bookmark at DB index N refresh all titles, if no arguments - if URL omitted and -t is unused, update - title of bookmark at index N from web - -t, --title [...] manually set title, works with -a, -u - do not set title, if no arguments - -c, --comment [...] description of the bookmark, works with - -a, -u; clears comment, if no arguments + refresh title of bookmark at N, if only + N is specified without any update modifiers + to change url, tag or comment -d, --delete [N] delete bookmark at DB index N delete all bookmarks, if no arguments + --url keyword specify url, works with -u + --tag [...] specify comma-separated tags, works with -u + clears tag, if no arguments + -t, --title [...] manually set title, works with -a, -u + if no arguments: + -a: do not set title, -u: clear title + -c, --comment [...] description of the bookmark, works with + -a, -u; clears comment, if no arguments -h, --help show this information search options: @@ -171,6 +175,10 @@ Shell completion scripts for Bash, Fish and Zsh can be found in respective subdi - It's advisable to copy URLs directly from the browser address bar, i.e., along with the leading `http://` or `https://` token. `buku` looks up title data (found within tags of HTML) from the web ONLY for fully-formed HTTP(S) URLs. - If the URL contains characters like `;`, `&` or brackets they may be interpreted specially by the shell. To avoid it, add the URL within single or double (`'`/`"`) quotes. - URLs are unique in DB. The same URL cannot be added twice. You can update tags and re-fetch title data. +- Update operation: + - if --title, --tag or --comment is passed without argument, clear the corresponding field from DB + - if --url is passed (and --title is omitted), update the title from web using the URL + - if index number is passed without any other options (--url, --title, --tag and --comment), read the URL from DB and update title from web - Search works in mysterious ways: - Case-insensitive. - Substrings match (`match` matches `rematched`) for URL, title and tags. @@ -185,9 +193,15 @@ Shell completion scripts for Bash, Fish and Zsh can be found in respective subdi # Examples 1. **Add** a bookmark with **tags** `linux news` and `open source`, **comment** `Informative website on Linux and open source`, **fetch page title** from the web: - $ buku -a http://tuxdiary.com linux news, open source -c Informative website on Linux and open source - Title: [TuxDiary | Linux, open source and a pinch of leisure.] - Added at index 15012014 + $ buku -a https://tuxdiary.com linux news, open source -c Informative website on Linux and open source + Title: [TuxDiary – Linux, open source, command-line, leisure.] + Added at index 336 + + 336. https://tuxdiary.com + > TuxDiary – Linux, open source, command-line, leisure. + + Informative website on Linux and open source + # linux news,open source +where, >: title, +: comment, #: tags 2. **Add** a bookmark with tags `linux news` and `open source` & **custom title** `Linux magazine`: $ buku -a http://tuxdiary.com linux news, open source -t 'Linux magazine' @@ -196,60 +210,68 @@ Note that URL must precede tags. 3. **Add** a bookmark **without a title** (works for update too): $ buku -a http://tuxdiary.com linux news, open source -t -4. **Update** existing bookmark at index 15012014 with new URL and tags, fetch title from the web: +4. **Update** existing bookmark at index 15012014 with new URL, tags and comments, fetch title from the web: - $ buku -u 15012014 http://tuxdiary.com/ linux news, open source, magazine - Title: [TuxDiary | Linux, open source and a pinch of leisure.] - Updated index 15012014 -Tags are updated too. Original tags are removed. -5. **Update** or refresh **full DB** with page titles from the web: + $ buku -u 15012014 --url http://tuxdiary.com/ --tag linux news, open source, magazine -c site for Linux utilities +5. Fetch and **update only title** for bookmark at 15012014: + + $ buku -u 15012014 +6. Update only comment for bookmark at 15012014: + + $ buku -u 15012014 -c this is a new comment +Applies to --url, --title and --tag too. +7. Delete only comment for bookmark at 15012014: + + $ buku -u 15012014 -c +Applies to --title and --tag too. URL cannot be deleted without deleting the bookmark. +8. **Update** or refresh **full DB** with page titles from the web: $ buku -u -This operation does not modify the indexes, URLs or tags. Only title is refreshed if fetched title is non-empty. -6. **Delete** bookmark at index 15012014: +This operation does not modify the indexes, URLs, tags or comments. Only title is refreshed if fetched title is non-empty. +9. **Delete** bookmark at index 15012014: $ buku -d 15012014 Index 15012020 moved to 15012014 The last index is moved to the deleted index to keep the DB compact. -7. **Delete all** bookmarks: +10. **Delete all** bookmarks: $ buku -d -8. **Search** bookmarks for **ANY** of the keywords `kernel` and `debugging` in URL, title or tags: +11. **Search** bookmarks for **ANY** of the keywords `kernel` and `debugging` in URL, title or tags: $ buku -s kernel debugging -9. **Search** bookmarks with **ALL** the keywords `kernel` and `debugging` in URL, title or tags: +12. **Search** bookmarks with **ALL** the keywords `kernel` and `debugging` in URL, title or tags: $ buku -S kernel debugging -10. **Search** bookmarks with **tag** `general kernel concepts`: +13. **Search** bookmarks with **tag** `general kernel concepts`: $ buku --st general kernel concepts Note the commas (,) before and after the tag. Comma is the tag delimiter in DB. -11. List **all unique tags** alphabetically: +14. List **all unique tags** alphabetically: $ buku --st -12. **Encrypt or decrypt** DB with **custom number of iterations** (15) to generate key: +15. **Encrypt or decrypt** DB with **custom number of iterations** (15) to generate key: $ buku -l 15 $ buku -k 15 The same number of iterations must be used for one lock & unlock instance. Default is 8. -13. **Show details** of bookmark at index 15012014: +16. **Show details** of bookmark at index 15012014: $ buku -p 15012014 -14. **Show all** bookmarks with real index from database: +17. **Show all** bookmarks with real index from database: $ buku -p $ buku -p | more -15. **Replace tag** 'old tag' with 'new tag': +18. **Replace tag** 'old tag' with 'new tag': $ buku -r 'old tag' new tag -16. **Delete tag** 'old tag' from DB: +19. **Delete tag** 'old tag' from DB: $ buku -r 'old tag' -17. **Open URL** at index 15012014 in browser: +20. **Open URL** at index 15012014 in browser: $ buku -o 15012014 -18. More **help**: +21. More **help**: $ buku $ man buku diff --git a/buku b/buku index 4dd8c0c..c31052d 100755 --- a/buku +++ b/buku @@ -1263,17 +1263,19 @@ argparser = ExtendedArgumentParser( general_group = argparser.add_argument_group(title="general options", description='''-a, --add URL [tags ...] bookmark URL with comma-separated tags --u, --update [N] - update fields of bookmark at DB index N +-u, --update [N] update fields of bookmark at DB index N refresh all titles, if no arguments refresh title of bookmark at N, if only - N is specified + N is specified without any update modifiers + to change url, tag or comment -d, --delete [N] delete bookmark at DB index N delete all bookmarks, if no arguments --url keyword specify url, works with -u --tag [...] specify comma-separated tags, works with -u clears tag, if no arguments --t, --title [...] manually set title, works with -a, -u; do not +-t, --title [...] manually set title, works with -a, -u + if no arguments: + -a: do not set title, -u: clear title set (-a) or clear (-u) title, if no arguments -c, --comment [...] description of the bookmark, works with -a, -u; clears comment, if no arguments diff --git a/buku.1 b/buku.1 index 010ea5f..dcd5da5 100644 --- a/buku.1 +++ b/buku.1 @@ -3,15 +3,15 @@ buku \- A private command-line bookmark manager. Your mini web! .SH SYNOPSIS .B buku -[-a URL [tags ...]] [-u [N [URL tags ...]]] +[-a URL [tags ...]] [-u [N]] [-d [N]] .br - [-t [...]] [-c [...]] [-d [N]] [-h] + [--url keyword] [--tag [...]] [-t [...]] [-c [...]] .br [-s keyword [...]] [-S keyword [...]] [--st [...]] .br [-k [N]] [-l [N]] [-p [N]] [-f N] .br - [-r oldtag [newtag ...]] [-j] [-o N] [-z] + [-r oldtag [newtag ...]] [-j] [-o N] [-z] [-h] .SH DESCRIPTION .B buku is a command-line tool to save, tag and search bookmarks. @@ -31,6 +31,11 @@ It's advisable to copy URLs directly from the browser address bar, i.e., along w If the URL contains characters like ';', '&' or brackets they may be interpreted specially by the shell. To avoid it, add the URL within single or double ('/") qoutes. .PP URLs are unique in DB. The same URL cannot be added twice. You can update tags and re-fetch title data. +.pp +Update operation: + - if --title, --tag or --comment is passed without argument, clear the corresponding field from DB + - if --url is passed (and --title is omitted), update the title from web using the URL + - if index number is passed without any other options (--url, --title, --tag and --comment), read the URL from DB and update title from web .PP Search works in mysterious ways: - Case-insensitive. @@ -51,14 +56,18 @@ Bookmark .I URL along with comma-separated tags. A tag can have multiple words. .TP -.BI \-u " " \--update " [N [URL tags ...]]" +.BI \-u " " \--update " [N]" Update fields of the bookmark at index .I N -in DB. If URL is omitted (and -t is not used) the title of entry at index +in DB. If .I N -is refreshed from the web. If -.I N -is omitted, all titles are refreshed from the web. +and other options are omitted, all titles are refreshed from the web. Works with update modifiers for the fields url, title, tag and comment. If only N is passed without any update modifiers, title is fetched and updated (if not empty). +.TP +.BI \--url " [...]" +Manually specify the URL. Fetches and updates title if --title is not used. +.TP +.BI \--tag " [...]" +Specify comma separated tags. Clears the tags, if no arguments passed. .TP .BI \-t " " \--title " [...]" Manually specify the title, works with -a, -u. Omits or clears the title, if no arguments passed. @@ -200,7 +209,7 @@ Tags are updated too. Original tags are removed. .EE .PP .IP "" 4 -This operation does not modify the indexes, URLs or tags. Only title is refreshed if fetched title is non-empty. +This operation does not modify the indexes, URLs, tags or comments. Only title is refreshed if fetched title is non-empty. .PP .IP 6. 4 \fBDelete\fR bookmark at index 15012014: