• Stars
    star
    122
  • Rank 290,324 (Top 6 %)
  • Language
    Python
  • License
    Other
  • Created about 8 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Calculates the time some text takes the average human to read, based on Medium's read time forumula.

readtime

Tests Coverage

Calculates the time some text takes the average human to read, based on Medium's read time formula.

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
"1 min"

The result can also be used as a string:

>>> str(readtime.of_text("The shortest blog post in the world!"))
"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
"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!

More Repositories

1

pip-update-requirements

Update the packages in a requirements.txt file.
Python
604
star
2

flask-static-compress

Auto-detects your static files for minification, combination, and versioning. Like Django-Compressor for Flask.
Python
41
star
3

dotfiles

install my Vim config by pasting some Terminal commands
Vim Script
29
star
4

eufy-garage-door-watcher

Send yourself an email whenever the garage door is left open, using a Eufy Security door sensor.
Python
17
star
5

CLMapper

Craigslist posts shown on a map while viewing Craigslist housing.
JavaScript
16
star
6

jQuery-Picasa-Gallery

jQuery plugin widget that displays your public picasa web albums.
JavaScript
15
star
7

alanhamlett

public profile readme
13
star
8

AwayMail-Irssi-Plugin

send an email notification when someone says your name or sends you a pm on an IRC server
Perl
12
star
9

eufy-security-dashboard

Eufy Security iOS app for displaying camera and door sensors on a dashboard, with auto-refresh.
Swift
11
star
10

BeeLine

Chrome extension that makes reading easier by color-coding lines on the page
JavaScript
3
star
11

purpleair-notify

Watch this repo to receive an email whenever PurpleAir sensor(s) go over an air quality PM2.5 threshold.
TypeScript
2
star
12

alanhamlett.github.com

my personal website
Rich Text Format
2
star
13

codepath-ios-ex1

Assignment 1
Swift
1
star
14

hackathonranks

JavaScript
1
star
15

wonderful

1
star
16

github-issue-polls

Easily add a poll/survey and collect votes from GitHub issues
Python
1
star
17

gedit-hilight

gedit plugin to highlight all occurances of selected text
Python
1
star