20070424

La Cuina de l'Isma

L'altre dia a una llibreria vaig veure un llibre amb receptes del programa de TV3 'La Cuina de l'Isma'. Ocasionalment el miro, fa plats amb molt bona pinta en general. Però en veure el llibre vaig pensar 'i si treuen les receptes de la web??'. Perquè resulta que totes les receptes estàn a la web, i no seria massa estrany que en fer-ne llibres les anessin traient. Així que em vaig decidir a fer un programa que recorrés les 9 o 10 categories traient-ne la pàgina amb la recepta i la imatge corresponent.


Jo només he creat les carpetes, el programa les ha
omplert

Es tracta bàsicament d'un client http/1.0 fet més o menys especialment per a la pàgina de TV3 on es troben les receptes. Format per una funció que rep una web html i una altra que rep una imatge jpg. Aquesta era la part gruixuda, el programa principal demana una de les pàgines index de receptes, i l'envia a una funció que en retorna una llista amb el nom de la recepta i la URL, i ho envia tot a una funció que recull la recepta (modificant al mateix temps la ubicació de la imatge del plat) i la desa al disc i en baixa la imatge corresponent.

Van ser unes 4 hores d'estar insistint amb el LISP fins que tot va funcionar més o menys correctament, i una horeta més perquè acabessin de baixar totes les receptes i arreglar un error o dos (no es poden crear fitxers amb " en el seu nom!!). Perquè en LISP? No hi havia massa més opcions, realment. Necessitava poder accedir completament a internet, i això només m'ho veia capaç de fer en LISP, Java o Python. Java el descartava directament, el trobo desagradable i abans hauria provat de fer-ho en C, per ser més interessant aprendre a fer-ho. Python... doncs no hi vaig pensar ahir, ja que el codi del client bàsic ja sabia on trobar-lo (Loving Lisp, de Mark Watson disponible a la seva pàgina web), i ara me'n penedeixo.

Hauria après coses noves fent-lo en Python, ahir no vaig aprendre res que no sabes o que fos particularment important, i el programa no està adaptat ni res a l'estil de LISP, és un desagradable destripador de pàgines. A més, Python té el mateix avantatge que el LISP: fas una funció petita dissenyada per fer una cosa, i la proves sobre la marxa. Al mateix ritme que vas programant, pots anar provant el que vas fent, i això, sense haver d'estar recompilant i executant (bé, cal anar carregant i executant... però les dades continuen en memòria, on les vols, només es recarrega el codi) és increiblement útil. Un cop creat el carregador de pàgines web, ja tenia carregada la pàgina web en memòria i podia anar fent proves amb la funció que en treia les receptes, independentment de l'anterior. Genial.

Written by Ruben Berenguel