Cómo instalar un programa alojado en GitHub

Hace unos días encontré un artículo que hablaba de un programa muy interesante (del cual hablaré en otra entrada) y me decidí a probarlo. Lo interesante es que dicho programa está alojado en GitHub. Yo no tenía experiencia previa con GitHub, lo que me llevó a escribir este artículo por si vosotros tampoco y puede seros de utilidad.

¿Qué es GitHub? GitHub es un sitio para gestión de proyectos donde los desarrolladores pueden colgar su código, el cual estará accesible para toda la comunidad a no ser que hayan creado una cuenta de pago. Lo bueno de GitHub es que da pie a que otros desarrolladores vean, comenten y ayuden a mejorar el código.

Ahora imaginad que encontrais un programa cuyo código está alojado en GitHub y queréis instalarlo en vuestra Raspberry Pi ¿cómo se hace? obviamente no podemos utilizar apt-get porque el software no estará en los repositorios oficiales, pero aquí os detallo cómo hacerlo.

  1. Lo primero que tenemos que hacer es instalar git mediante el comando sudo apt-get install git
  2. Ahora nos creamos una carpeta en nuestro /home llamada git donde almacenaremos todos los proyectos que bajemos: mkdir ~/git
  3. Después nos vamos a la carpeta que hemos creado con el comando cd ~/git
  4. Es este punto tenemos que descargar (o clonar) el proyecto. Imaginad que queremos clonar un proyecto cualquiera, nos vamos la página de GitHub, lo buscamos y copiamos su URL. Por ejemplo https://github.com/annoyatron255/Game
  5. Ejecutamos el comando de clonado git clone en el terminal con la URL que hemos copiado pero sustituyendo http por git, siendo en mi caso git clone git://github.com/annoyatron255/Game
  6. Esto nos creará una carpeta con el nombre del proyecto que hemos clonado. Cambiamos a dicha carpeta con el comando cd
  7. Y aquí ya depende de cada proyecto. En mi caso al hacer un ls veo que existe un fichero makefile por lo que tengo que ejecutar el comando make para instalarlo ya que es probablemente un programa en C++. Si tuvierais un fichero .py entonces tendrías que usar python.

En la próxima entrada pondremos todo esto en práctica para instalar subliminal, un software la mar de interesante que nos ayudará a bajar los subtítulos de nuestras series favoritas automáticamente. No os lo perdáis.

Anuncios

Instalación de FlexGet y configuración (I): series

En la entrada de hoy voy a tratar uno de los temas principales por los que adquirí mi Raspberry, que no es más que la búsqueda automática y descarga de series y películas. Esto lo consigo mediante el programa FlexGet (disponible para todas las plataformas). A lo largo de una serie de artículos iré tratando diversos temas de configuración para conseguir diferentes objetivos, viendo en este primero la instalación y configuración para descargar las series que sigo en versión original.

Instalación de FlexGet

La instalación de FlexGet en XBian no es diferente a la instalación de cualquier otro software en Linux que se encuentre en el repositorio. Para ello, después de conectarnos a nuestra Raspberry mediante ssh al igual que las demás ocasiones, ejecutamos la instrucción que instalará python en caso de no tenerlo: sudo apt-get install python python-setuptools

Instalacion de Python

Ahora instalamos FlexGet y unos componentes extras mediante easy_install: sudo easy_install flexget mechanize transmissionrpc

Instalación de flexget

Tardará un rato, pero con ello ya lo tenemos instalado y lo podemos comprobar ejecutando el comando flexget -V:

Comprobacion de la instalacion

Pero si no lo configuramos adecuadamente no haremos nada, y es en la configuración donde FlexGet se hace fuerte, ya que su configuración es muy amplia y nos permite hacer muchas cosas. El precio que tenemos que pagar es que llegar a entender esa configuración puede llegar a ser complicado.

Primero tenemos que crear el directorio donde irá la configuración y la base de datos mediante mkdir /home/xbian/.flexget y luego para entrar en la configuración de FlexGet lo hacemos mediante el comando nano /home/.flexget/config.yml

Creación del directorio
Configuración inicial de flexget

Como ya os he comentado FlexGet tiene muchas opciones. Yo lo que voy a hacer es dejaros a continuación lo que yo tengo en mi fichero de configuración y sobre él os comento:

tasks:

  tv-shows:
    series_premiere: yes

    transmission:
      path: /mnt/disco1gb/tvshows
      host: localhost
      port: 9091
      username: transmission
      password: ********
      addpaused: no

    rss: http://rss.thepiratebay.se/208

    thetvdb_lookup: yes

    quality: 720p HDTV h264

    regexp:
      reject:
        - SUB
        - DUAL
        - WEB
        - CENSORED
        - SCREENER
        - LATINO

    content_filter:
      reject:
        - '*.avi'
        - '*.mpg'
        - '*.mpeg'

    series:
      - 12 Monkeys:
        path: /mnt/disco1gb/tvshows/12_Monkeys
      - Game of Thrones:
        path: /mnt/disco1gb/tvshows/Game_of_Thrones
        set:
          tvdb_id: 121361
  • tasks aquí indicamos las tareas.
    • tvshows inicio de la configuración de la tarea de series
      • series_premiere poniendo este valor a YES le decimos a FlexGet que se descargue todos los capítulos de series no conocidas y cuyo nombre contenga S01E01. Esto sirve para descubrir nuevas series y programas. OJO, solamente bajará el capítulo 1, si al final la queremos seguir habrá que añadirla en la sección de más abajo.
      • transmission aquí le indicamos configuración de tranmission específica para esta tarea, en este caso de series.
        • path este será el directorio por defecto de todas las series. Sobreescribe el directorio indicado en presets / global
        • host por si conectamos a un transmission remoto. En mi caso es localhost porque están en la misma máquina.
        • port puerto de conexión. Por defecto es el 9091.
        • username usuario para conectarse. Si no lo cambiaste al instalarlo, por defecto es transmission.
        • password contraseña para conectarse. Por defecto sería también transmission.
        • addpaused poniendo esto a NO permite que las descargas se inicien automáticamente al ser añadidas. Si ponemos YES entonces se añaden pausadas y tenemos que arrancarlas manualmente.
      • rss este será el RSS donde FlexGet buscará los torrent. El que yo tengo indicado corresponde a la sección HD de series en TPB, pero podéis indicar cualquier otro.
      • thetvdb_lookup esto sirve para que FlexGet busque los ficheros en la web thetvdb.com para poder identificar mejor las series en caso de series con nombres parecidos.
      • quality indicamos la calidad mínima a la que queremos nuestros capítulos. Yo lo tengo a 720p, lo que quiere decir que si encuentra alguno a 1080p también lo bajará.
      • regexp para definir términos de aceptación y/o rechazo.
        • reject para rechazar torrents. En mi caso lo uso para no descargar capítulos ya subtitulados (SUB), con doble audio (DUAL), con calidad web que suele ser mala (WEB), etc etc.
      • content_filter sirve para filtrar por tipo de archivo.
        • reject para rechazar, igual que en el apartado anterior.
          • ‘*.avi’ rechaza todos los archivos .avi
    • – Nombre_de_la_serie bastante auto-explicativo.
      • path si tenemos definido un directorio específico para esa serie lo indicamos aquí.
      • set aquí podemos indicar configuración adicional solo para esa serie.
        • tvdb_id si la serie tiene entrada en la página de thetvdb aquí podemos indicar su ID para evitar problemas con series con nombre muy parecidos.

Es MUY importante respetar la indexación, esto es, el número de espacios que hay al comienzo de cada linea. Es así porque el fichero de configuración es un YML y FlexGet espera esa estructura. Si en lugar de por ejemplo 4 espacio ponemos 3 o 5, el fichero de configuración podría no funcionar o funcionar incorrectamente.

Ahora que ya lo tenemos todo salimos del editor con CTRL+X, confirmamos que queremos escribir con Y y presionamos ENTER para no cambiarle el nombre.

¿Cómo podemos saber que lo hemos hecho bien? lo primero sería comprobar que la estructura del fichero config.yml es correcta. Esto es un proceso más o menos rápido que se consigue con el comando flexget check

Check pasado satisfactoriamente

Como podéis ver en la imagen el resultado de la tarea es passed, lo que quiere decir que está bien. Si hubiéramos tenido algún error en el fichero nos habría dado error e indicado la sección donde se encuentra.

Ahora podemos hacer una segunda comprobación que consiste en que FlexGet se conecte al RSS que le hemos indicado en la configuración y “descargue” los capítulos correspondiente (en caso de que los haya). Lo entrecomillo porque realmente utiliza una base de datos temporal que es eliminada después de la ejecución, por lo que realmente no descarga nada. Esta comprobación la hacemos con el comando flexget ––test execute (dos guiones)

Check funcionando sin problema

Aquí ya la salida ofrecida es más larga, pero sería conveniente revisar las lineas para ver que está rechazando entradas correctamente según lo definido.

Y ya estaría listo, cada vez que ejecutemos el comando flexget lanzaríamos la comprobación para ver si hay capítulos nuevos a descargar y los incorporaría directamente a transmission. El próximo día os enseñaré cómo hacer para que se ejecute cada cierto tiempo para automatizarlo aún más.