Laugh at perfection. It’s boring and keeps you from being done.
Van egy félkész megoldásom egy szerintem érdekes problémára, megmutatom, nektek, mert együtt úgyis okosabbak vagyunk. Az alapszituáció az, hogy a scifi.com 2000 elejétől közölt remek science fiction novellákat, amiket aztán a csatorna Syfy-ra történő átnevezésekor töröltek a honlapról. A 222 megjelent írásnak természetesen van mirrorja, innen szeretnénk letölteni mindent, lehetőleg Kindle-kompatibilis .mobi fájlként.
A megoldás eleje szerintem így néz ki:
wget http://lexal.net/scifi/scifiction/archive.html
find "originals_archive" archive.html >> teszt.txt
wget -F -B http://lexal.net/scifi/scifiction/originals -i teszt.txt -O sokscifi.html
Letöltjük az archívum oldalt, kilistázzuk belőle az originals_archive kifejezést tartalmazó sorokat, mert ezek a novellákra mutató linkek, majd ezeket a linkeket úgy töltjük le, hogy az összeset egymás után is írjuk egy jó nagy HTML fájlba. (Méret 5,6 mega, meg az apró.)
Itt jönne az a rész, ahol az ember egy jól irányzott seddel kiölné a felesleges formázást a fájlból, és ráküldené a konverterre, de nem jártam szerencsével a sedeléssel. A többi parancssoros, windowsos szövegtisztító pedig ostobának bizonyult, úgyhogy itt ki kell lépni egyelőre a parancssorból.
Csalók figyelmébe: a remek Notepad++ rendelkezik remek strip HTML opcióval, a TextFX-ben van elrejtve. A program elnyamog egy ideig a szövegen, de a végén visszaköp egy körülbelül feleakkora, tiszta anyagot, amiből már csak a felesleges üres sorokat kell törölni. Ide még kell a html-body-head hármas, mert anélkül nem eszi meg a kindlegen, majd..
Ha elmentettük a felesleges formázásformázástól megtisztított fájlt, akkor már csak a .mobi-vá alakítás van hátra, a megint nagyon egyszerű:
kindlegen sokscifi_tiszta.html -c2 -o sokscifi.mobi
Az eljáráson számtalan helyen lehet javítani, kezdetnek például jól festene, ha az egész egy .bat fájlba kerülne, ha már a más honlapjáról összeollózott novellákat nem illendő megosztani az elkészült mobival. Aztán persze lehet csinosítani a könyv belsején, megkeresni a címet azonosító kódokat, és azt meghagyni. Falura mindenesetre jó ez is, városon meg úgyse nézik.
Felhasznált szakirodalom szoftverek:
Bevallom imadom az ilyeneket. En rogton rubyhoz nyulok ilyenkor. Amivel szerintem tok jol meg lehetne meg csinalni az readability bookmarklet szerver oldali megvalositasa. Probalja egy oldalrol csak a lenyeget kiszedni egy pontozasos rendszert hasznalva (leginkabb css osztalyokra tamaszkodik).
https://github.com/sspinc/readability
ami meg eszembe jutott masik megoldas az valami text based browser (w3m, lynx) igy legalabb nem kell a karacsonyi kivansaglistara felvenni a Mastering Regular Expressions c. konyvet ;)
Ami azt illeti, én is remekül elszórakoztam, amikor még az ‘egyáltalán hogyan catolunk windowsban’ résznél jártam. :) A regexpek az a rész, ahol végleg elveszem. (Vázlat közben: http://worldshots.hu/wp-content//2010/11/kep_16002.jpg )
De legalább ketten adtak már megoldásokat a sed kikerülésére, szóval a végén csak össze fog állni. :)
Ez egy 2000-ben készült oldal, még a table volt a menő, css-t pedig csak mutatóba raktak az oldal elejébe inline. Több irányból is meg lehet támadni a feladatot, én a nagykalapácsos módszert választottam végül, php + regexp, ez állt kézre, így volt meg leghamarabb (ha nagyon nem tudok majd aludni, esetleg leporolom az XSLT tudásom, és azzal is nekimegyek :)
A script elérhető itt: http://dl.dropbox.com/u/2190895/dev/scifi-parser.php
Itt pedig egy példa:
forrás: http://lexal.net/scifi/scifiction/originals/originals_archive/tidhar/index.html
kimenet: http://dl.dropbox.com/u/2190895/dev/Lavie%20Tidhar%20-%20The%20Dope%20Fiend.html
Apropó parancssor és ebook készítés, az megvan, hogy a Calibre telepít commandline dolgokat is, ha szépen megkéred rá (valahol a beállításai között van eldugva)? Érdekes lehet pl az ebook-convert, vagy az ebook-meta. Gyorsnak így se gyors, de legalább nem hányod el magad a GUItól.
Apróság: a classics_archive novellák így kimaradnak.
(Most pedig megpróbálom megérteni, miről beszéltek, mert azt már látom, hogy hasznos lesz. )
Igen, a classics-hoz át kell írni a find-os részt, mert más címen vannak a novellák. Az “originals_archive” helyére ez megy: “classics_archive”.
És amúgy gondolatkísérlet zajlik, néhány gyakorlati megvalósítással.:)
Vaaaagy… BeautifulSouppal is lehet:
https://gist.github.com/703151