Hola comunidad. Me gustaría presentarles un script en Python escrito por mi para poder descargar series completas del nuevo internos solo con entrarle la url de la misma. Por la sencillez del código no voy a comentarlo demasiado, debajo se los muestro:
import requests import bs4 import re, urllib import urllib from clint.textui import progress def save(url,path): r = requests.get(url, stream=True) with open(path, 'wb') as f: total_length = int(r.headers.get('content-length')) for chunk in progress.bar(r.iter_content(chunk_size=65536), expected_size=(total_length/65536) + 1): if chunk: f.write(chunk) f.flush() serie = raw_input("Entre la url de la serie >> ") descargar = raw_input("Desea desacargarla? (yes/no) >> ") path = "/home/r1/Escritorio" if (descargar=="yes" or descargar=="y"): path = raw_input("Entre el directorio donde desea descargar (sin barra al final) >> ") response=requests.get(serie) soup = bs4.BeautifulSoup(response.text) links = [a.attrs.get('href') for a in soup.select('div.media-page div.media-actions a[href^=/archivo_multimedia]')] name=1 for i in links: matches = re.match(r'(.*)url=(.*)$', i) name_serie = re.match(r'(.*):80/(.*)$', urllib.unquote(matches.group(2))) print urllib.unquote(matches.group(2)) if (descargar=="yes" or descargar=="y"): save(urllib.unquote(matches.group(2)),path+'/(cap_'+str(len(links)-name+1)+')'+name_serie.group(2)) name+=1
Solo me gustaría señalar que para el parseo de la página web utilizo el módulo beautifulsoup4 (bs4), el cual me permite seleccionar partes de la web como lo podríamos hacer con los selectores en CSS, por lo cual el trabajo de encontrar una etiqueta determinada se facilita exponencialmente. Si no tienen el módulo instalado pueden hacerlo ejecutando en la terminal sudo apt-get install python-bs4.
Para realizar la descarga utilizo el módulo requests y el progress del paquete clint, ambos pueden ser instalados ejecutando sudo apt-get install python-requests python-clint. El módulo requests me permite abrir un mms como un stream y obtener datos como el tamaño del video, por su parte el módulo progress me permite visualizar una barra de progreso en modo texto que nos informa del tiempo que falta para que termine la descarga y de la cantidad de iteraciones que se han realizado del total.
Debajo les muestro una imagen del script en ejecución, y el script listo para su descarga para facilitarles el trabajo:
Internos Downloader (552 descargas)Espero les resulte útil he interesante el script. Happy Coding !!!
Comentarios ( 23 )
:yes:
El paquete python-clint no esta en el repo de Nova. Tal vez por eso me dió este error:
nveliz@cesol-162n:~/Escritorio/Hola$ python inter-nos\(new\).py
Traceback (most recent call last):
File “inter-nos(new).py”, line 1, in
import requests
ImportError: No module named requests
Nunca está de más comentar un código por muy sencillo que este sea.
De acuerdo con @Alejo, no todos los usuarios tienen la capacidad para entener tecnisismos.
Ubuntu 14.10, ¿cómo soluciono esto?
Traceback (most recent call last):
File “inter-nos.py”, line 2, in
import bs4
ImportError: No module named bs4
Algo habéis hecho en la página que ahora los navegadores muestran alertas de seguridad…Conexión no confiable….
@Heimdall
El que no lo entiende no tiene por que leerlo, eso solo es para programadores en Python. Lo mejor seria hacer una app son interfaz visual y ya.
@Ir@l2
La idea no es excluir a usuarios sino que mediante unos simples comentarios cualquiera pueda entender lo que se esta haciendo en algunos puntos del codigo. De esta forma mas personas les gustaria mas Python (lenguaje que me me parece super!) y asi ganamos TODOS!!
Saludos.
PD: Mi tesis fue +- algo asi lo que sirviera para cualquier sitio web y cualquier contenido.
@Ir@l2
Sí entiendo lo que quieres decir, pero no creo que la tónica para publicar sea esa, este no es un blog para programadores Pyhton nada más, los usuarios normales debería poder entender el código también.
PD: Entendí el código pues eh trabajado Python, emito mi criterio por el resto de la comunidad.
Saludos.
Serias tan amable de decirme cual es la serie de la que hablas.
Al entrar a la pagina muestra un certificado de seguridad o algo de eso. porque?
Saludos @Juan Suarez esta web se encuentra hosteada en la Universidad de las Ciencias Informáticas y por política de seguridad del centro se encuentra bajo https para lo cual es necesario hacer uso de un certificado que en este caso lo pone la propia universidad, solo que el mismo aun no se encuentra validado en ningún servidor internacional y es por ello que el firefox te da una alerta al entrar por primera vez al blog. Pero te aseguro que no existe ningún tipo de peligro al visitarnos.
Un Saludo.
Equipo de Administración del blog
Muy bueno
Te podrias ahorrar el hecho de pedirles a los usuarios no pongan la barra al final utilizando la funcion os.path.join y te quitas de arriba esos problemas, tambien te puedes auxiliar de os.path.normcase y os.path.normpath que normalizan las direcciones…Genial el scripts!!!, muy util, tengo un script parecido para bajar paquetes del repo de Ubuntu de la universidad, vere luego como se los hago llegar. Saludos.
En los repos de 12.04 no estan los paquetes python-clint, en que repos estan
Muy bueno, me recuerda los tiempos de inter-mimms y otras alternativas, espero que a la UNIVERSIDAD no le AFECTE esta propuesta y permita a los usuarios disfrutar de una descarga automatizada. Saludos
las fuentes ??? , las pudieran compartir ?
Disculpen la demora para responder sus inquietudes, es que he estado un poco ocupado.
@Nelio: El módulo request no esta en el paquete python-clint, sino que debes instalar, como indico en el arículo, este módulo con el comando: sudo apt-get install python-requests.
@Alejo: De acuerdo contigo, pero como dije anteriormente he estado un poco corto de tiempo, el comentariado se los debo, jejejee.
@Heimdall: Lee en el arículo los paquetes que debes instalar.
@Karel P: De acuerdo contigo, pero el tiempo no me permitió ese nivel de detalle, de todas formas con tu comentario queda abierta la propuesta para que el que desee incorpore estos elementos.
@JorgeR3: Espero que no, vamos a rezar.
@querubin: No entiendo que me pides, el código mostrado es todo lo que necesitas.
Yo tengo un código que no necesita instalar ningún modulo adicional y también descarga la serie completa.(si alguien lo quiere mi usuario es acrodriguez)
se me queda trabado el proceso de descarga y no continua !!! q podria ser ???
@Opteron
A mi me pincha bien, lo acabo de descargar para comprobar.
@jose
lo estoy probando en kubuntu 15.10 y nada por cierto papa tas fuera d la uci ya ??? es q ya no c t ve ni el pelo !!!
@Opteron
No se que sera entonces, ahh ahi dice W10, toy en el apto, todavia no me piro.
Muy bueno, gracias.