BookmarkLibrary » History » Version 1
Anonymous, 12/19/2021 04:33 PM
adding original page
| 1 | 1 | h1. Bookmark Library |
|
|---|---|---|---|
| 2 | |||
| 3 | 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. |
||
| 4 | |||
| 5 | 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. |
||
| 6 | |||
| 7 | h2. Requirements |
||
| 8 | |||
| 9 | These are semi formal requirements |
||
| 10 | |||
| 11 | * be written in Python3 and use sqlite for the back end |
||
| 12 | * auto suggest a title for a bookmark based on the contents of the page's title tag |
||
| 13 | * store a (short) user defined description of each bookmark |
||
| 14 | * record the number of times a bookmark link has been clicked |
||
| 15 | * record the date of the last time a bookmark link was clicked |
||
| 16 | * check if a bookmark link is still reachable |
||
| 17 | * record the last date a bookmark link was reachable |
||
| 18 | * auto suggest possible tags using a term frequency from page content |
||
| 19 | |||
| 20 | * support search scoring |
||
| 21 | |||
| 22 | * support tag hierarchies |
||
| 23 | |||
| 24 | * text based front end |
||
| 25 | * import tool |
||
| 26 | |||
| 27 | h2. Schema |
||
| 28 | |||
| 29 | bookmarks |
||
| 30 | * This table will hold the main content, one row per bookmark. |
||
| 31 | |||
| 32 | | *Column* |*Type*|*Description*| |
||
| 33 | |id|integer (primary key)|unique identifier for each bookmark| |
||
| 34 | |url|text|the URL for the bookmark| |
||
| 35 | |title|text|the title for the bookmark| |
||
| 36 | |description|text|a short description of the bookmark if the title isn't enough| |
||
| 37 | |times_visited|integer|number of times the bookmark link has been clicked| |
||
| 38 | |last_visited|date|datetime of the last time the bookmark link was clicked| |
||
| 39 | |last_reachable|date|datetime of the last time the bookmark link was verified to be reachable| |
||
| 40 | |date_added|date|date the bookmark was added| |
||
| 41 | |deleted|boolean|bookmark was deleted| |
||
| 42 | |||
| 43 | tags |
||
| 44 | * This table will hold a collection of tags that are used to categorize and describe each bookmark. |
||
| 45 | |||
| 46 | |*Column*|*Type*|*Description*| |
||
| 47 | |id|integer (primary key)|unique identifier for each tag| |
||
| 48 | |value|text|the tag text itself| |
||
| 49 | |||
| 50 | category_tags |
||
| 51 | * This table will hold the association of bookmarks and tags where the tags categorize the bookmark. |
||
| 52 | |||
| 53 | |*Column*|*Type*|*Description*| |
||
| 54 | |tag_id|integer (foreign key)|id of the tag| |
||
| 55 | |bookmark_id|integer (foreign key)|id of the bookmark| |
||
| 56 | |||
| 57 | description_tags |
||
| 58 | * This table will hold the association of bookmarks and tags where the tags describe the bookmark. |
||
| 59 | |||
| 60 | |*Column*|*Type*|*Description*| |
||
| 61 | |tag_id|integer (foreign key)|id of the tag| |
||
| 62 | |bookmark_id|integer (foreign key)|id of the bookmark| |
||
| 63 | |||
| 64 | h2. Setting Up the Web GUI |
||
| 65 | |||
| 66 | # Install apache and mod_wsgi. Also install genshi and setuptools for Python3 if not already installed: |
||
| 67 | <pre> |
||
| 68 | $ sudo aptitude install apache2 libapache2-mod-wsgi-py3 python3-genshi python3-setuptools |
||
| 69 | </pre> |
||
| 70 | # Install bmklib |
||
| 71 | <pre> |
||
| 72 | $ cd /home/dsorber/Documents/phalanx-repo/software/bookmark_library |
||
| 73 | $ sudo python3 setup.py install |
||
| 74 | </pre> |
||
| 75 | # Run the web interface install script to install the web interface: |
||
| 76 | <pre> |
||
| 77 | $ cd bmklib/web |
||
| 78 | $ sudo ./install.sh |
||
| 79 | </pre> |
||
| 80 | |||
| 81 | h2. TODO |
||
| 82 | |||
| 83 | * -all bookmarks page- |
||
| 84 | ** -pagination- |
||
| 85 | * all tags page |
||
| 86 | * display bookmark info page |
||
| 87 | ** add new bookmark |
||
| 88 | * search |
||
| 89 | |||
| 90 | h2. Development Log |
||
| 91 | |||
| 92 | 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. |
||
| 93 | |||
| 94 | * *July 5, 2015* |
||
| 95 | ** 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. |
||
| 96 | ** 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. |
||
| 97 | * *April 4, 2015* |
||
| 98 | ** I finally figured out how to deal with "wsgi.input":http://webpython.codepoint.net/wsgi_request_parsing_post |
||
| 99 | ** "301 Redirect response":http://stackoverflow.com/questions/2285879/how-do-i-redirect-domain-com-to-www-domain-com-under-django |
||
| 100 | ** It's been far too long, I need to work on this more often! |
||
| 101 | * '''December 6, 2014''' |
||
| 102 | ** IDEA: add master @try@ @except@ block in .wsgi file to catch and display errors via the web interface |
||
| 103 | |||
| 104 | h2. References |
||
| 105 | |||
| 106 | * http://www.sqlite.org/spellfix1.html |
||
| 107 | |||
| 108 | ---- |
||
| 109 | Back [[../|home]] |