Actualizando a OSMC (+ Deluge + Flexget)

Al fin, con la salida de la RC2, me he decidido a cambiar el Raspbmc que lleva acompañando a mi Raspberry Pi desde el principio por OSMC, el nuevo sistema desarrollado por Sam Nazarko (el creador de Raspbmc).

En principio, esta basado en lo mismo, es decir XBMC (Kodi), pero con grandes diferencias con respecto a Raspbmc:

  • Está basado en Debian “Jessie”, mientras que Raspbmc está basado en Debian “Wheezy”. Esto supone que disponemos ya de la proxima versión de debian en nuestra Raspberry pi, ademas de ofrecer soporte para otro tipo de procesadores como el de la Raspberry pi 2.
  • Dispone de un tema minimalista y adaptado a este tipo de dispositivos. Personalmente me gusta mucho, es mas limpio y mas adaptado a su uso con un televisor y el mando a distancia.
  • Recorta en muchos servicios que Raspbmc disponía, lo que hace el sistema bastante más rápido
  • Incluye lo que el llama “App Store”. Desde aqui podremos encontrar scripts que podremos utilizar para instalar nuevas caracteristicas.

En este manual vamos a ver como instalar OSMC y prepararlo para que funcione tal y como lo dejamos con Raspbmc. Los pasos serán los siguientes:

  1. Instalar OSMC
  2. Activar Samba
  3. Conectarnos por SSH y modificar las cosa básicas (contraseñas, fstab, etc…)
  4. Instalar Deluge (o Transmission, pero creo que funciona mejor Deluge con Flexget)
  5. Instalar Flexget.

Instalar OSMC es muy sencillo, tan solo necesitamos una tarjeta SD (o MicroSD) y visitar la sección de descargas de http://www.osmc.tv. Ahi descargaremos el instalador para nuestro sistema y seguiremos las instrucciones.

Una vez copiado el sistema en la tarjeta, la pondremos en la Raspberry Pi donde terminará la instalación. Yo recomiendo instalar sin el disco duro conectado.

Seleccionaremos el idioma preferido y una vez dentro del sistema, iremos a la sección “My OSMC” y ahi iremos a la seccion “App Store”.

Nos permitirá instalar el “SMB Server”, que activará Samba.

Después de unos cuantos minutos, veremos un cartel que nos indicará que todo esta actualizado correctamente. Es el momento de enchufar el disco duro a nuestra Raspberry Pi.

Lo siguiente que haremos será conectarnos por SSH, utilizando la ip de nuestra Raspberry Pi.

Aqui entraremos utilizando el usuario “osmc” y contraseña “osmc”. Cambiaremos las contraseñas básicas con “sudo passwd” y el usuario. Lo haremos con el usuario osmc, el usuario root y utilizaremos el comando “sudo smbpasswd osmc” para cambiar la contraseña del servidor samba.

Despues, configuraremos el disco duro de la misma forma que hicimos en este post pero cambiando el usuario pi por el usuario osmc, y configuraremos Samba de la misma forma que hicimos en este post.

Podemos reiniciar la raspberry para ver que todo ha ido correctamente.

Ahora instalaremos Deluge. Para instalar deluge ejecutaremos los siguientes comandos:

sudo apt-get update
sudo apt-get install deluge-common deluged deluge-web deluge-console

Con esto tendremos instalado Deluge, pero ahora tenemos que hacer que se ejecute al arrancar el sistema. Para ello ejecutamos el siguiente comando:

sudo nano /etc/systemd/system/deluged.service

En el editor copiaremos el siguiente código:

[Unit]
Description=Deluge Bittorrent Client Daemon
After=network.target

[Service]
Type=simple
User=osmc
Group=usb
UMask=007

Environment=LC_ALL=es_ES.UTF-8
Environment=LANG="es_ES.UTF-8"
Environment=LANGUAGE="es_ES:es"

ExecStart=/usr/bin/deluged -d

Restart=Always
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Grabamos con Control+X y ejecutamos el siguiente comando

sudo nano /etc/systemd/system/deluge-web.service

En este fichero incorporamos el siguiente código

[Unit]
Description=Deluge Bittorrent Client Web Interface
After=network.target

[Service]
Type=simple

User=osmc
Group=usb
UMask=027

ExecStart=/usr/bin/deluge-web

Restart=Always

[Install]
WantedBy=multi-user.target

Además, debemos activar el arranque al inicio, para ello ejecutamos estos comandos:

sudo systemctl enable deluged
sudo systemctl enable deluge-web

Con esto ya tendremos deluge instalado y funcionando. Podemos reiniciar la Raspberry pi y acceder a la dirección http://:8112.

Si todo ha ido bien, nos saldrá la interfaz web de Deluge, nos preguntará un password, que por defecto es “deluge” y nos dirá que lo cambiemos en la primera ejecución (nos lleva directamente a la pantalla de cambio de la contraseña).

Para terminar con Deluge, nos falta por hacer un par de configuraciones. Si vamos al directorio /home/osmc/.config/deluge veremos que nos ha creado un fichero llamado “auth”. Editamos dicho fichero con el siguiente comando

sudo nano /home/osmc/.config/deluge/auth

Aquí insertaremos una nueva linea, con la siguiente estructura:

usuario:contraseña:10

Siendo el usuario y la contraseña los que deseemos para conectarnos a deluge, ya sea mediante un cliente externo o bien mediante flexget.
Para terminar, abriremos deluge para poder conectarnos desde fuera de nuestra red local, mediante el siguiente comando:

deluge-console "config -s allow_remote True"

Si reiniciamos, veremos que ya nos podemos conectar desde fuera o bien desde el cliente de nuestra plataforma (descargable desde la web de Deluge), usando el usuario y la contraseña creados anteriormente.

Ahora vamos a instalar Flexget, siguiendo las instrucciones de la web del mismo.

Primero comprobamos la version de Python

python -V

Si es 2.7 o superior nos saltamos el paso, si no ejecutamos:

sudo apt-get install python3.5

Una vez tenemos python, instalamos pip

sudo apt-get install python-pip

Y despues, flexget

sudo pip install flexget

Con esto tendremos instalado flexget.
Crearemos un directorio donde colocar la configuración de flexget

mkdir /home/osmc/.flexget

Aquí colocaremos el fichero config.yml de configuración de flexget. Os dejo un ejemplo de configuración con deluge y conexión con NewPCT:

templates:
  global:
    email:
      from: 
      to: 
      #En caso de varios destinatarios, convertir en lista, eliminando el correo de to:
        #- 
        #- 
      smtp_host: smtp.gmail.com
      smtp_port: 587
      smtp_username: 
      smtp_password: <contraseñagmail>
      smtp_tls: yes
      subject: Nuevas descargas desde Flexget
      template: html
tasks:
  series_newpct:
    rss: http://feeds2.feedburner.com/newpctorrent
    series:
      - (Nombre Serie, tal y como aparece en NewPCT, sin parentesis):
          set:
            tvdb_id: 
      - (Nombre Serie):
          set:
            tvdb_id: 
    thetvdb_lookup: yes
    metainfo_series: yes
    deluge:
      host: localhost
      port: 58846
      username: 
      password: <contraseñadeluge>
      ratio: 2.0
      removeatratio: yes
      path: 
      movedone: "/{{ tvdb_series_name }}/"
      content_filename: "{{ tvdb_series_name }} - {{ tvdb_ep_id }} - {{ tvdb_ep_name|default('Desconocido') }}"
      main_file_only: yes
    form:
      url: http://www.newpct.com/entrar/
      userfield: userName
      passfield: userPass
      username: 
      password: <contraseñaNewpct>
    manipulate:
      - title:
          replace:
            regexp: 'Temporada \d+'
            format: ''
      - title:
          replace:
            regexp: 'Cap.(\d?\d)(\d\d)'
            format: '\1x\2'
      - title:
          replace:
            regexp: 'HDTV'
            format: 'hdtv'
    regexp:
      reject:
        - V.O.: {from: title}  # Bloquea todos los torrent que contengan la palabra V.O.

Creamos un fichero, personalizándolo con nuestros datos. Tened en cuenta que es muy importante que en lenguaje YAML no existe el tabulador, cada una de las propiedades esta “tabulada” con dos espacios. Si utilizáis algún carácter raro, flexget dará error.

Para terminar con la configuración de flexget, modificaremos un par de ficheros para adaptar los “locales” del sistema. El primero a modificar es el fichero /home/osmc/.bashrc, con el comando “sudo nano” añadiremos las siguientes lineas al final

export LC_ALL=es_ES.UTF-8
export LANG="es_ES.UTF-8"
export LANGUAGE="es_ES:es"

Añadiremos las mismas lineas al fichero /etc/default/locale con el mismo método.

Al cerrar la ventana del terminal y volvemos a conectar, veremos que genera los locales, aún asi, volverá a dar error, solo tenemos que volver a conectarnos y todo volverá a la normalidad.

Además, vamos a adaptar flexget para que tome los datos en castellano, para ello vamos a ejecutar los siguientes comandos (Mirar la version de python instalada, si es la 3.5 cambiara la ruta):

sudo nano /usr/local/lib/python2.7/dist-packages/flexget/plugins/api_tvdb.py

Esto nos abrirá un fichero de configuración de la api de TheTVdb. Buscaremos la siguiente linea:

language = 'en'

y lo cambiaremos por language = ‘es’.

también, si queremos que nos pinte los capítulos como TemporadaxCapitulo (1×01 por ejemplo) en vez de S01E01, deberemos modificar el fichero  /usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/thetvdb_lookup.py de igual forma, y buscar el siguiente texto:

'tvdb_ep_id': lambda ep: 

modificaremos lo siguiente a “ep:” para dejarlo tal que así:

'tvdb_ep_id': lambda ep: '%01dx%02d' % (ep.season_number, ep.episode_number)

Además, en Newpct (Spanistracker) nos dejan los torrent con el fichero de video dentro de una carpeta, junto con otro par de ficheros (un txt y un enlace). Por un problema de Deluge (y del protocolo torrent en general) estos ficheros suelen ser descargados aún habiendo puesto “main_file_only” en la configuración del flexget (que nos permite seleccionar únicamente el fichero mas grande del torrnet).

Para solucionar esto, instalaremos el plugin “DeletePartials” de Deluge, que nos permitirá eliminar de forma automática los ficheros no deseados cuando se elimine el torrent una vez descargado, dejándonos solamente el fichero de video.

El problema de es plugin es que es antiguo, esta preparado para funcionar con python 2.6 y nosotros tenemos la versión 2.7. Por suerte, he preparado el plugin y lo he subido a la web, por lo que para su instalación ejecutaremos los siguientes comandos:

sudo wget -q http://www.sergiogestoso.esy.es/ficheros/DeletePartials-0.1-py2.7.egg -O /home/osmc/.config/deluge/plugins/DeletePartials-0.1-py2.7.egg
----
sudo touch /home/osmc/.config/deluge/deletepartials.conf
sudo bash -c "echo '{' >> /home/osmc/.config/deluge/deletepartials.conf"
sudo sed -i '$ a\}' /home/osmc/.config/deluge/deletepartials.conf
sudo touch /home/osmc/.config/deluge/hostlist.conf.1.2
sudo bash -c "echo '{' >> /home/osmc/.config/deluge/hostlist.conf.1.2"
sudo sed -i '$ a\}' /home/osmc/.config/deluge/hostlist.conf.1.2

Ejecutado linea por linea, nos descargará el plugin, y nos creará dos ficheros que permiten que este funcione sin problemas.

Si reiniciamos la raspberry, podemos activar el plugin dentro de la configuración de Deluge.

Ya tendríamos flexget configurado, para probarlo, ejecutamos el siguiente comando:

flexget execute

Con suerte, si todo ha ido bien, tendremos nuestras series descargando y colocandose de forma automática en donde nosotros queremos.

Solo nos faltaría preparar una tarea cron para que flexget se ejecute cada hora y así despreocuparnos de la descarga de las series.

Para ello, primero debemos instalar cron, tal y como se indica o bien desde la App Store de OSMC:

sudo apt-get install cron

Una vez instalado (nos dará un warning,pero funciona correctamente), ejecutamos el siguiente comando

crontab -e

y al final del fichero insertamos la siguiente linea:

@hourly /usr/local/bin/flexget --cron execute

Grabamos, y ya tenemos funcionando flexget cada hora. Aún así, las primeras ejecuciones deberemos estar atentos al fichero /home/osmc/.flexget/flexget.log, ya que puede darnos un mensaje que nos diga que “no se ha ejecutado flexget desde cron ninguna vez que por favor lo ejecutemos una vez de forma manual”. Nada, lo ejecutamos y la siguiente ejecución funcionará sin problemas.

Un ultimo paso es instalar “Watchdog”, un plugin de Kodi que nos actualizará automáticamente la colección cuando detecte un cambio en el sistema de ficheros.

Para instalarlo, debemos ir a Configuración / add-on en Kodi. Ahi, iremos a “Conseguir Add-ons” y en el “Kodi Add-on repository” buscaremos la opción de “Servicios”. Ahi selecccionaremos el Watchdog y daremos a instalar. La configuración por defecto es suficiente.

Con esto tendríamos el sistema preparado para descargar las series de forma automática en castellano, que se colocan automáticamente en la carpeta deseada dentro de la colección de kodi, que se actualiza automáticamente en Kodi y que una vez finalizado se borra de Deluge, eliminando los ficheros no deseados y dejando únicamente el fichero de video.
Vamos, esperar a recibir el correo, encender la televisión y disfrutar.

Espero que todo os haya funcionado y que la guia haya sido sencilla.

7 comentarios sobre “Actualizando a OSMC (+ Deluge + Flexget)”

  1. Al fin un buen artículo sobre el tema, llevaba tiempo buscando

    Estoy siguiendo los pasos y me encuentro con un problema. Cuando intento actualizar sixx con
    pip install six–upgrade

    se pasa un buen rato Downloading/unpacking six-upgrade

    y después me dice:
    Could not find any downloads that satisfy the requeriments six-upgrade
    Claning up…
    No distibutions at all found for six-upgrade

    ¿alguna idea?
    Gracias de antemano

  2. Hola, queria hacerte alguna consulta. ¿Te da algún problema deluge? ¿Que versión te instala de deluge y libtorrent-rasterbar?
    Todo esto te lo comento porque yo tengo una configuración parecida a la tuya pero con xbian. Sin embargo me veo obligado a usar transmission (que funciona bien pero se queda corto en ciertos aspectos). No se porque deluge se cae cada dos por tres sin motivo aparente (he buscado por internet y me es imposible encontrar una solucion)
    El caso es que me decante por xbian y no por osmc porque se comentaba que no era un sistema operativo completo (no funcionaba apt-get, etc) pero por lo que veo no lo es tanto.
    A ver si eres capaz de darme luz en este aspecto o por el contrario me recomiendas que pase a osmc.

    Gracias por tu tiempo. Un saludo.

  3. Hola,

    lo primero agradecerte esta guía, muy clara y fácil de seguir.

    He tenido dos problemillas. Cuando hay que actualizar el componente six de python me sale esto:

    osmc@osmc:~$ pip install six–upgrade
    Downloading/unpacking six-upgrade
    Could not find any downloads that satisfy the requirement six-upgrade
    Cleaning up…
    No distributions at all found for six-upgrade
    Storing debug log for failure in /home/osmc/.pip/pip.log

    Para actualizarlo he hecho:

    pip install https://pypi.python.org/packages/3.3/s/six/six-1.9.0-py2.py3-none-any.whl

    y parece que ha funcionado.

    He conseguido hacer todos los pasos, pero al ejecutar flexget (flexget execute) me sale esto:

    osmc@osmc:~$ flexget execute
    Traceback (most recent call last):
    File “/usr/local/bin/flexget”, line 5, in
    from pkg_resources import load_entry_point
    File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 2876, in
    working_set = WorkingSet._build_master()
    File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 449, in _build_master
    ws.require(__requires__)
    File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 745, in require
    needed = self.resolve(parse_requirements(requirements))
    File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 639, in resolve
    raise DistributionNotFound(req)
    pkg_resources.DistributionNotFound: pbr>=1.3,<2.0

    alguna idea de porque puede ser?
    Tengo una rpi2 con osmc.

    Gracias y un saludo.

  4. Hola, he seguido tus pasos para instalar deluge pero me sale el siguiente error:

    osmc@osmc:~$ sudo systemctl status deluged -l
    * deluged.service – Deluge Bittorrent Client Daemon
    Loaded: loaded (/etc/systemd/system/deluged.service; enabled)
    Active: active (exited) since Mon 2015-08-31 21:17:49 CEST; 2h 51min ago

    Aug 31 21:17:49 osmc deluged[1428]: Starting Deluge BitTorrent Daemon: deluged Not starting Deluge BitTorrent Daemon deluged, disabled in /etc/default/deluged.
    Aug 31 22:49:06 osmc systemd[1]: [/etc/systemd/system/deluged.service:17] Failed to parse service restart specifier, ignoring: Always
    Aug 31 22:50:02 osmc systemd[1]: [/etc/systemd/system/deluged.service:17] Failed to parse service restart specifier, ignoring: Always
    Aug 31 23:16:37 osmc systemd[1]: [/etc/systemd/system/deluged.service:17] Failed to parse service restart specifier, ignoring: Always
    Aug 31 23:36:06 osmc systemd[1]: [/etc/systemd/system/deluged.service:17] Failed to parse service restart specifier, ignoring: Always

    ¿Sabrías decirme donde esta el problema?, gracias.

    Un saludo.

  5. Hola! gracias por el artículo. He seguido los pasos pero cuando inserto las lineas para activar el inicio de arranque me sale denegado, tienes idea por qué puede ser?
    Es decir, al agregar las lineas
    systemctl enable deluged
    systemctl enable deluge-web

    La respuesta es:
    osmc@osmc:~$ systemctl enable deluged
    Synchronizing state for deluged.service with sysvinit using update-rc.d…
    Executing /usr/sbin/update-rc.d deluged defaults
    insserv: fopen(.depend.stop): Permission denied
    Failed to execute operation: Access denied
    Executing /usr/sbin/update-rc.d deluged enable
    insserv: fopen(.depend.stop): Permission denied
    Failed to execute operation: Access denied
    Failed to execute operation: Access denied
    osmc@osmc:~$ systemctl enable deluge-web

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *