Cómo estimar con mayor precisión el tiempo de lectura de artículos de Medium en JavaScript

Introducción

La estimación del tiempo de lectura es la estimación del tiempo que tarda el lector en leer un artículo. Ha sido parte de las funciones principales de Medium desde su lanzamiento en 2013.

Como se explica en el New Yorker :

Cuanto más sepamos sobre algo, incluido precisamente cuánto tiempo consumirá, mayores serán las posibilidades de que nos comprometamos con él.

Saber de antemano cuánto tiempo tardará en leerse un artículo nos ayuda a gestionar mejor el tiempo al permitirnos planificar más adelante.

¿Por qué debería utilizar un nuevo script?

Sí, hay muchas bibliotecas de código abierto disponibles en npmpero contienen varios defectos.

Antes de eso, echemos un vistazo a estos dos artículos en Medium.

  • Tiempo de lectura: soporte medio
  • Leer el tiempo y tú

Los dos artículos anteriores tienen las siguientes características clave

  • Tiempo medio de lectura (inglés): 265 palabras por minuto
  • Tiempo medio de lectura (chino, japonés y coreano): 500 caracteres / min
  • Tiempo de lectura de imagen: 12 segundos para la primera imagen, 11 para la segunda y menos un segundo adicional para cada imagen posterior. Otras imágenes contadas a los 3 segundos.

La mayoría de las bibliotecas no tienen en cuenta completamente las características anteriores. Utilizan cadenas HTML tal cual sin omitir los nombres de las etiquetas, lo que aumenta la desviación de la estimación del valor original.

Código

El código se puede dividir en tres partes:

  • Constantes
  • Utilidad
  • Principal

Constantes

Las constantes se pueden utilizar por defecto para la función principal. La etiqueta de imagen tiene un uso propio que se definirá más adelante.

Funciones de utilidad

  1. Strip WhiteSpace

Es una función de utilidad simple para eliminar todos los espacios en blanco iniciales y finales de la cadena proporcionada.

2. Tiempo de lectura de la imagen

Analiza la cadena, busca cualquier etiqueta de imagen HTML basada en los valores predeterminados proporcionados en las constantes y devuelve el recuento.

Si el recuento de imágenes es mayor que 10, calculamos el tiempo de lectura de la imagen de las primeras 10 imágenes en progresión aritmética decreciente a partir de 12 segundos / customReadTimeproporcionada por el usuario usando la fórmula simple n * (a+b) / 2 y 3 segundos para las imágenes restantes.

3. Tiras de etiquetas

A continuación, buscamos etiquetas HTML (ambas) en la cadena y la eliminamos para extraer solo las palabras.

4. Tiempo de lectura de palabras

Esta función de utilidad calcula el recuento de palabras y los caracteres chinos / coreanos y japoneses utilizando el rango de caracteres Unicode diferente .

El tiempo se calcula dividiéndolo con las constantes definidas anteriormente.

5. Humanizar el tiempo

Basándonos en la distancia de tiempo en palabras, podemos calcular y devolver la duración humanizada del tiempo que se tarda en leer.

Principal

La función principal solo consolida todos los métodos de utilidad en el orden correcto.

¿Qué tan preciso es este guión?

Realización de las pruebas en la cadena HTML (del inspector de Chrome) antes de esta sección de artículo.

Las pruebas y las páginas dan claramente la estimación correcta sobre el total de palabras del HTML analizado y el número de imágenes.

Enlaces

He consolidado el código completo en GitHub. También está disponible como un paquete npm read-time-estimat.

Se pueden encontrar más cosas interesantes en mis perfiles de StackOverflow y GitHub .

Sígueme en LinkedIn , Medium , Twitter para obtener más actualizaciones sobre nuevos artículos.

¿Un aplauso, dos aplausos, tres aplausos, cuarenta?

Publicado originalmente en blog.pritishvaidya.com el 30 de enero de 2019.