Πώς να εκτιμήσετε με μεγαλύτερη ακρίβεια τον χρόνο ανάγνωσης για άρθρα Medium σε JavaScript

Εισαγωγή

Read Time Estimate είναι η εκτίμηση του χρόνου που αφιερώνει ο αναγνώστης για να διαβάσει ένα άρθρο. Αποτελεί μέρος των βασικών χαρακτηριστικών του Medium από την κυκλοφορία του το 2013.

Όπως εξηγείται στο New Yorker :

Όσο περισσότερο γνωρίζουμε για κάτι - συμπεριλαμβανομένου του ακριβούς χρόνου που θα καταναλώσει - τόσο μεγαλύτερη είναι η πιθανότητα να δεσμευτούμε για αυτό.

Γνωρίζοντας εκ των προτέρων πόσο καιρό θα χρειαστεί ένα άρθρο για ανάγνωση βοηθά στην καλύτερη διαχείριση του χρόνου, επιτρέποντάς μας να σχεδιάσουμε περαιτέρω μπροστά.

Γιατί να χρησιμοποιήσω ένα νέο σενάριο;

Ναι, υπάρχουν πολλές βιβλιοθήκες ανοιχτού κώδικα διαθέσιμες στο npmαλλά περιέχουν πολλά ελαττώματα.

Πριν από αυτό, ας ρίξουμε μια ματιά σε αυτά τα δύο άρθρα στο Medium.

  • Χρόνος ανάγνωσης - Μεσαία υποστήριξη
  • Διαβάστε το Time and You

Τα παραπάνω δύο άρθρα έχουν τα ακόλουθα βασικά χαρακτηριστικά

  • Μέσος χρόνος ανάγνωσης (Αγγλικά) - 265 λέξεις ανά λεπτό
  • Μέσος χρόνος ανάγνωσης (κινέζικα, ιαπωνικά και κορεατικά) - 500 χαρακτήρες / λεπτό
  • Χρόνος ανάγνωσης εικόνας - 12 δευτερόλεπτα για την πρώτη εικόνα, 11 για τη δεύτερη και μείον ένα επιπλέον δευτερόλεπτο για κάθε επόμενη εικόνα. Άλλες εικόνες μετρήθηκαν σε 3 δευτερόλεπτα.

Οι περισσότερες βιβλιοθήκες δεν λαμβάνουν πλήρως υπόψη τις παραπάνω δυνατότητες. Χρησιμοποιούν τις συμβολοσειρές HTML ως έχουν χωρίς να παραλείπουν τα ονόματα ετικετών που αυξάνουν την απόκλιση της εκτίμησης από την αρχική τιμή.

Κώδικας

Ο κωδικός μπορεί να χωριστεί σε τρία μέρη:

  • Σταθερές
  • Χρησιμότητα
  • Κύριος

Σταθερές

Οι σταθερές μπορούν να χρησιμοποιηθούν ως προεπιλογές στην κύρια λειτουργία. Η ετικέτα εικόνας έχει τη δική της χρήση που θα καθοριστεί αργότερα.

Λειτουργίες χρησιμότητας

  1. Strip WhiteSpace

Είναι μια απλή βοηθητική λειτουργία για την αφαίρεση όλων των κενών και τελικών κενών διαστημάτων από την παρεχόμενη συμβολοσειρά.

2. Χρόνος ανάγνωσης εικόνας

Αναλύει τη συμβολοσειρά, αναζητά ετικέτες εικόνας HTML βάσει των προεπιλογών που παρέχονται στις σταθερές και επιστρέφει τον αριθμό.

Εάν ο αριθμός των εικόνων είναι μεγαλύτερος από 10, υπολογίζουμε τον χρόνο ανάγνωσης της εικόνας των πρώτων 10 εικόνων σε μείωση της αριθμητικής εξέλιξης ξεκινώντας από 12 δευτερόλεπτα / customReadTimeπαρέχεται από τον χρήστη χρησιμοποιώντας τον απλό τύπο n * (a+b) / 2 και 3 δευτερόλεπτα για τις υπόλοιπες εικόνες.

3. Ετικέτες Strip

Στη συνέχεια, ελέγχουμε τυχόν ετικέτες HTML (και τα δύο) στη συμβολοσειρά και τις αφαιρούμε για να εξαγάγουμε μόνο τις λέξεις από αυτήν.

4. Χρόνος ανάγνωσης λέξεων

Αυτή η βοηθητική λειτουργία υπολογίζει τον αριθμό λέξεων και τους κινέζους / κορεατικούς και ιαπωνικούς χαρακτήρες χρησιμοποιώντας το διαφορετικό εύρος χαρακτήρων Unicode .

Ο χρόνος υπολογίζεται διαιρώντας τον με τις σταθερές που ορίζονται παραπάνω.

5. Εξανθρωπισμός του χρόνου

Με βάση την απόσταση του χρόνου σε λέξεις, μπορούμε να υπολογίσουμε και να επιστρέψουμε την εξανθρωπισμένη διάρκεια του χρόνου που απαιτείται για την ανάγνωση.

Κύριος

Η κύρια λειτουργία ενοποιεί μόνο όλες τις μεθόδους χρησιμότητας με τη σωστή σειρά.

Πόσο ακριβές είναι αυτό το σενάριο;

Πραγματοποίηση δοκιμών στη συμβολοσειρά HTML (από τον επιθεωρητή Chrome) πριν από αυτήν την ενότητα άρθρου.

Οι δοκιμές και οι σελίδες δίνουν ξεκάθαρα τη σωστή εκτίμηση σχετικά με τις συνολικές λέξεις από το αναλυμένο HTML και τον αριθμό των εικόνων.

Συνδέσεις

Έχω ενοποιήσει τον πλήρη κώδικα στο GitHub. Είναι επίσης διαθέσιμο ως εκτίμηση χρόνου ανάγνωσης πακέτου npm.

Περισσότερα από τα ωραία πράγματα μπορούν να βρεθούν στα προφίλ μου StackOverflow και GitHub .

Ακολουθήστε με στο LinkedIn , Medium , Twitter για περαιτέρω ενημέρωση νέων άρθρων.

Ένα χειροκρότημα, δύο χειροκρότημα, τρία χειροκρότημα, σαράντα;

Αρχικά δημοσιεύθηκε στο blog.pritishvaidya.com στις 30 Ιανουαρίου 2019.