Kolekto, gestionnaire de collection de films
Kolekto est un nouveau projet que je développe et qui permet de gérer une collection de films. Bien qu'il existe déjà un certain nombre d'outil de ce genre, je n'en ai pas trouvé à mon gout, c'est à dire qui soit vraiment simple, léger, utilisable en ligne de commande, et dont la navigation pourrait être possible sur la Freebox (ou tout autre lecteur via DLNA).
Le principe de Kolekto est de gérer une arborescence de films en utilisant des liens symbolique pour les trier. Le tri peut être réalisé selon un certain nombre de motifs pouvant eux même être composés de toutes les informations attachées à un film. Il est par exemple de trier les films par acteur, réalisateur, années etc.
Kolekto utilise par défaut TheMovieDB pour rechercher les informations sur les films. Ce fonctionnement est bien entendu totalement modulaire, il sera donc possible de créer des plugins pour gérer n'importe quelle autre base de données d'information sur les films.
Malheureusement, l'API de TheMovieDB requière l'utilisation d'une clé d'API, et celle-ci n'est données qu'après une inscription et une requète de demande de clé nécessitant bien trop d'informations (adresse, motivations etc.). J'ai donc, pour les besoins de Kolekto, créé un proxy permettant de récupérer les informations de TMDB sans clé d'API. En prime, ce proxy permet de récupérer les informations necessaire à Kolekto en une seule requête et utilise un cache, son fonctionnement est donc un peu plus rapide.
Pour les développeurs, Kolekto est programmé en Python et est publié sous licence MIT. Son code est disponible sur Github, et les contributions sont naturellement bienvenues en passant par les pull-requests ou en m'envoyant un patch GIT par email.
Pour terminer, voici un petit tutoriel de l'installation et l'utilisation de Kolekto.
Installation
Si vous utilisez Debian Wheezy, Kolekto est packagé pour cette distribution et les paquets sont disponible sur mon dépôt personnel.
Ajoutez les lignes suivantes à votre fichier /etc/apt/source.list :
deb http://debian.tecknet.org/debian wheezy tecknet deb-src http://debian.tecknet.org/debian wheezy tecknet
Importez la clé GPG du repository dans APT en utilisant la commande suivante :
# wget http://debian.tecknet.org/debian/public.key -O - | apt-key add -
Mettez à jour la liste des paquets puis installez Kolekto :
# aptitude update # aptitude install kolekto
Si vous utilisez une autre distribution, vous pouvez utiliser PIP :
# pip install dotconf kaa-base kaa-metadata progressbar requests kolekto
Utilisation
Tout d'abord, créez un dossier pour Kolekto puis utilisez la commande init afin de créer une configuration par défaut :
$ mkdir kolekto_test && cd kolekto_test $ kolekto init Initialized empty Kolekto tree in kolekto_test/
C'est dans ce dossier de Kolekto importera vos films et qu'il créera les différents liens symboliques en fonction de la configuration.
Utilisez ensuite la commande config pour éditer la configuration de Kolekto :
$ kolekto config
Cette commande lancera votre éditeur préféré et affichera la configuration par défaut.
Deux types de sections existent :
- Les vues (view) qui sont les motifs à utiliser pour les génération des liens symboliques
- Les sources de données (datasource) qui sont les plugins utilisés pour rechercher des informations sur les films.
Une vue par défaut permet de trier les films par titre, tandi que la configuration par défaut des sources de données utilise le proxy vers TheMovieDB dont j'ai parlé plus haut. Le plugin "mediainfos" est aussi activé par défaut et permet de récupérer des informations sur les fichiers directement (qualité, durée...).
Vous pouvez ajouter quelques vues pour notre essai, voici par exemple la configuration que j'utilise :
view 'Titles' { pattern = '{title} ({year}).{ext}' } view 'Actors' { pattern = '{cast}/{title}.{ext}' } view 'Quality' { pattern = '{quality}/{title}.{ext}' } view 'Year' { pattern = '{year}/{title}.{ext}' } view 'Genre' { pattern = '{genres}/{title}.{ext}' } view 'Director' { pattern = '{directors}/{year} - {title}.{ext}' } view 'French title' { pattern = '{title_fr}.{ext}' } view 'Collection' { pattern = '{collection}/{year} - {title}.{ext}' } view 'TMDB Score' { pattern = '{tmdb_votes}/{title}.{ext}' } view 'Country' { pattern = '{countries}/{title}.{ext}' }
Sauvegardez et quittez.
Vous pouvez ensuite importer in film dans la collection :
$ kolekto import /tmp/big_buck_bunny_480p_surround-fix.avi Title to search [big_buck_bunny_480p_surround-fix]? big buck bunny Please choose the relevant movie for the file: big_buck_bunny_480p_surround-fix.avi [1] Big Buck Bunny (2008) by Sacha Goedegebure [tmdb_proxy] [2] Enter manually informations [3] None of these Choice [1-3]? 1 Do you want to edit the movie metadata [y/N] Copying movie in kolekto tree... 100% [================================================] 396.36 MB/s | Time: 0:00:00
Utilisez la commande list pour vérifier l'importation du film :
$ kolekto list 0d66fbefb109df228a6a589f3fb95b50f6e9826e Big Buck Bunny (2008) by Sacha Goedegebure
Vous pouvez aussi afficher les informations relatives au film :
$ kolekto show 0d66fbefb109df228a6a589f3fb95b50f6e9826e title: Big Buck Bunny year: 2008 directors: Sacha Goedegebure collection: Blender Open Movies genres: Animation Comedy Short container: AVI countries: Netherlands ext: avi quality: SD runtime: 9 score: 1.3359637846 title_es: El gran conejo title_nl: Peach Open Movie Project title_us: Big Buck Bunny (Short 2008) tmdb_votes: 4 _tmdb_id: 10378
N'hésitez pas à ce stade à ajouter d'autres films à la collection. Notez qu'il est possible d'utiliser du globbing dans la commande import afin, par exemple, de gérer l'importation de tout un dossier à la fois.
Les liens symboliques ne sont pas automatiquement créés lors de l'importation, pour cela il faut utiliser la commande link :
$ kolekto link Found 0 links to delete, 22 links to create
Vous pouvez alors inspecter le travail de Kolekto :
$ tree . ├── Actors │ ├── Halina Reijn │ │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d │ └── Thom Hoffman │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d ├── Collection │ └── Blender Open Movies │ ├── 2008 - Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ └── 2010 - Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d ├── Country │ └── Netherlands │ ├── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d ├── Director │ ├── Colin Levy │ │ └── 2010 - Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d │ └── Sacha Goedegebure │ └── 2008 - Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e ├── Genre │ ├── Animation │ │ ├── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d │ ├── Comedy │ │ └── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ ├── Fantasy │ │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d │ └── Short │ ├── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d ├── Quality │ ├── 720p │ │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d │ └── SD │ └── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e ├── Titles │ ├── Big Buck Bunny (2008).avi -> ../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ └── Sintel (2010).mkv -> ../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d ├── TMDB Score │ └── 4 │ ├── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e │ └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d └── Year ├── 2008 │ └── Big Buck Bunny.avi -> ../../.kolekto/movies/0d66fbefb109df228a6a589f3fb95b50f6e9826e └── 2010 └── Sintel.mkv -> ../../.kolekto/movies/3bb8414b6f70e5125e2092a3d96b483088a2283d 24 directories, 22 files
Enfin, il est possible d'obtenir des statistiques sur la collection :
$ kolekto stats Number of movies: 2 Total runtime: 0:23:00 Total size: 853.0 MiB Genres top3: Short (2); Animation (2); Fantasy (1) Director top3: Colin Levy (1); Sacha Goedegebure (1) Quality: SD (1); 720p (1) Container: AVI (1); Matroska (1)
D'autres commandes sont disponibles, vous pouvez utiliser l'option --help pour les trouver.
Voila, j'espère que ce petit outil vous plaira et n'hésitez surtout pas à m'indiquer vos remarques et à contribuer !