Gestionnaire et lecteur de BD/Comics

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Salut à tous, je vais rester sobre dans ma présentation ; Sébastien, 27 ans, Belge, développeur.

En savoir plus sur le projet

Genèse

Jusque là, j’étais plutôt branché web. Je le suis toujours, mais je me suis récemment penché à nouveau sur le développement client lourd, en particulier C#/.Net.

Pour asseoir les connaissances que j’ai pu obtenir en lisant un bon bouquin sur le sujet (C# 6.0 and the .NET 4.6 Framework, chez Apress, je conseille), je me suis lancé dans la création d’une app de gestion de BD / comics / mangas.

Généralités et avancement

Actuellement, aucune version testable de l’application n’est disponible. Au départ, j’avais commencé à développer cette app dans le double but de m’améliorer en C#/.NET et de développer une app qui m’intéressait et, donc, avec des fonctionnalités qui me semblaient utiles.

Par la suite, je me suis dit que ces fonctionnalités pouvaient en intéresser d’autres. C’est pourquoi j’écris ce post, pour voir si, oui ou non, il y a un intérêt envers cet app, auquel cas il y a alors d’autres fonctionnalités plus globales à développer ainsi qu’une qualité supérieure à atteindre.

Voici les fonctionnalités ou caractéristiques que l’application idéale devrait posséder, les @ indique des fonctionnalités déjà développées, du moins en partie :

  • @ Une interface sobre, mais agréable et facile à utiliser (WPF) ;
  • @ Une bibliothèque qui peut supporter au moins 10 000 BD sans trop broncher ;
  • @ Une application relativement peu gourmande en RAM (dans l’idéal entre 100 et 200 Mo, quelque soit la taille de la bibliothèque) ;
  • @ Une bonne fluidité pour la navigation dans la bibliothèque et la lecture des BD et un lancement rapide de l’app ;
  • @ Un maximum de formats supportés (PDF, CBZ, CBR, CBT, CB7, ZIP, RAR, TAR, 7Z) ;
  • @ La possibilité d’enregistrer les métadonnées directement dans le format initial ou dans un fichier adjacent au fichier BD ;
  • @ La possibilité de scraper automatiquement les métadonnées des BD en fonction du nom (au moins via le site Bedetheque.com) ;
  • — La possibilité d’étendre les fonctionnalités via des plugins (au moins pour les formats et les scrapers) ;
  • — Pouvoir convertir les BD d’un format à un autre ;
  • — L’affichage des doublons ;
  • — L’affichage des BD manquantes aux séries ;
  • — L’affichage de la bibliothèque sous différentes formes (par défaut : genres -> séries -> albums) ;
  • @~ Possibilité de trier, filtrer, rechercher (toujours de manière très rapide, même pour 10 000 albums) ;
  • @ Une lecture simplifiée des BD, avec différents moyens pour tourner les pages ;
  • @ Des affichages différents (ajustement à l’écran, pleine largeur, taille originale, libre…) ;
  • @ Des optimisations pour les pages de la BD (teinte, saturation, contraste, suppression du bruit, correction d’image, amélioration des contours).

Je travaille évidemment sur mon temps libre, donc le développement peut prendre du temps et je ne peux pas donner de deadline.

Objectifs

C’est un projet passion / passe-temps, il n’a donc pas pour but de me faire gagner de l’argent. Il n’y a donc pas, pour le moment de business plan. ;)

Je ne sais pas, non plus, si je vais ouvrir les sources, mais j’y réfléchis (j’attends d’ailleurs vos conseils avisés sur ce point) ; dans tous les cas, il sera possible d’étendre les fonctionnalités via des plugins (à développer en C#, qui implémentent certaines interfaces).

Le projet et son originalité

D’aucuns diront que les gestionnaires et lecteurs de BD existent déjà, certes. Toutefois, je n’en connais pas qui sont capables de scraper automatiquement les métadonnées de la BD en fonction de son nom.

D’autre part, l’application est développée dès le départ dans le but d’être simple et agréable à utiliser. Je n’ai en outre pas la prétention de révolutionner le genre. :)

Voilà quelques images de la version de développement pour vous faire une idée :
Bibliothèque
Lecture

Voici la troisième version alpha de "ComicsManager". Attention, il s’agit d’une version alpha ! Il s’agit donc uniquement d’une préversion dans le but de démontrer le fonctionnement général de l’application. Elle est donc utilisable, mais beaucoup de fonctionnalités ont été désactivées et beaucoup de bugs sont à prévoir (voir même certaines parties totalement inutilisables).

ComicsManager alpha 3

J’insiste qu’il s’agit d’une version alpha, pour éviter l’altération voir la perte pure et simple de vos fichiers, veillez à créer un répertoire temporaire pour le test de l’app et d’y copier vos fichiers.

Je précise, si toutefois c’est nécessaire, que les planches présentes dans les images sont données à titre informatif et qu’en aucun cas ce projet n’encourage le téléchargement illégal d’oeuvre sous licences. Tout comme Windows Media Player, par exemple, il permet la gestion et la lecture de copies numériques d’œuvres que vous vous être procurées légalement. Si toutefois vous n’utilisiez pas ce logiciel dans ce strict cadre légal, vous en prenez l’entière responsabilité et je ne pourrai pas en être tenu pour responsable.

Édité par seb.tack

+16 -0
Auteur du sujet

Voilà, je viens de mettre à jour la présentation avec un premier build que vous pouvez tester.

Lisez bien les notes associées, je le répète, il s’agit d’un POC ! Utilisez donc bien un dossier temporaire pour votre "répertoire à surveiller". Au vu du nombre de mises en garde, il ne pourra pas m’être reproché la perte de données.

Voilà, sinon, outre les messages qui font peur, ce POC vous donne déjà une bonne idée de la direction prise. Pour l’utiliser, lors du premier lancement, cliquez sur le message central, vous pourrez alors spécifier le "répertoire à surveiller". C’est lui qui sera scanné la première fois et qui sera surveillé (ajout de nouvelles BD) aux prochains chargement. Vous pourrez ensuite sélectionner une série, puis une BD et en faire défiler les pages.

Le répertoire doit être composé soit directement des fichiers s’il s’agit de "one shot" soit de sous dossiers portant le nom de la série, lui même comportant les tomes dans l’autre cas. Les fichiers doivent porter le nom du one shoot dans le premier cas et au moins le numéro du tome dans le second cas (s’il y a plus d’infos que juste le numéro, il est préférable de précéder le numéro de "T" ou "#") .

Voilà, quand vous aurez testez, n’hésitez pas à me faire part de votre ressenti (pas des bugs, comme je le dit, c’est un POC et il subsiste encore trop de bugs pour commencer un débugage).

+0 -0
Auteur du sujet

Je viens de mettre à jour "ComicsManager" qui passe donc en version POC 2.

Attention, il s’agit toujours d’un POC, les mises en garde du précédent message sont donc toujours d’actualité.

Changelog

  • Correction de nombreux bugs d’affichage de la bibliothèque ;
  • Nombreuses améliorations esthétiques de la bibliothèque ;
  • Ajout d’animations dans la bibliothèque ;
  • Possibilité de zoomer (librement ou largeur de fenêtre) dans le lecteur ;
  • Ajout de la barre de progression dans le HUD (permet de naviguer rapidement dans la BD).

Cette version devient donc utilisable, même s’il est toujours préférable de l’utiliser sur un backup de vos BD.

+0 -0
Auteur du sujet

"ComicsManager" passe maintenant en version POC 3.

Vraisemblablement, il devrait s’agir de la dernière version "POC". La prochaine version devrait être une alpha. Cela signifie que, même si l’application ne peut toujours pas être utilisée quotidiennement sans risque d’altérer voir de supprimer vos fichier (donc il faudra toujours bien l’utiliser sur une copie de sauvegarde de vos fichier), elle sera néanmoins pleinement fonctionnelle et dans un état qui ressemblera fortement à la version finale.

Changelog

  • Correction de nombreux bugs d’affichage du lecteur ;
  • Possibilité de naviguer avec la souris (en plus du déplacement avec la molette de la souris, possibilité de drag & drop pour le déplacement dans la planche ainsi que pour tourner les pages -> lorsque la planche atteint le bord, si on force encore la souris d’une distance égale à au moins la moitié de l’écran, la page change) ;
  • Ajout du mode de zoom "taille originale" qui affiche la résolution native des images ;
  • Ajout du raccourci claver "ctrl + molette de la souris" pour zoomer tant dans le lecteur que dans la bibliothèque ;
  • Lors du scan des fichiers, si la collection ou le tome correspondant à un ficher n’est pas déduit automatiquement, une fenêtre s’affiche maintenant permettant de choisir la collection et/ou le tome correct.

Voilà, j’espère que, jusqu’à maintenant, ces différentes versions vous plaisent. N’hésitez pas à me donner votre avis, positif ou négatif, me donner vos idées, vos opinions, ou simplement à me montrer votre soutient (ça peut paraître bête, mais ça aide à rester motivé ;) ). C’est aussi histoire que je ne me fasse pas des films sur l’utilité du soft. :)

+0 -0
Auteur du sujet

Voilà la première version alpha, qui modifie pas mal de choses en profondeur ! Comme toujours, cette version est à utiliser avec précaution, sur un répertoire temporaire.

ComicsManager alpha 1

Changelog

  • Correction de nombreux bugs ;
  • Ajout d’un onglet de préférences (roue dentée) ;
  • Possibilité de spécifier ou seront enregistrées les métadonnées (pas sauvegardées, dans un fichier adjacent, dans le fichier si possible, convertir tout en cbz et enregistrer dans le fichier…) ;
  • Possibilité d’ajouter et de supprimer des répertoire à scanner ;
  • Possibilité de spécifier le type de fichier (BD, comics, manga) pour un répertoire donné ;
  • Possibilité de sélectionner un scraper pour un répertoire donné ;
  • Possibilité de surveiller ou non répertoire donné (s’il est surveillé, au lancement de l’app, un scan est effectué pour trouver les nouveaux fichiers et ceux supprimé depuis le dernier lancement, sinon, le scan est effectué une seule fois, à l’ajout) ;
  • Possibilité d’ajouter ou de supprimer les extensions à ajouter à la bibliothèque ;
  • Affichage de la liste des composant (avec, donc, pour la première fois, le support des éventuelles extensions : très gros changement sous le capot) ;
  • Listing des fichiers inconnus (dont les métadonnées n’ont pas pu être récupérées automatiquement avec le scraper sélectionné), il est alors possible de demander à traiter ces albums ;
  • Listing des albums en doublon (ou plus) ;
  • Ajout d’une page de log pour faciliter les futurs retours pour débogage.

Comme vous pouvez le constater, c’est un gros morceau. Il reste du travail, mais ça avance bien. :)

+2 -0
Auteur du sujet

Voilà la version alpha 2, cette fois avec des changement beaucoup plus visibles !

Encore une fois pas mal de modifications apportées à cette version, principalement pour la possibilité d’ajouter des filtres sur les images, qui m’a posé pas mal de soucis au niveau optimisation pour avoir quelque chose qui reste assez fluide.

Ma première tentative a été d’utiliser des librairies d’images toutes faites (Magick.Net, ImageProcessor, AForge…), mais ce ne fut pas concluant. Cela nécessitait parfois plus d’une seconde pour appliquer un effet. Appeler un thread pour effectuer le travail pausait le problème qu’il fallait killer les précédents appels avant d’en lancer un nouveau, ce qui n’est pas du tout optimal et qui engendrait parfois des leak de mémoire. J’ai donc essayé de développer mes filtres moi même, ce qui ne fût pas beaucoup plus rapide. J’ai alors tenté d’exécuter ces filtres au moyen du GPU ce qui aurait été beaucoup plus rapide, mais je n’ai pas trouvé de moyen concluant de le faire. J’ai finalement trouvé la solution au moyen des "effets WPF" qui utilisent un script HLSL compilé pour déléguer le travail sur les pixels à au GPU. Évidemment, je n’ai pas trouvé de script HLSL tout fait pour faire ce que je voulais, j’ai donc du mettre les mains dans le cambouis. Mais je suis assez content du résultat.

Je ne le répéterai plus, d’ici une version RC, il est toujours recommandé d’être prudent et d’effectuer une copie de sauvegarde de vos fichiers.

ComicsManager alpha 2

Changelog

  • Correction de nombreux bugs.
  • Mise en place du système de filtres à appliquer sur les images (luminosité, contraste, saturation, gamma, boost des couleurs, netteté et réduction du bruit). Les deux derniers filtres sont particulièrement intéressant pour restaurer des images en basse résolution, ça ne fait pas de miracles, mais ça apporte une réelle amélioration de la lecture.
  • Affichage de la liste des pages avec miniatures, permet d’aller directement à la page souhaitée.
  • Affichage de la liste des albums de la collection avec miniatures, permet d’ouvrir directement l’album souhaité.
  • La barre de progression permet maintenant non plus seulement de se déplacer de page en page, mais aussi de scroller dans la page affichée.
  • Mise en place de la possibilité de passer d’un album à l’autre de la collection avec les boutons "rewind" et "forward".

Aperçus avant/après application des filtres

Autres captures d’écran des modifications

+1 -0
Auteur du sujet

Juste un petit message pour dire que je n’abandonne pas, mais je n’ai pas eu beaucoup de temps à consacrer à l’app ces dernier temps. Je ne sais pas quand je pourrai m’y remettre.

+0 -0
Auteur du sujet

Bon, après une très longue période sans avoir pu toucher au projet, je m’y suis remis. La majeure partie des modifications ont été faites sous le capot avec de nombreuses grosses optimisations et corrections de bugs majeurs, tant au niveau de la bibliothèque que du lecteur.

L’app passe donc en version alpha 3 et, comme à l’accoutumée , est à utiliser avec précaution, en faisant un backup de vos fichiers.

Notez bien qu’il y a plusieurs modes pour la sauvegarde des métadonnées (Préférences -> Bibliothèque -> Mode de sauvegarde des métadonnées).

  • Ne pas sauvegarder les métadonnées : aucune modification n’est faite sur les fichiers ni ailleurs, les infos sont uniquement sauvegardées en DB, mais quand vous scannez vos BDs une prochaine fois, il faudra à nouveau "scraper" les infos.
  • Enregistrer les métadonnées dans un fichier adjacent (ce qui est actuellement le mode par défaut) : un nouveau fichier portant le même nom que le fichier BD (pdf, cbz…), mais avec une extension xml est crée au même endroit que cette BD.
  • Enregistrer les métadonnées dans le fichier si possible sinon ne pas enregistrer : enregistre les métadonnées dans les fichier pour lesquels cela est possible (dossier d’images, zip, cbz, tar, cbt, 7z et cb7), sinon (pdf, rar, cbr) ne rien faire (comme point 1).
  • Enregistrer les métadonnées dans le fichier si possible sinon dans un fichier adjacent : comme le point précédent, mais dans le cas ou le fichier n’est pas modifiable, comme point 2.
  • Convertir tous les fichiers au format ’cbz’ et y enregistrer les métadonnées : tous les fichiers qui ne sont pas au format cbz (qui est le format par excellence pour les BD, le plus compatible, pratique et adapté… en gros, un fichier zip avec une extension particulière) sont converti en cbz (le fichier original est donc ensuite supprimé !) et les métadonnées sont enregistrées à l’intérieur.

Le dossier de l’application a été restructuré pour être plus clair et est subdivisé ainsi :

  • ComicsManager.exe : l’application en elle-même.
  • ComicsManager.exe.config : la configuration fondamentale de l’app, le pas toucher.
  • config.xml : la configuration utilisateur de l’app, ne pas modifier à moins d’en avoir une solide compréhension (le fichier est mis à jour par l’app).
  • bin : dlls de l’app.
  • components : dlls des extensions de l’app (formats supportés et scrapers).
  • data : données de l’app (DB, listes de séries mises en cache par les scrapers et logs).
  • lib : librairies externes utilisées par l’app.

ComicsManager alpha 3

J’ai remarqué que certains anti-malwares détectent l’app comme un ransomware en mode "Convertir tous les fichiers au format ’cbz’". Ça s’explique par le fait que ça enregistre les fichiers dans une archive pour en supprimer l’original, ce qui est un comportement suspect. Pour éviter les problèmes, ajoutez une exception dans votre anti-malwares (il s’agit évidement d’un faux positif) ou choisissez un autre mode.

Changelog

  • Correction de nombreux bugs majeurs.
  • Nombreuses optimisations importantes.
  • Restructuration du dossier de l’app.
  • Mise à jour / correction des dlls pour pouvoir compiler en "Any CPU" (86 et 64), ce qui est parfois nécessaire pour pouvoir utiliser plus de RAM sur des grosses bibliothèques.
  • Ajout d’un splash screen pour donner une meilleure impression de réactivité lors du chargement de la bibliothèque.
  • Amélioration de l’affichage de la page de listing des doublons.
+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte