Kolekto version 1.3 (gestionnaire de collection de films)
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 :
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 :
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 :
listing 'timeline' {
pattern = '<b><color fg=red>{year}</color></b> <b>{title}</b> by {directors}'
order = 'year', 'title'
}
Et voici comment l’utiliser :
$ kolekto list timeline
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 :
Tag | Arguments | Description |
---|---|---|
b | Texte en gras | |
inv | Inversion des couleurs | |
dim | . | Texte moins marqué |
u | . | Texte souligné |
color | fg, bg | Changer la couleur |
Et voici un exemple d’utilisation :
<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 :
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 :
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.