Skip to main content

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 abcommand 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 or b (the default), for books measured in pages.
  • audiobook or ab, for books measured in time (HH:MM:SS)
  • ebook or eb, 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 upor 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_goal
  • update_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_book
  • dp - 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bkwrm-0.2.0.0.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

bkwrm-0.2.0.0-py3-none-any.whl (22.3 kB view details)

Uploaded Python 3

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

Hashes for bkwrm-0.2.0.0.tar.gz
Algorithm Hash digest
SHA256 abc6ae400065a15992ab08d229be6316628190e086b92692721d1006e1ad07c8
MD5 5d4e6f5b286ee4780e54e0999084b4a4
BLAKE2b-256 c7439cfb29d2d8a625e0f7123aca0b5ec2a81f76ae6ea804655caf1434cff55f

See more details on using hashes here.

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

Hashes for bkwrm-0.2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 04ad64ecc205293d27fb2afa91700293e29589e2065c0955cdf40aa92c62a75b
MD5 187d09ea9a53f4e10d7b540838900d2a
BLAKE2b-256 23b3b1faa5aac02c6d9317faa2cda8b1b1d652f707c1ae78be710d56fb6c5a2d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page