Esto es algo bastante útil para los que seguimos series semana a semana (en mi caso principalmente anime). Normalmente hay que preocuparse de revisar las paginas y luego bajar el *.torrent para iniciar las descargas, así que pensé en hacerlo de una manera mas automática, o sea que mi PC revisara cada cierto tiempo los feeds rss que tiene los sitios y si hay nuevos torrent que los guardara e iniciara su descarga. Estarán pensando que tiene esto de novedoso si utorrent ya lo hace, la respuesta es simple yo lo quería hacer desde GNU/Linux y con mi cliente favorito (rtorrent, que por cierto es bastante bueno)

Para hacerlo voy a utilizar flexget (para revisar los feeds) y como programa para descargar rtorrent, aunque sirve cualquier otro cliente que revise un directorio en búsqueda de nuevos *.torrent. La explicación es un poco larga así que hagan click en continuar leyendo para ver la explicación


1. Configurando rtorrent

Vamos a configurar rtorrent de tal manera que use varios directorios que serán los siguientes (pueden cambiarlos a su propio gusto, u omitir alguno)

~/.rtorrent/session/ (aquí guardo los datos de las sesiones de rtorrent)
~/torrent/torrent/ (aquí van los *.torrent para que inicie su descarga de forma automatica)
~/torrent/descargas/ (aquí están los archivos que aun no se terminan de bajar)
~/torrent/terminados/ (aquí se mueven los que están terminados y que ahora solo se están seedeando)

Para ello modificamos el archivo de configuración de rtorrent (si no lo tienen lo pueden con copiar desde /usr/share/doc/rtorrent/examples/rtorrent.rc.) y cambiando las siguientes lineas.

# Default directory to save the downloaded torrents.
directory = ~/torrent/descargas

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
session = ~/.rtorrent/session

# Watch a directory for new torrents, and stop those that have been
# deleted.
schedule = watch_directory,5,5,load_start=~/torrent/torrent/*.torrent
schedule = untied_directory,5,5,stop_untied=

# When the torrent finishes, it executes "mv -n <base_path> ~/Directory/"
# and then sets the destination directory to "~/Directory/". (0.7.7+)
on_finished = move_complete,"execute=mv,$d.get_base_path=,~/torrent/terminados/ ;d.set_directory=~/torrent/terminados/"

Claro que con este archivo de configuración se pueden hacer varias cosas más, como detener el torrent al alcanzar un ratio establecido, establecer los puertos a usar, usar puertos a azar (dentro del rango establecido), limitar las velocidades de bajada, subida, etc. si les interesa pueden revisar este blog donde explican como usar rtorrent

2. Instalando flexget

Primero nos instalamos las dependencias de flexget (que es un programa que baja .torrents, podcasts, etc.), basta con un simple:

# apt-get install python-yaml python-beautifulsoup python-feedparser

Ahora nos vamos al sitio de flexget (flexget.com) y nos descargamos la ultima versión y la descomprimimos (en mi caso la deje en /home/usuario/flexget), no es necesario instalarlo ya que se trata de un script de python, así que se puede ejecutar directamente

3. Configurando flexget para que revise los feeds (y baje)

Ahora nos falta indicarle a flexget que feeds revisar y filtrar el contenido de estos, como este es un ejemplo voy a ir a frozen-layer y voy a utilizar el anime toradora! como ven hay una serie de torrents de distintos capítulos y distintos fansubs, además de un feed rss (que es este). En mi caso quiero bajar los de AnS, y si se fijan por cada episodio vay dos versiones (una XviD+Mp3 y otra H264+AAC) por lo que nos descargaremos solo usa. Así que voy a explicar como filtrarlos.

Primero abrimos con un editor de texto el archivo config.yml que esta en el directorio de flexget (en mi caso lo deje en /home/usuario/flexget/config.yml) y ponemos algo como lo que sigue (cuidado la indentación es a 2 espacios):

# Configuration should be written in here. See documentation at http://flexget.com/wiki/Configuration

feeds:
  toradora feed:
    rss: http://www.frozen-layer.com/anime/3147/feed
    patterns:
      - AnS
    ignore:
      - H264
    download: ~/torrent/torrent/

Explicación:
toradora feed es el nombre que le damos a este rss puede ser cualquiera que uno quiera
en rss: le indicamos la dirección del feed
con patterns le indicamos los patrones a buscar, en este caso son las que tengan AnS en el titulo o en la url (si son varios patrones enumerarlos como una lista)
con ignore le decimos que descarte los que tengan H264 en en titulo o url (por lo que nos descargamos solo las versiones XviD+Mp3)
en download: es el directorio donde se guardaran los *.torrent y como rtorrent esta vigilando ese directorio, al descargarlos allí se van a iniciar de forma automática.

También se pueden utilizar expresiones regulares para filtrar, en la wiki de flexget lo explican en configuration y hay ejemplos en el CookBook y en los Modules

Ahora para que se revise los feeds e inicie la descargas simplemente en el directorio de flexget se hace

$ python flexget.py

Nota: el programa va recordando los que ya descargo para no repetirlos

Por ultimo lo podemos agregar flexget a un cron, para que se ejecute automáticamente cada cierto tiempo y así no tener que preocuparnos, para ello hacemos:

$ crontab -e

La sintaxis de cron es (hacia el lado)

  • Minutos: (0-59)
  • Horas: (0-23)
  • Días: (1-31)
  • Mes: (1-12)
  • Día de la semana: (0-7), siendo 1=Lunes, 2=Martes,… 6=sábado y 0 o 7=Domingo
  • La última columna corresponde al path absoluto del binario o script que se quiere ejecutar

Para especificar todos los valores posibles de una variable se utiliza un asterisco (*).

Asi por ejemplo para que se ejecute casa 50 minutos sería:

*/50 * * * * /home/usuario/flexget/flexget.py -q > /dev/null 2>&1

Nota: cron manda un mail cada vez que ejecuta una tarea, con el dev/null 2>&1 lo evita

Si quieren una explicación mas detallada de como usar cron lean esto