Jak si nechat poslat článek z webu do Kindlu
Už z nadpisu dýchá mimoděkismus jako prase, takže ano, koupil jsem Kindle 3. A teď už hurá k věci. Jedna z prvních věcí, po které jsem pátral, bylo, jak si nechat poslat článek z nějaké webové stránky do Kindlu. Přitom jsem vyžadoval jednu věc: one-click řešení. Prostě jednou kliknu nebo stisknu jednu klávesovou zkratku a už se mi to posílá do Kindlu. To je to, oč tu běží.
Postupně jsem zkusil několik možností jako například Instapaper, který vypadal vhodně, ale neuměl článek poslat do Kindlu hned, jen v nějakých denních intervalech. A stejně to nebylo úplně 100% funkční, něco mi tam pořád nějak divně blblo.
Pak jsem objevil RekindleIT, což na první pohled vypadalo geniálně. Povolili jste jejich adresu ve svém Kindle účtu, klikli jste na jeden bookmarklet, vyplnil svou adresu, klikli jste na „send file“ a … nic. Ale jinak to vypadalo bezvadně. I když to stále nebylo one-click řešení.
Tak jsem si řekl, co si nenapíšu, to nemám. Nechat si poslat celou webovou stránku je celkem jednoduché, ale já si chtěl nechat poslat jen článek, tedy něco jako dělá funkce Reader v Safari. Inu, strejda Google pomohl a objevil jsem skvělou knihovnu PHP Readability, která dělá přesně to, co její javascriptový bratříček.
Slovo dalo slovo, středník dal středník a za pár minut vzniklo několik stovek kilobajtů kvalitního objektového kódu, který dělá přesně to, co jsem potřeboval. Tedy že: vezme na vstupu URL, stáhne stránku, vytáhne z toho článek, je-li to možné a pošle daný článek na mou Kindle adresu, tam se to překonvertuje do nějakého Kindlovského formátu a pošle se mi to zpět do mého Kindlu, který si to přes WiFi stáhne. Trochu mi to připomíná jednu scénku s lampičkou v Big Bang Theory :-).
Na samotné odesílání jsem ještě použil Nette Mailer, protože se mi nechtělo zkoumat nic jiného. Což má za následek, že jsem k mým pár řádkům kódu přilepil 400KB framewrok. No co, no.
Nehodlám to provozovat jako nějakou veřejně přístupnou službu, nicméně výsledek si můžete stáhnout. Stačí to nahrát na server s PHP, upravit soubor index.php, kde musíte přepsat emailové adresy na své a to je vše. Ty emailové adresy: jako první je emailové adresa odesílatele. Tato adresa musí mít povoleno posílat soubory do toho Amazoňáckého konvertoru. Druhý email je váš Kindle email, tj. email, na který posíláte soubory, když je chcete nechat překonvertovat. Je to psáno horkou jehlou, na ošetření chyb jsem samozřejmě kašlal, takže sem tam se možná něco pokazí. Například nemusí mít práva pro zápis souboru, atp.
Tohle celé je hezké, ale ještě tomu něco chybí. Samozřejmě je ještě potřeba javascriptový bookmarklet do prohlížeče. Tady je!
javascript:win%20=%20window.open("http://yourweb.example.com/kindle/?url="%20+%20encodeURIComponent(document.location.href),%20"_blank",%20"width=60,height=50");setTimeout('win.close()',1000);%20void(0);
(Bookmarklet když tak ještě ke stažení tu.) Co to dělá — otevře to vaši stránku, kde máte nahrané předchozí skripty, předá to v URL parametru adresu článku, který chcete stáhnout a za sekundu to zavře. Klasické one-click řešení. Opět neřeším nějaké ošetření, když se to nepodaří poslat, spíš mi vyhovuje, že okno jen problikne, tj. vím, že jsem na ten bookmarklet fakt klikl a dál už to neřeším. V tom kódu musíte pochopitelně přepsat example.com adresu na vaši stránku.
Všechny použité knihovny a cizí kódy jsou pod stejnou licencí, v jaké jsem je získal a všechny mé kódy (tj. soubor index.php a KindleMailer.php) jsou poskytovány pod licencí WTFPL — Do What The Fuck You Want To Public License. Pokud tohle řešení nedejbože opravdu použijte (opravdu jste dočetli až sem?) a nedejbože^2 ho nějak vylepšíte, tak dejte vědět do komentářů nebo nějak jinak.
Pokud existuje stejná služba/kód, který dělá totéž a lépe, tedy že jsem toto psal zbytečně, tak dejte taky vědět. Ale musí to být fakt one-click řešení, různých five-clicks řešení jsem našel hromadu :-).
OK, udělal jsem ještě stránku, kde si můžete otestovat, jak to funguje. Je to jen pro testovací účely a nepoběží to dlouho.
