MarkIt
markit
is a cmdline bookmark management utility written using Python3 and SQLite3. markit
exists because of my monumental dependency on historious. I wanted the same database on my local system. However, I couldn't find an equally flexible cmdline solution. Hence, MarkIt
!
The SQLite3 database file is stored in $HOME/.cache/markit/bookmarks.db
for each user.
markit
is GPLv3 licensed.
If you find markit
useful, please consider donating via PayPal.
Features
- Add, update or remove a bookmark
- Add tags to bookmarks
- Optionally fetch page title data from the web (default: disabled)
- Use (partial) tags or keywords to search bookmarks
- Unique URLs to avoid duplicates, show index if URL already exists
- Open bookmark in browser using index
- Open search results in browser
- Browser (Chromium and Firefox based) errors and warnings suppression
- Show single bookmark by ID or all bookmarks in a go
- Delete all bookmarks
- Add a bookmark at Nth index, to fill deleted bookmark indices
- Secure parameterized SQLite3 queries to access database
- Handle first level of redirections (reports IP blocking)
- Unicode in URL works
- UTF-8 request and response, page character set detection
- Works with Python 3.x
- Coloured output for clarity
- Manpage for quick reference
- Optional debug information
- Fast and clean (no ads or clutter)
- Minimal dependencies
- Open source and free
Installation
markit
requires Python 3.x to work.
- If you have git installed (the steps are tested on Ubuntu 14.04.3 x64_64):
$ git clone https://github.com/jarun/markit/ $ cd markit $ sudo make install
To remove, run:
$ sudo make uninstall
- If you do not have git installed:
Download the latest stable release or development version source code. Extract, cd into the directory and run:
$ sudo make install
If you do not want to install, markit
is standalone:
$ chmod +x markit $ ./markit ...
Usage
Operational notes:
- It's advisable to copy URLs directly from the browser address bar, i.e., along with the leading
http://
orhttps://
token.markit
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"
qoutes. - The same URL cannot be added twice. You can update tags and re-fetch title data. You can also delete it and insert at the same index.
- You can either add or update or delete record(s) in one instance. A combination of these operations is not supported in a single run.
- Search works in mysterious ways:
- Substrings match (
match
matchesrematched
) for URL, tags and title data. - All the keywords are treated together as a
single
tag in the same order. Bookmarks with partial or complete tag matches are shown in results. - The same keywords are treated
separately
as unique tokens. Hence, entries with matching URL or title data are also shown in the results. Order is irrelevant in this case. - Search results are indexed serially. The index is different from actual database index of a bookmark record. Use
-P
option to get DB index.
- Substrings match (
Cmdline help:
Usage: markit [OPTIONS] KEYWORDS... Bookmark manager. Your private Google. Options -a URL tag 1, tag 2, ... add URL as bookmark with comma separated tags -d N delete entry at DB index N (from -P output) -D delete ALL bookmarks -i N insert entry at DB index N, useful to fill deleted index -o N open URL at DB index N in browser -p N show details of bookmark record at DB index N -P show all bookmarks along with index from DB -s keyword(s) search all bookmarks for a (partial) tag or each keyword -u N update entry at DB index N -w fetch title info from web, works with -a, -i, -u -x N works with -P, N=1: show only URL, N=2: show URL and tag -z show debug information you can either add or update or delete in one instance any other option shows help and exits markit Keys 1-N open Nth search result in browser. Enter exits markit.
Examples
- Add a new bookmark with tags
linux news
andopen source
:
$ markit -a http://tuxdiary.com linux news, open source Added at index 15012014
The assigned automatic index 15012014 is unique, one greater than highest index already in use in database. 2. Add a bookmark, fetch page title information from web:
$ markit -a -w http://tuxdiary.com linux news, open source Title: [TuxDiary | Linux, open source and a pinch of leisure.] Added at index 15012014
- Update existing bookmark at index 15012014 with a new tag:
$ markit -u 15012014 -w http://tuxdiary.com linux news, open source, magazine Title: [TuxDiary | Linux, open source and a pinch of leisure.] Updated
- Delete bookmark at index 15012014:
$ markit -d 15012014
- Delete all bookmarks:
$ markit -D
- Insert a bookmark at deleted index 15012014 (fails if index or URL exists in database):
$ markit -i 15012014 -w http://tuxdiary.com/about linux news, open source Title: [A journey with WordPress | TuxDiary] Added at index 15012014
This option is useful in filling deleted indices from database manually. 7. Show info on bookmark at index 15012014:
$ markit -p 15012014
- Show all bookmarks with real index from database:
$ markit -P
- Open URL at index 15012014 in browser:
$ markit -o 15012014
- Search bookmarks:
$ markit -s kernel debugging
- Show debug info:
$ markit -z
- Show help:
$ markit
- Check manpage:
$ man markit
- MarkIt doesn't have any import feature of its own. To import URLs in bulk, create a script with URLs and tags like the following:
#!/bin/bash markit -aw https://wireless.wiki.kernel.org/ networking, device drivers markit -aw https://courses.engr.illinois.edu/ece390/books/artofasm/ArtofAsm.html assembly markit -aw http://www.tittbit.in/ markit -aw http://www.mikroe.com/chapters/view/65/ electronics markit -aw "http://msdn.microsoft.com/en-us/library/bb470206(v=vs.85).aspx" file systems markit -aw http://www.ibm.com/developerworks/linux/library/l-linuxboot/index.html boot process
Make the script executbale and run to batch add.
TIP: To add the same text at the beginning of multiple lines in a text file:
Press Ctrl-v
to select the first column of text in the lines you want to change (visual mode).
Press Shift-i
and type the text you want to insert.
Hit Esc
, wait 1 second and the inserted text will appear on every line.
15. To update all URLs along with your tags, first get the unformatted selective output with URL and tags:
$ markit -P -x 2 | tee myurls
Add markit -wu
in front of all the lines (as explained in example 14 above). Should look like:
#!/bin/bash markit -wu 50 https://wireless.wiki.kernel.org/ networking, device drivers markit -wu 51 https://courses.engr.illinois.edu/ece390/books/artofasm/ArtofAsm.html assembly markit -wu 52 http://www.tittbit.in/ markit -wu 53 http://www.mikroe.com/chapters/view/65/ electronics markit -wu 54 "http://msdn.microsoft.com/en-us/library/bb470206(v=vs.85).aspx" file systems markit -wu 55 http://www.ibm.com/developerworks/linux/library/l-linuxboot/index.html boot process
Run the script:
$ chmod +x myurls $ ./myurls
#License
GPL v3
Copyright (C) 2015 by Arun Prakash Jana <engineerarun@gmail.com>
Contributions
I would love to see pull requests with the following features:
- Exact word match (against substring in a word as it works currently. Hint: REGEXP)
- Parse full page data??? Might end up writing a search engine like Google. ;)
- Optional password protection
Developer(s)
Arun Prakash Jana <engineerarun@gmail.com>