niedziela, sierpnia 31, 2014

[Updated] Czytanie Pocketa ;-)

W moim Pocket jest parę tysięcy artykułów do przeczytania....
Szanse na to, że je wszystkie przeczytam są bliskie zeru (musiałbym chyba już teraz czytać z 3-4 miesiące non-stop).
Dlatego czasami słucham artykułów.
Na Androidzie jest to proste, ale czasem potrzebuję tego na PC.

Tutaj pomocny przychodzi skryptozakładka, której kod wygląda tak:

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); speechSynthesis.speak(u); }; var elems = document.getElementById("content").innerText.split("."); var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}

Cała idea jej działania polega na tym, że najpierw pobierana jest treść wpisu (wraz z tytułem i paroma dziwnymi rzeczami), później treść wpisu dzielona jest na zdania i w końcu są one czytane.

Wszystko działa na Chrome.

Czasem może dostać zadyszki i wtedy ratuje nas tylko speechSynthesis.cancel() w konsoli JavaScript.

Należy jej używać będąc w artykule w Pocket.
Kod powyżej należy wkleić do skryptozakładki (jak zakładka tyle, że zamiast adresu strony ma to co wyżej).

Update:
Nowa wersja skryptozakładki:

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); speechSynthesis.speak(u); }; var elems1 = document.getElementById("content").innerText.split("\n"); var elems=[]; for (var i=0; i<elems1.length; i++) { var el = elems1[i].split("."); for (var j=0; j<el.length; j++) elems.push(el[j]);}; var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}

Update2:
Coby mieć pewność, że czytanie będzie po angielsku trzeba dodać jeszcze jedną rzecz do skryptozakładki :-)

javascript:{function speak(txt) { var u = new SpeechSynthesisUtterance(txt); u.lang="en-US"; speechSynthesis.speak(u); }; var elems1 = document.getElementById("content").innerText.split("\n"); var elems=[]; for (var i=0; i<elems1.length; i++) { var el = elems1[i].split("."); for (var j=0; j<el.length; j++) elems.push(el[j]);}; var idx=0; function s() { if (!speechSynthesis.speaking) speak(elems[idx++]); if (idx<elems.length) setTimeout(s,100);}; s();}


Podobne postybeta
HTML5 goodies - localStorage
localStorage odsłona 2 - zaczynają się kłopoty ;-)
Sekrety klasy String ;-)
Matematyczne podstawy zakupu skarpetek ;-)
Zinwigiluj się sam ;-)