1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
# readtime
[](https://github.com/alanhamlett/readtime/actions/workflows/tests.yml)
[](https://codecov.io/gh/alanhamlett/readtime)
Calculates the time some text takes the average human to read, based on Medium's [read time forumula](https://help.medium.com/hc/en-us/articles/214991667-Read-time).
### Algorithm
Medium's Help Center says,
> Read time is based on the average reading speed of an adult (roughly 265 WPM). We take the total word count of a post and translate it into minutes, with an adjustment made for images. For posts in Chinese, Japanese and Korean, it's a function of number of characters (500 characters/min) with an adjustment made for images.
Source: https://help.medium.com/hc/en-us/articles/214991667-Read-time (Read Sept 23rd, 2018)
Double checking with real articles, the English algorithm is:
seconds = num_words / 265 * 60 + img_weight * num_images
With `img_weight` starting at `12` and decreasing one second with each image encountered, with a minium `img_weight` of `3` seconds.
### Installation
virtualenv venv
. venv/bin/activate
pip install readtime
Or if you like to live dangerously:
sudo pip install readtime
### Usage
Import `readtime` and pass it some text, HTML, or Markdown to get back the time it takes to read:
>>> import readtime
>>> result = readtime.of_text('The shortest blog post in the world!')
>>> result.seconds
2
>>> result.text
u'1 min'
The result can also be used as a string:
>>> str(readtime.of_text('The shortest blog post in the world!'))
u'1 min read'
To calculate read time of Markdown:
>>> readtime.of_markdown('This is **Markdown**')
1 min read
To calculate read time of HTML:
>>> readtime.of_html('This is <strong>HTML</strong>')
1 min read
To customize the WPM (default 265):
>>> result = readtime.of_text('The shortest blog post in the world!', wpm=5)
>>> result.seconds
96
>>> result.text
u'2 min'
>>> result.wpm
5
### Contributing
Before contributing a pull request, make sure tests pass:
virtualenv venv
. venv/bin/activate
pip install tox
tox
Many thanks to all [contributors](https://github.com/alanhamlett/readtime/blob/master/AUTHORS)!
|