A Karácsony nem csak a szeretet ünnepe, hanem optimális esetben az évvégi számvetés, rendszeres jelszócsere és számítógépes munkáink nagy szabású mentésének ideje is. Barkács Pajtás ezúttal a blog.hu posztok kapcsán külön egyéni buherálási célokat tűzött ki maga elé két bejgli között: menteni mindent.
De jó is lenne az összes eddigi - több, mint háromévnyi - bejegyzést lementeni, mondjuk Portable Document formátumban - mondta Barkács Pajtás. Ezzel Broáfka Ottokár és Kovács Brezsnyevke is egyetértett. Igaz, ezt egyesével könnyedén megtehetjük a nyomtatás fájlba nevű trükkel, de ki az az önként jelentkező, aki be fogja járni a fát, és minden egyes poszton ezt szöszmötölve elvégzi? Nos, igen, szóval senki.
Akkor hát automatizáljunk! A cél nem egy szofisztikált piaci alkalmazás, hanem csak egy olyan különbejáratú saját használatra szánt, fatengelyes kis script segédeszköz összeütése, amely mondjuk max félóra alatt megvan, és kényelmesen a már említettt PDF formátumba lementené az eddigi összes blogbejegyzésünket az antivirus.blog.hu oldalról anélkül, hogy a bemutatott fáradtságos rabszolgamunkával napokig méltatlanul lódobogást kellene játszanunk a billentyűzeten.
Kezdésnek a http://antivirus.blog.hu/archive link segít meghatározni, mikor indultak el a bejegyzések, nálunk ez 2007 szeptember volt. Aztán már csak annyi a dolog, hogy innentől kezdődően Krisztustól napjainkig mondjuk wget-ekkel leszedjük minden hónap összesítőjét egy-egy fájlba. Nagy ritkán előfordul, hogy nulla hosszúságú fájl keletkezik, akkor azt az egyet újra meg kell lőni (pont ezért készül külön, hogy látsszon, ha esetleg valamelyik hibás).
Ezekből készül majd a linkbányászás, és az egyedi blogposztoknak a lementése DATUM_CIM.PDF névformátumban. Vegyük észre, hogy a lementett havi HTML állományokban maguknál a bejegyzések címeinek kezdeténél szerepel az egyedi '<a class="post_anchor"' füzér, így számunkra ezek a sorok lesznek érdekesek.
A PHP (vagy Ruby, Perl, bármi) kódunk semmi mást nem csinál, csak pillanatok alatt legenerálja az összes év összes hónap HTML fájljából az összes posztra vonatkozó sorokat egyetlen nagy parancssori SH állományhoz, amelyik egy ügyes segédprogrammal majd aztán a megadott URL címekről ténylegesen beolvassa a tartalmat és kiköpi azt PDF formátumban a következő wkhtmltopdf <url> <fájlnév> szintaktikával, pl.:
wkhtmltopdf http://antivirus.blog.hu/2007/09/22/hacktivity_2009 20070922_hacktivity_2009.pdf
Az összesítő HTML-ek megdarálása után elindíthatjuk ezt a scriptet és jöhet a nyolcfogásos ebéd, kávé, dohány, tabak és egyéb gyarmatáru, állatsimogatás, Scooby Doo maraton, etwas.
Kizárólag ez a munkafázis tart sokáig, futásához nálunk mintegy két óra kellett. Mikor aztán végül az összes poszt PDF-je elkészült, úgy éreztük, nehézkes és kényelmetlen, hogy minden bejegyzés egyesével külön fájlban van, és ez a későbbi tematikus keresgélést is megnehezítheti. Ezért úgy döntöttünk, legyen minden egyes évfolyam összefogva egy nagyobb PDF-ben, ez a művelet percek alatt abszolválható volt. Ehhez a GhostScriptet használtuk, ami pikk-pakk össze is fűzte a kért fájlokat.
Az ősi mondás szerint minden programban van legalább egy változó, egy elágazázózádás és egy hiba :-) A fenti módszerünk azokat a blogokat kezelte jól, ahol egy hónap bejegyzései egy oldalra kifértek. Mi direkt nem nehezítettük meg a saját dolgunkat, és ezért 25-re vettük az admin beállításoknál az egy lapon megjeleníthető bejegyzések számát, ennél több nálunk egyik hónapban sem keletkezett. A lementett bejegyzések egyébként tartalmazzák az esetlegesen keletkezett kommenteket is. Amit ez a technika nem tud: csak kis méretben szerepelnek benne a képek, lehetne a kód rövidebb, lehetne a kód szebb, biztos másképp is lehetne, meg különben is, továbbá automatikusan felismerhetne minden blog.hu doboz elrendezési sablont, valamint Alt+F1-re masszírozhatná a hátunkat és behozhatná nekünk a sört a hűtőből ;-)
Maga a leszedés és konvertálás hiába tart egy combos 2GHz Intel Core Duo, 4GB RAM gépen 1-2 óráig, mindez nem igényel semmilyen extra felügyeletet vagy plusz beavatkozást, hiszen közben nyugodtan lehet elmélyülten dolgozni (pl. az Angry Birds csúzlival gyakorolni) vagy akár el lehet menni addig is kávézni, ebédelni, aludni, fenyőfát venni, etc.
Szóval bitfaragás közben mi magunk is láttuk a korlátokat, meg hogy lehetne még mit csiszolgatni rajta, de a befektetett félóra egységnyi energia láthatóan busásan megtérült, szenvedésmentesen hozta a kitűzött célokat. És emellett egy az egyben, vagy mindössze minimális módosítással aztán bármelyik más blog.hu napló archiválását is elvégezhetjük így, nálunk például a konteo évfolyamok már itt figyelnek, be vannak spájzolva hideg csillagfényes téli estékre olvasgatnivalónak :-)
Végezetül, de nem utolsósorban minden Kedves Olvasónknak ezúton Kívánunk Kellemes Karácsonyi Ünnepeket!
BenkovicsTomi 2010.12.24. 14:34:01
Csizmazia Darab István [Rambo] · http://antivirus.blog.hu 2010.12.28. 19:25:29
Hasonló jókat kívánok én is neked oda a nagy messzeségbe :-)