Как более точно оценить время чтения статей Medium в JavaScript

Введение

Оценка времени прочтения - это оценка времени, затраченного читателем на чтение статьи. Он был частью основных функций Medium с момента его запуска в 2013 году.

Как поясняет New Yorker :

Чем больше мы о чем-то знаем - включая точно, сколько времени это займет - тем больше шансов, что мы посвятим себя этому.

Если заранее знать, сколько времени уйдет на чтение статьи, это поможет нам лучше управлять временем, позволяя нам планировать дальше.

Зачем мне использовать новый скрипт?

Да, на npm доступно множество библиотек с открытым исходным кодомно они содержат несколько недостатков.

Перед этим давайте взглянем на эти две статьи на Medium.

  • Время чтения - средняя поддержка
  • Читать время и вы

Две приведенные выше статьи имеют следующие ключевые особенности

  • Среднее время чтения (английский) - 265 слов в минуту
  • Среднее время чтения (китайский, японский и корейский) - 500 символов / мин.
  • Время чтения изображения - 12 секунд для первого изображения, 11 для второго и минус дополнительная секунда для каждого последующего изображения. Остальные изображения рассчитаны на 3 секунды.

Большинство библиотек не полностью учитывают вышеуказанные функции. Они используют строки HTML как есть, не пропуская имена тегов, что увеличивает отклонение оценки от исходного значения.

Код

Код можно разделить на три части:

  • Константы
  • Полезность
  • Основной

Константы

Константы можно использовать по умолчанию для основной функции. Тег изображения имеет собственное использование, которое будет определено позже.

Служебные функции

  1. Полоса WhiteSpace

Это простая служебная функция для удаления всех начальных и конечных пробелов из предоставленной строки.

2. Время чтения изображения

Он анализирует строку, ищет любые HTML-теги изображений на основе значений по умолчанию, указанных в константах, и возвращает счетчик.

Если количество изображений больше 10, мы вычисляем время считывания первых 10 изображений в порядке убывания арифметической прогрессии, начиная с 12 секунд / customReadTimeпредоставленных пользователем с использованием простой формулы n * (a+b) / 2 и 3 секунд для остальных изображений.

3. Удалить теги

Затем мы проверяем наличие любых HTML-тегов (обоих) в строке и удаляем ее, чтобы извлечь из нее только слова.

4. Время чтения слов

Эта служебная функция вычисляет количество слов и китайские / корейские и японские символы, используя другой диапазон символов Юникода .

Время рассчитывается путем деления на константы, определенные выше.

5. Очеловечивание времени

Основываясь на расстоянии времени в словах, мы можем вычислить и вернуть гуманизированную продолжительность времени, затраченного на чтение.

Основной

Функция main только объединяет все служебные методы в правильном порядке.

Насколько точен этот сценарий?

Выполнение тестов для строки HTML (из инспектора Chrome) перед этим разделом статьи.

Тесты и страницы четко дают правильную оценку общего количества слов из проанализированного HTML и количества изображений.

Ссылки

Я собрал полный код на GitHub. Он также доступен как оценка времени чтения пакета npm.

Больше интересных вещей можно найти в моих профилях StackOverflow и GitHub .

Следуйте за мной в LinkedIn , Medium , Twitter, чтобы получать обновления для новых статей.

Один хлопок, два хлопка, три хлопка, сорок?

Первоначально опубликовано на blog.pritishvaidya.com 30 января 2019 г.