ComicDesk

Ein Dateimanager, der nur Comics kennt: browsen, lesen, taggen, umbenennen, kopieren, verschieben, löschen. Und die Frage beantworten, welche Hefte einer Reihe noch fehlen.

Status: nutzbar, aber jung. Entwickelt und getestet unter Linux. Windows und macOS sollten laufen (reines Qt/Python), sind aber ungetestet. Eine automatisierte Testsuite gibt es noch nicht.

Was es kann

Oberfläche auf Deutsch und Englisch, umschaltbar im laufenden Betrieb.

Browsen und lesen

Cover-Kacheln, Ordnerbaum, der bei deinen Sammlungen beginnt statt bei /. Eingebauter Reader mit Tastaturbedienung und Vollbild.

Taggen

Schreibt ComicInfo.xml ins Archiv — dasselbe Format, das ComicTagger, Komga, Kavita und ComicRack lesen.

Automatisch taggen

Gegen ComicVine und einen lokalen Dump der Grand Comics Database. Gewichtete Bewertung, Cover-Abgleich per Bild-Hash.

Reihen prüfen

Welche Ausgaben fehlen? Lücken im eigenen Bestand und Angaben der Quelle werden getrennt geführt — nie vermischt.

Sammlungen durchsuchen

SQLite-Index mit Feldsuche: serie:batman jahr:2019 joker. Treffer erscheinen als Reihen und als einzelne Ausgaben.

Seiten verwalten

Seiten löschen und umsortieren, mit Rückgängig. Geschrieben wird erst auf Befehl — bis dahin bleibt die Datei unangetastet.

Bilder

Noch nicht bestückt.

Kachelansicht mit Covern
Trefferwahl beim Taggen
Reihenansicht mit fehlenden Heften

Installation

Voraussetzung ist Python 3.10 oder neuer.

git clone https://github.com/aaaaaprvdgrwwelt/comicdesk.git
cd comicdesk
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Für CBR und CB7 wird zusätzlich 7z gebraucht:

sudo apt install p7zip-full p7zip-rar   # Debian/Ubuntu

Starten

./comicdesk.sh            # oder: .venv/bin/python -m comicdesk
./comicdesk.sh ~/Comics   # direkt in einem Ordner starten
./install-desktop.sh      # Eintrag im Anwendungsmenü anlegen

Formate

Die Wahrheit über einen Comic steht immer in der Datei selbst, nicht im Index.

FormatLesenTags schreibenSeiten bearbeiten
CBZ / ZIPjaja (ComicInfo.xml im Archiv)ja
CBR / CB7ja, via 7znein → „Nach CBZ konvertieren“nein
CBTjanein → „Nach CBZ konvertieren“nein
PDFja, via PyMuPDFja (Datei daneben)ja

Automatisches Taggen

Beide Quellen können gleichzeitig aktiv sein; bewertet wird quellenübergreifend.

ComicVine

API-Key kostenlos nach Registrierung. Limit sind 200 Anfragen pro Stunde, deshalb wird auf etwa eine Anfrage pro Sekunde gedrosselt und jede Antwort dauerhaft zwischengespeichert. Liefert Cover-URLs — nur damit ist der Bildabgleich möglich.

GCD (lokal)

Die Grand Comics Database hat keine öffentliche API, stellt aber alle zwei Wochen SQLite-Dumps bereit. Einmal „Suche vorbereiten“ drücken — das ist nicht optional:

Serie suchenDauer
ohne Vorbereitung15.900 ms
mit Volltextindex0,2 ms

Gemessen an einem echten Dump (6,2 GB). Der Aufbau dauert rund zehn Sekunden und legt eine eigene 7-MB-Datei an; der Dump selbst wird nicht verändert.

Woher die Tags kommen, bleibt sichtbar. Jede Kachel trägt einen Punkt: ComicVine, GCD, von Hand eingetragen, getaggt ohne erkennbare Quelle, ungetaggt. „Von Hand“ wird nur dort behauptet, wo es belegt ist.

Reihen: was fehlt mir?

Zwei Aussagen, bewusst nie vermischt.

Lücke

Zwischen zwei Heften, die du hast, fehlt eine Nummer. Folgt allein aus dem eigenen Bestand, braucht keine Quelle, ist nicht bestreitbar.

Laut Quelle

Dass eine Reihe über dein höchstes Heft hinaus weiterging, weiß nur eine externe Quelle. Wird mit Quellenangabe geführt und als Angabe gekennzeichnet, nicht als Gewissheit.

Die Zuordnung läuft über die in den Tags gespeicherte Heft-ID, nicht über den Serientitel. Eine Namenssuche nach „Die Rächer“ greift bei GCD sonst die Condor-Auflage von 1979, obwohl die eigene Reihe eine andere ist. Nicht jede Reihe ist fortlaufend nummeriert — Magazine wie Zack nummerieren nach Datum. Wo die Nummerierung uneinheitlich ist, wird keine Lücke behauptet. Und wer es besser weiß als jede Quelle, trägt die Nummern selbst ein: 1-3, 12-20.

Suchsyntax

Feldsuchen und freier Text lassen sich mischen. Die englischen Namen funktionieren ebenso.

BeispielWirkung
jokerVolltext über alle Felder
serie:batmanSerienname enthält „batman“
jahr:1990-1999Jahr exakt oder als Zeitraum
autor:gottfredsonbeliebige mitwirkende Person
getaggt:neinalles ohne Tags
quelle:comicvinewoher die Tags stammen
serie:batman jahr:2019 jokeralles kombinierbar (UND)