martes, marzo 15, 2016

Descargas automaticas de series con linux/raspberry

 ACTUALIZADO A 10/04/2017

Actualizo para corregir algunas cosas y dejar funcionando sin problemas la descarga con newpct en español.
- - - - -

Aprovechando el consumo eléctrico ridículo de la raspberry y que se queda encendida la mayor parte del tiempo, busque algo que tenia muchas ganas desde hace tiempo. Que las series que me gustan se bajen solas nada mas que sale un capitulo.

Para ello hacemos uso de una tecnología no muy conocida, RSS, de un programa que gestione esta información que le entra y de otro programa que descargue los datos.

Para el que no lo conozla la tecnología RSS, es similar a ver los titulares de un periódico y si nos interesa podemos acceder al mismo para ver más información, es algo que muchos medios (periódicos, blogs, foros) utilizan, pero poca gente usa y son tremendamente utiles. Ya que de un vistazo puedes ver y guardar los titulares que te interesan, si lo has visto previamente o no, en el instante que publique este post, aparecerá una nueva entrada RSS a mis seguidores. Pues aplicar eso a una pagina de descarga de torrents.

Tras esta explicación y mi voto para que investiguéis las RSS de vuestros medios favoritos, vamos a meternos en faena.

El sistema no es perfecto, depende de los títulos que se ponga en el rss, pero si puede ahorrarnos buscar algunas series muy famosas, y como nos manda un correo con lo que ha descargado no habrá problemas en buscar nosotros el resto. Ademas mete en una base de datos lo que se ha bajado, por lo que no vuelve a bajarse el mismo archivo.

Necesitamos instalar:

0) El transmision:
http://informaticamateur.blogspot.com.es/2014/04/instalar-cliente-de-bittorrent-en.html

Aunque vamos  a usar tecnologia bittorrent, hay multiples plugins de descarga, descarga directa con pyload, ftp, etc..
http://flexget.com/wiki/Plugins#Outputs

1) Instalar pip:
sudo apt-get install python-pip python-mechanize

2) Instalar flexget:

sudo pip install flexget

3) Verificar la instalación:


flexget -V

4) Actualizar el módulo python de transmission (este paso no sale en la página de instalación de flexget, pero si no lo hacéis el script os dará un error tipo “Transmissionrpc module version 0.6 or higher required”)


sudo easy_install --upgrade transmissionrpc

5) Crear la carpeta flexget


sudo mkdir /home/pi/.flexget

6) Cambiar los permisos de la carpeta flexget al usuario pi en lugar de a root (si no os dará un error de acceso):


sudo chown -R pi /home/pi/.flexget
sudo chgrp -R pi /home/pi/.flexget
7) Debemos indicar la fuente de RSS desde donde nos queremos descargar las series :
En castellano: Registrarse en http://www.newpct.com/
Para acceder a la página de newpct hay que instalar también, para que se pueda logar en el login de newpct, esto ya l ohemos instalado cuando instalamos el flexget, pero si no lo habéis hecho, os hará falta:
sudo easy_install mechanize

En ingles: Tener una cuenta en http://showrss.info/ --> id a feeds=>your feed address => generate. Apuntad el numero que aparece en la url del feed después de http://showrss.karmorra.info/rss.php?user_id= Ese es vuestro ID de usuario de showrss


8) Entrad al editor para escribir el script de configuración de flexget:
nano /home/pi/.flexget/config.yml
9) Según la series que queramos y la página que escojáis tendremos un fichero de configuración diferente.
A)La primera parte donde se indica email. El programa nos envía un correo con lo que haya encontrado y vaya a descargar, es opcional. Aunque tendréis que buscar un correo diferente a gmail para enviar datos.
B) series_sigo: es la tarea que va a hacer, se baja las series de la página rss que le digáis, y como veis he puesto arrow en calidad inferior a 720p y big ban theory en calidad de 720p . Consultar esta página para ver que más parámetros podéis usar http://flexget.com/wiki/Plugins/quality
C) Transmission, donde se encuentra transmission y cual es su usuario y contraseña para meter los torrent a bajar directamente
D)SOLO si usais newpct, Encontraba los torrent, pero no hacia nada y me decía que podía ser un error de login, investigando di como hacer login automático en la página con la sección form. Vosotros nada más que tenéis que cambiar el usuario y password que hayáis creado para la página.

ACTUALIZACIÓN DEL ARCHIVO A 15/05/2016
tasks:
  series_sigo:
    rss: http://feeds2.feedburner.com/newpctorrent
    regexp:
      reject:
        - V.O. Subt. Castellano
    email:
      active: True
      from: CUENTA HOTMAIL PARA EL ENVIO
      to: CUENTA DESTINO
      smtp_host: smtp-mail.outlook.com
      smtp_port: 587
      smtp_login: true
      smtp_username: CUENTA HOTMAIL PARA EL ENVIO
      smtp_password: CLAVE
      smtp_tls: true  
    series:
      settings:
        calidadnormal:
          tracking: no
          sequence_regexp: Cap.(\d+)
          quality: <720p
        calidadhd:
          tracking: no
          sequence_regexp: Cap.(\d+)
          quality: 720p+
      calidadnormal:
        - Agente Carter
        - The Americans
      calidadhd:
        - The Last Man on Earth
        - The Big Bang Theory  
    transmission:
      host: 192.168.1.104
      port: 9091
      ratio: 50
      path: /media/Torrent/descargas/flexget
      skip_files:
        - '*.nfo'
        - '*.sfv'
        - '[sS]ample*'
        - '*.txt'
        - '*.url'
        - '*.html'
        - '*.htm'
    form:
      url: http://www.newpct.com/entrar/
      userfield: userName
      passfield: userPass
      username: USUARIO
      password: PASSWORD
Este es mi fichero actualmente, en vez de utilizar una cuenta gmail, que ya no funciona porque no se loga con seguridad, he utilizado una cuenta hotmail.
Y especial atención hay que darle a:
regexp:
      reject:
        - V.O. Subt. Castellano
En newpct se cuelga las series en ingles y español, y normalmente en ingles van mas adelantado, así que, como me interesa el contenido en español, esa linea me rechaza todas las entradas en ingles. Si queréis seguir otros patrones, ahí debéis cambiarlo, porque restringe los que os bajéis.
Ahora queda que se ejecute de vez en cuando para ver si hay archivos nuevos. Eso lo hacemos con el crontab, para ejecutarlo usamos:
 
crontab -e 
 
E introducimos la linea que necesitemos:
Esta linea es para que se ejecute cada hora
@hourly /usr/local/bin/flexget --cron
Esta otra es para que se ejecute cada 2 horas desde las 8:00 hasta las 14:00, y a las 0:00 también, es lo que tengo yo, que ademas aprovecho que son horas que la conexión no se esta usando para que descargue.
00 8,10,12,14,0 * * * /usr/local/bin/flexget execute
COMANDOS ÚTILES
(Estos comandos se utilizan directamente en la consola)
Para borrar la base de datos completa:
Este comando no pide confirmación, lo hace y punto.
flexget database reset --sure
Para borrar una serie
flexget series forget arrow
Para listar las series que tenéis, porque capitulo va, cuanto hace desde que se bajo el ultimo, y la calidad:
flexget series list


Para añadir películas (NO ME FUNCIONA)
Hay dos metodos, primero, por el nombre:
flexget movie-queue add legion "720p bluray"
 
Segundo, por el código único que asigna imdb.com
flexget movie-queue add imdb_id=tt1038686 "720p bluray" 
Para listar las peliculas que hemos incluido:
flexget movie-queue list
 
Para borrar una de las peliculas
flexget movie-queue del "legion"

Para borrar la lista entera
flexget movie-queue clear
 

ACTUALIZAR FLEXGET

Como se ha instalado a traves de pip, se debe actualizar tambien igual, para hacerlo ejecutamos:
 
pip install --upgrade setuptools
pip install --upgrade flexget
 
RECOMENDACIONES
Es muy muy muy pejiguera con la indentación en el fichero de configuración, esto es la forma del fichero, tiene que haber dos espacio en blanco entre una cabecera y un parámetro. Ejemplo, form y justo debajo esta url, y esta 2 espacio en blanco a la derecha, si no daría error.
El fichero tampoco permite tabulaciones ni casi ningún otro carácter.
Habrá que pelearse mucho con el fichero de configuración para chequear que esta correcto, para comprobar que el fichero esta correcto:
flexget check
Y para hacer una simulación del programa, se ejecuta pero no llega a descargar nada:
flexget --test execute

Para lanzarlo quitarmos el --test
flexget execute 

Mantener actualizado el flexget, mediante el comando:
sudo pip install --upgrade flexget

Luego si te da errores, como "ImportError: No module named pkg_resources", debes usar:
sudo apt-get install --reinstall python-pkg-resources
Y se corregira.
fuente:
http://raspberryfacil.com/10-descargar-series-automaticamente-con-flexget-transmission/

13 comentarios:

Blackver dijo...

Hola que tal, esta muy bien explicado, pero ahora, desde hace unos dias vodafone, telefonica y ono estan bloqueando el acceso a newpct por orden judicial.

Llevo varios dias investigando, hay alguna forma de poner un proxy? alternativas a newpct?como lo has solucionado?

Draco dijo...

Bueno, los mismos de newpct lo solucionarion, creando una página nueva newpct1, en un principio no hay que cambiar nada en el rss, ya esta hecho el cambio.

ahora el problema que le estoy viendo, es que los siguientes episodios de las series no los esta cogiendo, me dice que ya han sido descargados y los ignora.

asi que de momento lo hago manualmente.

txolo dijo...

Buenos aportes!
Yo lo tenía configurado para descargar desde newpct hace ya mucho tiempo, y justo ahora con el tema del bloqueo de la página me ha empezado a fallar. Me da errores del tipo: "Unable to find login fields". Me parece que no encuentra los campos para rellenar los datos de usuario y contraseña...
Estoy siguiendo la wiki de flexget para ver si hay algún parche o algo pero de momento nada.
Esperemos que se arregle pronto

Draco dijo...

has probado a comentar esa parte?? parece como si en la nueva web no hubiera login.

lo que no soy capaz de bajarme manualmente el torrent, me salta a la misma pagina en la que estaba pero en otra ventana.

no creo que sea cuestion de flexget, si no de newpct que arregle enlaces internos.

Erlantz Iglesias dijo...

En url: http://www.newpct.com/entrar/
y en las series poniendo solamente la serie (como en el ejemplo arrow) sin filtros, actualizando el flexget a la versión 1.2.148 con "flexget -v" funciona perfectamente.
Gracias por el manual.

Farmacéutico canarias dijo...

Buenas!

Estoy teniendo el problema de que no encuentra los campos de login.

Erlantz, puedes postear tu config.yml?

gracias y saludos!

Erlantz Iglesias dijo...

email:
active: True
from: TU EMAIL
to: TU EMAIL
smtp_host: smtp.gmail.com
smtp_port: 587
smtp_login: true
smtp_username: TU USERNAME
smtp_password: TU PASSWORD
smtp_tls: true
tasks:
series_sigo:
rss: http://feeds2.feedburner.com/newpctorrent
series:
- true blood
- 24 vive otro dia
- falling skies
transmission:
host: IP DET TRANSMISSION
port: 9091
username: USUARIO TRANSMISSION
password: PASSWORD TRANSMISSION
form:
url: http://www.newpct.com/entrar/
userfield: userName
passfield: userPass
username: USUARIO CUENTA NEWPCT
password: PASSWORD DE TU CUENTA NEWPCT

Farmacéutico canarias dijo...

Me faltaba la barra al final de la URL de la web!!

Gracias y saludos!!

Draco dijo...

La verdad que desde que lo caparon, me da muchos problemas la pagina, tarda mucho, no termina de cargar bien. Y eso que he cambiado de operador, pero me pasa exactamente lo mismo. Asi que lo tengo abandonado.

Edito el post para agregar la informacion de Erlantz Iglesias para que pueda servir a otros.

YoMismo dijo...

nada yo no consigo loquearme... me dice unable to post login..... y si no añado el form ,encuentra los captilos pero los rechaza.

Anónimo dijo...

no se si os pasará a vosotros pero a mi no me reconocía bien los números de capítulos, para solucionarlo hay que cambiar en el fichero config.yml:
.../...
series:
- mi serie para descargar:
sequence_regexp: Cap.(\d+)
quality: 1080p
.../...


Por cierto he estado investigando y tiene un plugin con muy buena pinta para descargar pelis basandose en la puntuacion en IMBD, categoria, idioma, etc. ¿Alguien lo ha probado?

Draco dijo...

Muchas gracias, lo voy a probar. Porque este proyecto lo tenia abandonado. Y es cierto, la primera vez que lo ponia, se descarga bien, pero luego ya, pasaba.

Alex (TELEMAS) dijo...

Muchas gracias por el tuto funciona a la perfeccion