Keep track of your progress towards your book-reading goal.
Project description
Bookworm – a reading tracker
Bookworm is a command-line application that allows you to set a book reading goal and keep track of your progress towards completing that goal. This is done by giving recommendations on how much you should read to stay on track towards goal completion.
Example
user$ bookworm
You are 16 days ahead on your goal to read 35 books by January 1, 2022
You have completed 10 books so far.
Fulfill one of these recommendations to stay on track:
2. Data Structures & Algorithms in Python – You need to read from page 171 to page 208 today.
3. The Great Game – You need to read from 7:07:37 to 8:26:46 today.
6. A Tale of Two Cities – You need to read from 69% to 76% today.
8. Invisible Women: Data Bias In A World Designed For Men – You need to read from 4:53:59 to 5:37:49 today.
Table of Contents
Installation & Initial Setup
Bookworm is available through PyPi and can be installed with pip
$ pip install bkwrm
Setting a goal
Once successfully installed, the program can be invoked by typing bookworm
into the command line.
$ bookworm
If you do not have a goal set, this command will walk you through the goal set-up process.
$ bookworm
How many books would you like to read? >>> 30
By when do you want to achieve this goal? [YYYY-MM-DD] >>> 2022-01-01
If you already have a goal set, the bookworm
command will give you recommendations to help you stay on track.
Guide
Adding your first book
You can add a book by invoking the add_book
or ab
command for short.
Three additional arguments are required: title, pages read, and total pages.
$ bookworm ab "The Future Is Faster Than You Think" 12 269
Note: The title must be placed inside quotation marks if longer than one word. Total pages must be greater than pages read.
Adding Audiobooks with length measured in time, and (e-)Books measured in per cent complete
Not all books have pages and page numbers. Bookworm allows you to add books with lengths measured in hours (HH:MM:SS), and per cent complete (out of 100).
To change the way book length is measured, use the -f
or -FORMAT
tag.
There are three formats to choose from:
book
orb
(the default), for books measured in pages.audiobook
orab
, for books measured in time (HH:MM:SS)ebook
oreb
, for books measured in per centage.
Example 1 (Audiobooks):
$ bookworm ab -f ab "Deng Xiaoping and the Transformation of China" 2:13:16 32:37:49
Example 2 (E-Books):
$ bookworm ab -f eb "The Skeptics Guide to the Universe" 78 100
(note: no per centage other than 100 can be selected for e-books)
WARNING: Once you have selected a format, there is no way to change it later.
Updating a book
When you call bookworm
you will be shown reading recommendations
user$ bookworm
You are 16 days ahead on your goal to read 35 books by January 1, 2022
You have completed 10 books so far.
Fulfill one of these recommendations to stay on track:
2. Data Structures & Algorithms in Python – You need to read from page 171 to page 208 today.
3. The Great Game – You need to read from 7:07:37 to 8:26:46 today.
6. A Tale of Two Cities – You need to read from 69% to 76% today.
8. Invisible Women: Data Bias In A World Designed For Men – You need to read from 4:53:59 to 5:37:49 today.
In the example above, the numbers 2, 3, 6, and 8 are known as the IDs of the book. As opposed to writing the title every time you want to update your reading progress, you will use this ID.
To update your reading progress, add the command update_book
or up
or ub
, choose the ID of the book you
want to update, and add in a page number.
In the example above, to update A Tale of Two Cities (ID #6) so that it is 81% read, you would do the following
$ bookworm up 6 81
This will update your reading progress and give you new recommendations. To update Audiobooks, add in your progress in HH:MM:SS.
$ bookworm up 8 6:02:04
Dropping a book
For the time being, once you start a book you are obligated to complete it! The ability to drop books is planned for future releases.
Getting recommendations
Typing bookworm
will get you the reading recommendations you need to stay on track.
user$ bookworm
You are 16 days ahead on your goal to read 35 books by January 1, 2022
You have completed 10 books so far.
Fulfill one of these recommendations to stay on track:
2. Data Structures & Algorithms in Python – You need to read from page 171 to page 208 today.
3. The Great Game – You need to read from 7:07:37 to 8:26:46 today.
6. A Tale of Two Cities – You need to read from 69% to 76% today.
8. Invisible Women: Data Bias In A World Designed For Men – You need to read from 4:53:59 to 5:37:49 today.
If you are ahead on your goal ("You are 16 days ahead on your goal"), recommendations will be made so that if you followed through on them, you will be an additional day ahead on your goal. In this case, 17 days ahead.
In the case you are behind on your goal, recommendations will be made so that if you followed throgh on them, you would have caught up to where you should be: neither behind or ahead, but on track.
If you are very behind on your goal, but want a small achievable goal you can reach, typing in bookworm next_day
or bookworm nd
will give you recommendations so that you are one less day behind on your goal.
user$ bookworm nd
You are -40 days behind on your goal to read 30 books by January 1, 2022
You have completed 10 books so far.
7. India After Gandhi – You need to read from page 20 to page 31 today.
12. Welcome to the Universe: An Astrophysical Tour – You need to read from page 47 to page 51 today.
In this case, following through on the above "next day" recommendations will drop the days behind counter from -40 to -39.
Commands
The following is a full list of commands and their options. This list can be accessed with bookworm -h
and a list
of arguments can be viewed with bookworm [command] -h
Goal commands
add_goal
- add a new book reading goal (you may only have one at a time).ag
- shorthand for add_goalupdate_goal
- make changes to the goal in progress (book goal, target date).ug
- shorthand for update_goal.
Book commands
add_book
- add a book to your self.ab
- shorthand for add_book.update_book
- update the properties of a book on your shelf.up
- shorthand for update_book.ub
- shorthand for update_book.drop_book
- drop or delete a book from the shelf. (unimplemented)db
- shorthand for drop_bookdp
- shorthand for drop_book
Recommendation commands
next_day
- get recommendations so that you are one day closer to completing your goal if you follow through.nd
- shorthand for next_day.all
- show list of recommendations as well as list of books you have already completed (hidden by default).
Licence
The source code for this app is licensed under the MIT licence, which you can find in the LICENCE file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file bkwrm-0.2.0.0.tar.gz
.
File metadata
- Download URL: bkwrm-0.2.0.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | abc6ae400065a15992ab08d229be6316628190e086b92692721d1006e1ad07c8 |
|
MD5 | 5d4e6f5b286ee4780e54e0999084b4a4 |
|
BLAKE2b-256 | c7439cfb29d2d8a625e0f7123aca0b5ec2a81f76ae6ea804655caf1434cff55f |
File details
Details for the file bkwrm-0.2.0.0-py3-none-any.whl
.
File metadata
- Download URL: bkwrm-0.2.0.0-py3-none-any.whl
- Upload date:
- Size: 22.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04ad64ecc205293d27fb2afa91700293e29589e2065c0955cdf40aa92c62a75b |
|
MD5 | 187d09ea9a53f4e10d7b540838900d2a |
|
BLAKE2b-256 | 23b3b1faa5aac02c6d9317faa2cda8b1b1d652f707c1ae78be710d56fb6c5a2d |