Gestión sencillita de tu colección de películas

Python

Esta receta explica cómo añadir de una forma muy fácil títulos a tu colección (gestionada con GCStar) mediante un scriptillo hecho en Python + amara. (menudo combo! Smiling)

Introducción

Hoy me hablaba MagMax acerca de GCStar, un programilla bastante decente para gestionar colecciones de cosas: libros, películas, juegos, vinos… Como me da mucha pereza tener que abrir el programa sólo para añadir un título y el catálogo lo guarda en un XML he pensado que podía aprovechar para escribir una receta de amara y en esas estamos. Por lo que parece, el programa permite importar títulos desde un fichero de texto pero no he dado con la forma de hacerlo desde línea de comandos.

Ingredientes

  • gcstar
  • python-amara

El script

Como verás, gracias a amara el programa resulta muy sencillo:

gcstar_add.py

#!/usr/bin/python
import sys, os, amara
 
def get_collection_filename():
    for line in file(os.path.join(os.environ['HOME'],
                                  '.config/gcstar/GCstar.conf')):
        if line.startswith('file='):
            return line.split('=')[1].strip()
 
EXTs = ['.avi','.mpg', '.mpeg', '.mkv', '.ogm']
 
dbname = get_collection_filename()
doc = amara.parse(dbname)
count = 0
 
for line in sys.stdin:
 
    line = line.decode('utf-8').strip()
    format = ''
 
    name, ext = os.path.splitext(line)
    if ext in EXTs:
        line = name
        format = ext[1:]
 
    item = doc.xml_create_element(u'item', content=u' ')
    item.title = unicode(line)
    if format: item.video = unicode(format)
    doc.collection.xml_append(item)
    count += 1
 
fd = open(dbname, 'w')
fd.write(doc.xml())
fd.close()
 
print count, 'new items'

Puedes guardar el fichero en ~/bin o en /usr/local/bin por ejemplo. Aunque la receta era sobre amara, la verdad es que no hay mucho que contar sobre su uso, no?

Modo de uso

El script utiliza el último fichero de colección que hayas utilizado desde GCStar, leyéndolo desde la configuración del programa, así que no tiene que indicarle ningún parámetro.

Puedes ponerle un título desde la entrada estándar:

echo “Love story” | gcstar_add.py

Y claro, también un fichero de texto (en UTF-8) que contenga títulos (uno por línea):

gcstar_add.py ~/pelis.gcs < mis_pelis.txt

O añadir todos los ficheros que un directorio:

$ ls *.avi | gcstar_add.py

Desde nautilus

Y para completar la jugada, el script para añadir películas directamente desde nautilus.

Add to my GStar collection

!/bin/bash
 
fname=/tmp/gcstar-$PPID
:> $fname
 
for name in "$@"; do
    echo $name >> $fname
done
 
~/bin/gcstar_add.py < $fname
 
rm $fname

Le das permisos de ejecución, lo guardas en ~/.gnome2/nautilus-scripts/ y listo.