8.26.2015

Como descargar Automaticamente Series y subtítulos en la Raspberry Pi

Como programador, una de mis aficiones es automatizar los procesos repetitivos, siendo la descarga de los capítulos seguidos semanalmente una de ellas.
Tras investigar un poco me he encontrado que con una combinación bastante buena:Raspberry Pi +  Disco duro Externo + Transmission + Flexget + ShowRSS + Periscope
La Raspberry Pi, es el pequeño ordenador de 35$. Su pequeño tamaño y bajo consumo nos viene perfecto para tenerlo siempre conectado
Un disco duro externo nos permite gran cantidad de espacio para ir descargando, ya que la Pi utiliza una SD.
Para las descargas nos basaremos en el torrent, y Trasmission nos ofrece un potente cliente en línea de comandos e interfaz web que nos permitirá controlarlo remotamente.
Flexget será el encargado de obtener los torrents desde un RSS de los nuevos capítulos y añadirlos a Transmission. Además permite ordenar automáticamente las descargas finalizadas, enviar un email de notificación.
ShowRSS es una web que nos permitirá crear nuestro propio RSS con las series que queramos seguir, ahorrándonos tener que recurrir a la configuración manual. Además, recientemente se ha actualizado con los capítulos de mayor calidad y nombre de archivos específicos para usar conTheTVDB
Finalmente, Periscope será el encargado de buscar subtítulos a los capítulos descargados, entre otros, soporte la web Subtitulos.es que incluye gran cantidad de subtítulos en español.
Lo primero será instalar todo, lo cual es bastante fácil:

1
2
3
4
5
sudo apt-get install transmission-daemon python-pip
sudo pip install flexget
sudo pip install transmissionrpc
sudo pip install periscope
mkdir /home/pi/.config

El último comando es por un bug de periscope, que si no tiene la carpeta .config falla.
Mientras se va instalando, nos registramos en http://showrss.info/
Una vez registrados, añadimos las series que queramos y obtenemos nuestro feed según nuestras preferencias. En mi caso, he seleccionado solo archivos en 720p, aunque el flexget, por lo general, siempre intentará descargar los archivos con mayor calidad.
Una vez instalado todo y con nuestro feed, habrá que configurar Tranmission

1
2
sudo service transmission-daemon stop
sudo nano /etc/transmission-daemon/settings.json
Bien, tendremos que configurar estos puntos (aunque los he puesto juntos, están separados) según vuestras preferencias

1
2
3
4
5
6
7
"download-dir": "/mnt/usb/Descargas",
"incomplete-dir": "/mnt/usb/DescargasIncompletas",
"incomplete-dir-enabled": true
"rpc-password": "micontraseña",
"rpc-username": "miusuario",
"rpc-whitelist-enabled": false,
"umask": 0,

Pulsamos F2 y guardamos. Ahora volvemos a arrancar el Tranmissión y podremos conectarnos a él mediante la URL
http://IPRAPSBERRY:9091
1
sudo service transmission-daemon start
Ahora toca hacer la magia, que es configurar el flexget.
1
nano .flexget/config.yml
Aquí hay que tener cuidado, es un fichero tipo YAML por lo que el número de espacios es muy importante.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
templates:
  global:
    email:
      from: tucorreoqueenvia@gmail.com
      to: tucorreoquerecibe@gmail.com
      smtp_host: smtp.gmail.com
      smtp_port: 587
      smtp_username: tucorreoqueenvia@gmail.com
      smtp_password: tupasword
      smtp_tls: yes
      template: accepted 
tasks:
  rss:
    priority: 1
    rss: TUURLFEED
    all_series: yes
    transmission:
      host: localhost
      port: 9091
      username: 'tuusuario'
      password: 'tupassword'
      ratio: -1
      main_file_only: yes
      path: /mnt/usb/Descargas/Flexget
      addpaused: no
      skip_files:
        - '*.nfo'
        - '*.sfv'
        - '*[sS]ample*'
        - '*.txt'
  subtitles:
    priority: 4
    disable_builtins: yes
    find:
      path:
        - /mnt/usb/Descargas/Flexget
      regexp:  '.*\.(mp4|mkv|avi)$'
      recursive: yes
    accept_all: yes   
    regexp: 
      reject:
       - '.*[sS]ample.*'
    periscope:
      languages:
        - es
      overwrite: yes
  sort:
    priority: 5
    disable_builtins: yes
    find:
      path: /mnt/usb/Descargas/Flexget
      mask: '*.srt'
      recursive: yes
    accept_all: yes
    seen: local
    thetvdb_lookup: yes
    all_series:
      parse_only: yes
    move:
      to:  /mnt/usb/Series/{{ tvdb_series_name }}/
      filename: '{{ tvdb_series_name }} - {{ series_id }} - {{ tvdb_ep_name}}{{ location | pathext }}'
      clean_source: 100
      along:
        - mkv
        - mp4
        - avi
  clean:
    priority: 3
    clean_transmission:
      host: localhost
      port: 9091
      username: 'tuusuario'
      password: 'tupassword'
      finished_for: 1 hours
Lo que le estamos diciendo es:
  • Cuando se realice alguna tarea que haya terminado bien, manda un correo usando gmail (podéis configurarlo para otro servicio)
  • Obtener torrents desde este RSS y descargar todos las series que aparezcan
  • Usar Transmission para las descargas
  • Limpiar las descargas completadas del Transmission
  • Buscar subtítulos para los archivos descargados del tipo vídeo (salvo los que contengan la palabra “sample”)
  • Para cada subtítulo encontrado, buscar los datos de la serie y moverlo junto al vídeo a la carpeta correspondiente.
De esta forma, hasta que un capítulo no tenga subtítulos no será movido a la carpeta de la serie y seguirá intentando cada hora encontrar un subtítulo para ella.
Flexget permite muchísimas opciones de configuración, podéis consultarlas en su Wiki.
Una vez configurado, lo probamos:
1
flexget execute
Si todo va bien, lo añadimos ejecutamos crontab -e y añadimos al final la siguiente línea para que cada hora busque nuevas descargas.
1
@hourly /usr/local/bin/flexget execute --cron
Recomiendo que el disco duro externo esté en EXT4, el rendimiento frente a NTFS es muy grande, y evita que el Tranmissión de errores de “timeout” que puede provocar que el Flexget no lleve bien la cuenta de que capítulos ha descargado y descargue varias veces el mismo.

Share:

0 comments:

Publicar un comentario

Deja tu Comentario: