-
-
Notifications
You must be signed in to change notification settings - Fork 22
Closed
Labels
Area: CodeIt's got something to do with codeIt's got something to do with codeenhancementLet's make it better!Let's make it better!fixedIt's fixed!It's fixed!good first issueIf you're interested in contributing, try these issues first.If you're interested in contributing, try these issues first.
Description
It would be cool if we could have a configurable setting to display the estimated reading time for a page. Firefox's reader mode does this already, and with some effort I've tracked down the algorithm they use.
The relevant lines are as follows:
_assignReadTime(article) {
let lang = article.language || "en";
const readingSpeed = this._getReadingSpeedForLanguage(lang);
const charactersPerMinuteLow = readingSpeed.cpm - readingSpeed.variance;
const charactersPerMinuteHigh = readingSpeed.cpm + readingSpeed.variance;
const length = article.length;
article.readingTimeMinsSlow = Math.ceil(length / charactersPerMinuteLow);
article.readingTimeMinsFast = Math.ceil(length / charactersPerMinuteHigh);
},
/**
* Returns the reading speed of a selection of languages with likely variance.
*
* Reading speed estimated from a study done on reading speeds in various languages.
* study can be found here: http://iovs.arvojournals.org/article.aspx?articleid=2166061
*
* @return object with characters per minute and variance. Defaults to English
* if no suitable language is found in the collection.
*/
_getReadingSpeedForLanguage(lang) {
const readingSpeed = new Map([
["en", { cpm: 987, variance: 118 }],
["ar", { cpm: 612, variance: 88 }],
["de", { cpm: 920, variance: 86 }],
["es", { cpm: 1025, variance: 127 }],
["fi", { cpm: 1078, variance: 121 }],
["fr", { cpm: 998, variance: 126 }],
["he", { cpm: 833, variance: 130 }],
["it", { cpm: 950, variance: 140 }],
["jw", { cpm: 357, variance: 56 }],
["nl", { cpm: 978, variance: 143 }],
["pl", { cpm: 916, variance: 126 }],
["pt", { cpm: 913, variance: 145 }],
["ru", { cpm: 986, variance: 175 }],
["sk", { cpm: 885, variance: 145 }],
["sv", { cpm: 917, variance: 156 }],
["tr", { cpm: 1054, variance: 156 }],
["zh", { cpm: 255, variance: 29 }],
]);
We might want to reverse-engineer Firefox's reader mode to make sure our estimate is hidden though when you enter reader mode too.
Perhaps adding some settings like reading_time_display
and reading_time_language
would work.
Adding a note to the credits might be a good idea too.
Metadata
Metadata
Assignees
Labels
Area: CodeIt's got something to do with codeIt's got something to do with codeenhancementLet's make it better!Let's make it better!fixedIt's fixed!It's fixed!good first issueIf you're interested in contributing, try these issues first.If you're interested in contributing, try these issues first.