jueves, 16 de junio de 2011

Filled Under: ,

Calcular y mostrar el tiempo de lectura de un post – dinero – Accident – coche

Lo que veremos hoy será un script que calcula las palabras e imágenes que incluye cada una de las entradas de un blog y que con ese dato, calcula y posteriormente muestra el tiempo aproximado que se tardará en leer el post completo.

Tiempo estimado para leer esta entrada: 01:37

Incluye un par de parámetros modificables para que cada cual los adapte a su gusto, ya que la velocidad de lectura varía considerablemente de una persona a otra. Aquí se ha estimado que 300 palabras por minuto para una lectura relativamente comprensiva y dos segundos para cada imagen, pueden ser una media aceptable.

El código se ha construido mediante una función JavaScript que, tras definir unos parámetros, secuencialmente hace lo siguiente:
  • captura el contenido del cuerpo principal del post (data:post.body) a través de una ID que habrá que asignar a cada uno
  • cuenta las imágenes que se usan (img.length)
  • elimina el código HTML que pueda llevar, mediante la localización de los caracteres
  • normaliza los espacios en blanco duplicados, al principio y al final, para convertirlos en únicos entre palabras
  • divide el texto cortando por dichos espacios blancos para contar finalmente palabras reales (split)
  • calcula el tiempo que llevaría leer esas palabras en función de los parámetros fijados al principio
  • devuelve un texto formateado con el cálculo resultante
Este es el algoritmo anterior una vez codificado y preparado para insertar antes de/head:

script type='text/javascript'
//![CDATA[
var palabrasporminuto = 300;
var imagenesporminuto = 30;

function tiempolectura(id) {
var contenidopost = document.getElementById(id);

var img = contenidopost.getElementsByTagName("img");
var numimg = img.length;

var strx = contenidopost.innerHTML;
if(strx.indexOf("")!=-1) {
var s = strx.split("");
for(var i=0;is.length;i++){
if(s[i].indexOf("")!=-1){
s[i] = s[i].substring(s[i].indexOf("")+1,s[i].length);
}
}
strx = s.join("");
}

var blancoinicial = /^ /;
var blancofinal = / $/;
var blancosjuntos = /[ ]+/g;
strx = strx.replace(blancosjuntos," ");
strx = strx.replace(blancoinicial,"");
strx = strx.replace(blancofinal,"");

var palabras = strx.split(" ");
var numpalabras = palabras.length;

var minutos = parseInt((numpalabras/palabrasporminuto)+(numimg/imagenesporminuto));
var segundos = parseInt((((numpalabras/palabrasporminuto)+(numimg/imagenesporminuto))-minutos)*60);
minutos=("0" + minutos).slice (-2);
segundos=("0" + segundos).slice (-2);

var devolver = "Tiempo estimado para leer esta entrada: "+minutos+":"+segundos;
document.getElementById("tiempolec").innerHTML = devolver;
}
//
/script

Una vez montado en nuestra plantilla y ahora conExpandir plantillas de artilugios seleccionado, buscamosdata:post.body/. Tenemos que meter esta variable en unDIV que incluya unaID única, para lo cual utilizaremos una variable de las mismas que ya usa Blogger (data:post.id). Previamente, para que salga al principio del post, colocaremos un párrafo sin contenido pero conid='tiempolec'. Gracias a esaID, ese párrafo será rellenado automáticamente con el resultado del script. Por último, la llamada a la función. Tal que así:

p id='tiempolec'/
div expr:id='data:post.id'
pdata:post.body//p
/div
script type='text/javascript'
tiempolectura("data:post.id/");
/script

Para cambiar el sitio dónde se mostrará el tiempo de lectura, sólo hay que reubicar el párrafop id='tiempolec'/ y dando estilo a#tiempolec, lo podéis destacar o cambiar por entero de formato.

En el primer trozo de código, los valores depalabrasporminuto eimagenesporminuto, son los que podéis cambiar a vuestro antojo. Con las palabras creo que no habrá demasiada discusión, aunque blogs con textos muy técnicos o incluso poesía, quizás deberían rebajar la cifra de 300 que yo he estimado. Pero con las imágenes ya es otra historia. Servidor ha calculado 2 segundos para cada una, lo que hace las 30 por minuto que se indican en el ejemplo.

Este es un pequeño reto que me lanzó hace unos díasPizcos y que debido a la utilidad práctica que puede tener y, sobre todo, a mi cabezonería incorregible, recogí con mucho gusto.

Online Christmas cards HOME PHONE INTERNET BUNDLE Donate Old Cars to Charity Casino miami personal injury attorney Donate Your Car Sacramento google affiliate WebEx costs Sell Annuity Payment canada personals yahoo Mortgage adviser Met Auto Hire php developers Best Criminal Lawyers in Arizona Online casino Casino reviews CRIMINAL DEFENSE ATTORNEYS FLORIDA Car insurance quotes MN Mortgage Adviser mesothelioma drug Custom WordPress theme designer structured settlement broker Christmas cards criminal defense federal lawyer cell cycle regulation ppt Life Insurance Co Lincoln workers compensation lawyer los angeles anti spam appliance Best social media platforms for business diagnosed with mesothelioma Mobile casino Auto Accident Attorney Criminal lawyer Miami boca raton personal injury attorney MOTOR REPLACEMENTS Make money online Australia Hard drive Data Recovery Services Personal Injury Law Firm Donate Car for Tax Credit Tech school new york mesothelioma law firm Online Classes Donate your car for kids Criminal Defense Attorneys Florida Cheap Domain Registration Hosting mesothelioma attorney california Live casino Cheap Auto Insurance in VA DUI lawyer personal injury attorney torrance Social media platforms for business data recovery raid structured settlement buyers Computer science classes online philadelphia mesothelioma lawyer Cheap Car Insurance for Ladies washington mesothelioma attorney Dallas mesothelioma attorneys Forensics online course mesotheioma Hire php programmers Dwi lawyer auto accident attorney domain yahoo car accident lawyer michigan mesothelioma law suits How to Donate A Car in California Criminal lawyer Social media platforms Auto Mobile Shipping Quote Holland Michigan College Home phone internet bundle Online Colleges Custom Christmas cards ANNUITY SETTLEMENT mesothelioma ct WORLD TRADE CENTER FOOTAGE Best Seo company Proud Italian cook Dayton freight lines Dallas Mesothelioma Attorneys Donate your Car for Money CAR ACCIDENT LAWYERS Seo company personal injury solicitor Service business software Criminal defense lawyer Dedicated Hosting Dedicated Server Hosting DAYTON FREIGHT LINES Futuristic Architecture royalty free images stock Php programmers for hire Hire php developer CAR DONATE Bankruptcy lawyer Annuity Settlements Social media tools harddrive data recovery services car accident lawyers los angeles Psd to WordPress Php programmers World trade center footage Photo Christmas cards mesotheliama Seo companies how to donate a car in california houston mesothelioma attorney buying structured settlements cheap car insurance in virginia New social media platforms Car Insurance in South Dakota Better Conference Calls Business finance group ASBESTOS LAWYERS mesothelioma lawyer chicago Car Insurance Quotes PA injury lawyers Car Insurance Quotes World Trade Center Footage Seo services houston motorcycle accident lawyer Dayton Freight Lines best consolidation loan student Donate cars Illinois personal accident attorney uk homeowner loans BEST CRIMINAL LAWYER IN ARIZONA mesothelioma suit Business management software Best social media platforms auto insurance cost by state injury lawyers west palm beach mesothelioma law firms insurance medical temporary WordPress theme designers truck accident attorney los angeles best structured settlement companies utah mesothelioma lawyer donate your car for money Car insurance quotes Colorado bowne virtual data room mesothelioma settlements amounts CHEAP AUTO INSURANCE IN VA WordPress themes for designers WordPress hosting online motor insurance quotes benchmark lending EMAIL BULK SERVICE Social media examiner mesothelioma cases Social media campaigns Social media management Html email life insurance co lincoln STRUCTURED ANNUITY SETTLEMENT asbestos lung cancer MET AUTO motorcycle accident lawyer california peritoneal mesothelioma Paperport Promotional Code Online Criminal Justice Degree Donate car to charity California Personal Injury Lawyer Psd to html Italian cooking school donate your car for kids criminal defense attorneys florida event management security Health Records Personal Health Record Adobe illustrator classes Social media strategies Learning adobe illustrator home phone internet bundle HARDDRIVE DATA RECOVERY SERVICES Mesothelioma Law Firm Donate Car to Charity California florida car insurance company Donate Cars in MA CAR INSURANCE QUOTES PA Donate Your Car for Kids Online College Course alcohol rehab center in florida mesothelioma survival rates Asbestos Lawyers Structures Annuity Settlement Car Insurance Quotes Colorado SELL ANNUITY PAYMENT Register free domains Best criminal lawyer in Arizona Nunavut Culture student loan consolidation program verizon sip AUTOMOBILE ACCIDENT ATTORNEY Donate a Car in Maryland Motor Replacements business voip solutions Donating a Car in Maryland structured settlement brokers Donate Cars Illinois ONLINECLASSES Home Phone Internet Bundle low credit line credit cards DONATING A CAR IN MARYLAND Car Insurance Quotes Utah motorcycle lawyer los angeles Online Motor Insurance Quotes structured annuity settlement miami personal injury lawyer state of california car insurance Car insurance quotes pa