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

Internos Downloader (552 descargas)

Espero les resulte útil he interesante el script. Happy Coding !!!