Actions
Bookmark Library¶
I have a whole ton of bookmarks that I've collected over the years. I have always wanted to build a system to keep track of them and help me search them. For some reason it has taken me a long time to get started on this project.
The idea is to develop a separate library (i.e. model) and then use it with several GUI's. I will probably create a web-based GUI first.
Requirements¶
These are semi formal requirements
- be written in Python3 and use sqlite for the back end
- auto suggest a title for a bookmark based on the contents of the page's title tag
- store a (short) user defined description of each bookmark
- record the number of times a bookmark link has been clicked
- record the date of the last time a bookmark link was clicked
- check if a bookmark link is still reachable
- record the last date a bookmark link was reachable
- auto suggest possible tags using a term frequency from page content
- support search scoring
- support tag hierarchies
- text based front end
- import tool
Schema¶
bookmarks- This table will hold the main content, one row per bookmark.
| Column | Type | Description |
| id | integer (primary key) | unique identifier for each bookmark |
| url | text | the URL for the bookmark |
| title | text | the title for the bookmark |
| description | text | a short description of the bookmark if the title isn't enough |
| times_visited | integer | number of times the bookmark link has been clicked |
| last_visited | date | datetime of the last time the bookmark link was clicked |
| last_reachable | date | datetime of the last time the bookmark link was verified to be reachable |
| date_added | date | date the bookmark was added |
| deleted | boolean | bookmark was deleted |
- This table will hold a collection of tags that are used to categorize and describe each bookmark.
| Column | Type | Description |
| id | integer (primary key) | unique identifier for each tag |
| value | text | the tag text itself |
- This table will hold the association of bookmarks and tags where the tags categorize the bookmark.
| Column | Type | Description |
| tag_id | integer (foreign key) | id of the tag |
| bookmark_id | integer (foreign key) | id of the bookmark |
- This table will hold the association of bookmarks and tags where the tags describe the bookmark.
| Column | Type | Description |
| tag_id | integer (foreign key) | id of the tag |
| bookmark_id | integer (foreign key) | id of the bookmark |
Setting Up the Web GUI¶
- Install apache and mod_wsgi. Also install genshi and setuptools for Python3 if not already installed:
- Install bmklib
- Run the web interface install script to install the web interface:
TODO¶
all bookmarks pagepagination
- all tags page
- display bookmark info page
- add new bookmark
- search
Development Log¶
I decided that I really need a development log because I don't work on this project very often. I'll want to keep track of my thoughts and whatnot so that I can pick back up where I left off next time I get the urge to work on this.
- July 5, 2015
- After trying for several hours to get the bmklib web interface up and running on my laptop I finally discovered that you no longer need to install Genshi from trunk (and, in fact, the trunk version appears to be broken...). Instead you can install the `python3-genshi` package from the Ubuntu repo which includes Genshi version 0.7.3 and appears to work well with Python3.
- I wrote a "web interface install script" to make installation of all the various pieces a bit easier. I also added a premade apache configuration to the repo for ease of install next time.
- April 4, 2015
- I finally figured out how to deal with wsgi.input
- 301 Redirect response
- It's been far too long, I need to work on this more often!
- '''December 6, 2014'''
- IDEA: add master
tryexceptblock in .wsgi file to catch and display errors via the web interface
- IDEA: add master
References¶
----
Back home
Updated by over 4 years ago · 1 revisions