Logo de Kolekto

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 :

1
2
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 :

1
# wget http://debian.tecknet.org/debian/public.key -O - | apt-key add -

Mettez à jour la liste des paquets puis installez Kolekto :

1
2
# aptitude update
# aptitude install kolekto

Si vous utilisez une autre distribution, vous pouvez utiliser PIP :

1
# 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 :

1
2
3
$ 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 :

1
$ 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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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 :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
$ 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 :

1
2
$ kolekto list
 0d66fbefb109df228a6a589f3fb95b50f6e9826e  Big Buck Bunny (2008) by Sacha Goedegebure

Vous pouvez aussi afficher les informations relatives au film :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$ 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 :

1
2
$ kolekto link
Found 0 links to delete, 22 links to create

Vous pouvez alors inspecter le travail de Kolekto :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
$ 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 :

1
2
3
4
5
6
7
8
$ 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 !