El día 9 de diciembre de 2013 22:04, Manuel <[email protected]> escribió:
> Buenas noches a todos.
>
> Estoy dando mis primeros pasos en Python, he conseguido hacer un script para 
> bajar series de anime, pero me gustaría guardar en un archivo de texto las 
> descargas ya realizadas, así la próxima vez que se ejecutara, mire en el 
> archivo de texto para no descargar el mismo episodio.

Si pretendes hacer búsquedas, posiblemente te vaya mejor una base de
datos en sqlite que un fichero de texto en plano. Además podrías
añadir más información por cada registro, o añadir una tabla de tipos
de animes en lugar de tenerlos como una lista en el código.

Por estructurar tu código, se pueden diferenciar tres partes:

- lectura de información de la web
- obtención de la lista de episodios
- descarga del episodio

Por cada parte, crea una función. Si fuera a hacerse más complejo,
cada parte sería una clase, un módulo o un paquete, según se
incrementara la complejidad.

Cuando aparece la palabra "lista" en un diseño funcional, programando
en python equivale a trabajar con iteradores. El la práctica, todo
bucle puede ser sustituído por iteradores, mucho más eficientes y
elegantes.

Para introducir "persistencia", tendríamos:

- en la parte donde se obtiene la lista, se filtraría la lista de
episodios para no volver a descargar episodios descargados
- en la parte de descarga, se añadiría a la base de datos los
episodios descargados

Una última recomendación: si te dedicas a extraer información de
páginas webs ("web scraping") usa alguna de las librería indicadas
para ello como "BeautifulSoup"
(http://www.crummy.com/software/BeautifulSoup/).

>
> Este es el código de lo que tengo hecho.
>
> #!/usr/bin/python
> import re, urllib
> import webbrowser
> import time
>
>
> def descarga_anime():
>     lista_anime = ["coppelion", "flamenco", "freezing", "hajime", 
> "log-horizon", "valvrave", "arpeggio"]
>     myurl = "http://www.animetake.com";
>
>     for i in re.findall('''href=["'](.[^"']+)["']''', 
> urllib.urlopen(myurl).read(), re.I):
>         #time.sleep(900)
>         for serie in lista_anime:
>
>             if serie in i and "episode" in i:
>                 webbrowser.open(i)
>                 time.sleep(4)
>
>                 for torrent in re.findall('''href=["'](.[^"']+)["']''', 
> urllib.urlopen(i).read(), re.I):
>                    if "nyaa.se" in torrent:
>                        if "#038" in torrent:
>                            torrent = torrent.replace("#038;", "")
>                        torrent = torrent.replace("amp;", "").replace(" ", "")
>                        webbrowser.open(torrent)
>                        time.sleep(4)
>                        break
>
> descarga_anime()


-- 
Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
http://ch3m4.org/blog
Buscador Python Hispano: http://ch3m4.org/python-es
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a