Logo de Kolekto

Pour ceux qui auraient raté mes précédents articles sur Kolekto, je rappelle que ce programme permet de gérer une collection de film très simplement en utilisant une arborescence sur le système de fichiers pour organiser sa collection. L’intéret est d’ensuite utiliser le programme de son choix pour naviguer et jouer ses films (console, dlna, gestionnaire de fichiers, xbmc etc.).

La version 1.3 apporte pas mal de nouveautés, moins que je ne le souhaitais, mais je préfère rester fidèle au principe du “Release early, release often” (même si la dernière version date de presque 6 mois !).

Correction de bugs et fonctionnalités mineures

  • Correction de la commande edit qui ne fonctionnait plus
  • Meilleur nettoyage des titres pour la recherche dans la commande import
  • Affichage de la qualité des doublons dans la commande find-duplicates, il est ainsi plus facile de choisir lequel supprimer
  • Migration vers Confiture (nouveau nom de Dotconf, la bibliothèque permettant de parser les fichiers de configuration)

Réécriture des informations

Un nouveau plugin de source de données (datasource) permet de réécrire les informations des films. Concrètement, vous pouvez par exemple retirer le mot “Collection”, un poil redondant des noms de collections de TMDB :

1
2
3
4
5
datasource 'rewrite' {
    rewrite 'collection' {
        value = "sub('(?i) collection$', '', movie.get('collection')) if 'collection' in movie else None"
    }
}

En pratique, la règle de réécriture est formulée en utilisant une expression Python, le film courant est accessible depuis le dictionnaire movie. Quelques fonctions vous sont accessibles comme sub et split (re.sub et re.split).

Notez enfin qu’il est possible d’ignorer les erreurs en utilisant le paramètre ignore_error, vous pouvez ainsi écrire vos règles de réécriture sans vous préoccuper de l’existance de certaines informations. Voici une version simplifiée de l’exemple précédent en utilisant cette option :

1
2
3
4
5
6
datasource 'rewrite' {
    rewrite 'collection' {
        value = "sub('(?i) collection$', '', movie.get('collection'))"
        ignore_error = yes
    }
}

Listings configurables

Les listings affichés par la commande list sont maintenant configurables grace à un pattern, un peu comme pour les vues. Cela permet d’afficher différentes informations et de controler l’ordre d’affichage des films.

Voici un exemple de configuration d’un nouveau listing “timeline” qui affiche les films dans l’ordre de sortie :

1
2
3
4
listing 'timeline' {
    pattern = '<b><color fg=red>{year}</color></b> <b>{title}</b> by {directors}'
    order = 'year', 'title'
}

Et voici comment l’utiliser :

1
$ kolekto list timeline
/assets/posts/kolekto-version-13/timeline.png

Nouveau système de formatage du texte

Un nouveau système de formatage du texte basé sur des tags a été intégré dans Kolekto. Ce système est utilisé en interne pour le formatage du texte affiché, mais peut aussi être utilisé dans les nouveaux patterns de listing vu plus haut.

Les tags existant sont les suivants :

TagArgumentsDescription
b Texte en gras
inv Inversion des couleurs
dim.Texte moins marqué
u.Texte souligné
colorfg, bgChanger la couleur

Et voici un exemple d’utilisation :

1
<b>Foo <color fg=red>BAR !</color></b>

Mise en cache des informations de mediainfos

Le plugin mediainfos, responsable de récupérer des informations sur les médias eux-mêmes (qualitée, durée etc.) utilise maintenant un cache, partant du principe que les informations récupérées ne changeront pas.

Cette optimisation à fortement réduit le temps d’exécution de la commande link, et à permis également l’utilisation de ces informations dans la commande list (il n’était en effet pas acceptable d’extraire l’intégralité de ces informations depuis les fichiers vidéo à chaque utilisation de list).


En bonus, voici un exemple de ce qu’il est possible de faire en utilisant conjointement ces nouvelles fonctionnalités. Ce morceau de configuration permet d’afficher la qualité de la vidéo avec un code couleur (rouge = SD, jaune = 720p, vert = 1080p) dans le listing par défaut :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
datasource 'rewrite' {
    rewrite 'quality_tag' {
        value = "{'SD': '<inv><color fg=red><b> SD </b></color></inv>',
                  '720p': '<inv><color fg=yellow><b> 720p </b></color></inv>',
                  '1080p': '<inv><color fg=green><b> 1080p </b></color></inv>'}.get(movie.get('quality', ''), '')"
    }
}

listing 'default' {
    pattern = '<b>{title}</b> ({year|"unknown"}) by {directors} {quality_tag}'
}

Et le résultat :

Qualité en couleur !

N’hésitez pas à remonter tout problème que vous rencontrerez, à contribuer au code, ou à exprimer vos idées d’amélioration sur le bug tracker !


Merci à Anaël pour la relecture.