Hin und wieder kommt es vor, dass beim Import von eBooks in Calibre die Seriennummerierung im Titel und nicht im dafür vorgesehenen Serienindexfeld des eBooks steht. Das sorgt nicht gerade für Übersicht im Programm und verkompliziert die Verwaltung etwas. Also warum nicht diese schon vorhandenen Informationen nutzen, um sie in das richtige Feld einzutragen?
Die Lösung ist etwas knifflig, daher stelle ich sie hier einmal vor. In Calibre gibt es eine Möglichkeit, Texte oder Teilstücke aus Texten aus verschiedenen Feldern zu durchsuchen, irgendetwas mit ihnen zu machen und sie in das gleiche oder andere Felder zu kopieren.
In meinem Beispiel habe ich eine ganze Latte mit Titeln, die diesem Muster folgen:
008 - Das geheimnisvolle Haus
Also zunächst eine dreistellige Nummer, gefolgt von einem Leezeichen, einem Bindestrich, noch einem Leerzeichen und dem eigentlichen Titel des Buches. Die dreistellige Nummer möchte ich nun als Serienindex festlegen.
Such- und Ersetzoptionen festlegen
Also markiere ich zunächst alle Bücher und klicke auf das zweite Symbol von links in der Symbolleiste. Es öffnet sich der Dialog zum mehrfachen Bearbeiten der Meta-Informationen. Dort wechsle ich auf die Registerkarte “Suchen und Ersetzen”:
Ich möchte, dass Calibre die Ziffern am Anfang des Titels findet. Weil es sich beim gewünschten Suchausdruck um einen regulären Ausdruck handelt, stelle ich das zunächst bei “Suchmodus” ein:
Damit Calibre nur in den Titeln der gewählen Bücher nach dem folgenden Ausdruck sucht, stelle ich zunächst das Suchfeld (1) auf “title” um. Danach trage ich im Feld “Suchen nach” (2) folgendes ein:
0*(\d+) - .*
Diese kryptische Zeichenfolge macht folgendes: Sie sucht zuerst nach beliebig vielen Nullen (erster Ausdruck: 0*), danach nach beliebig vielen Ziffern (zweiter Ausdruck: (\d+)), dann nach einem Bindestrich, der mit Leerzeichen umschlossen ist (dritter Ausdruck: – ) und zum Schluss nach beliebig vielen Zeichen (vierter Ausdruck: .*).
Wichtig für diesen Anwendungsfall ist nur der zweite Ausdruck. Weil er von runden Klammern umschlossen ist, können alle gefundenen Stellen in dasselbe oder ein anderes Feld kopiert werden. In unserem Fall betrifft dies nur die Ziffern 1-9, weil die führenden Nullen außerhalb der Klammern stehen. Ins Feld “Ersetzen durch”(3) muss nun noch folgendes eingetragen werden:
\1
Und damit die Ziffern im Serienindex landen, muss “series_index” ins Zielfeld (4) eingetragen werden.
Vorm Ausführen überprüfen
Um sicherzugehen, dass mein Suchausdruck funktioniert und auch die richtige Werte übernimmt, kann ich beides über die Vorschau am unteren Bildschirmrand überprüfen:
Links (5) stehen die gegebenen Werte und rechts das Ergebnis (6). Im ersten Feld kann ich einen eigenen Text eintragen, um beispielsweise zu testen, ob der Suchausdruck auch mit mehrstelligen Zahlen funktioniert.
Suche speichern
Wenn die Vorschau passt, speichere ich mir die eben gesetzten Einstellungen mit einem aussagekräftigen Namen ab, um später immer wieder drauf zurückgreifen zu können.
Suchen und Ersetzen ausführen
Anschließend lasse ich die Einstellungen per “OK” oder “Anwenden” über meine eingangs markierten Bücher laufen. Das Ergebnis sieht dann so aus:
Und im nächsten Schritt werden die Serieninformationen aus dem Titel rausgeworfen, denn dort haben sie nichts zu suchen. Die korrekte Reihenfolge auf dem Reader löst man besser mit der Metadatenschalttafel. :)
Genau. Dazu schreibe ich einen extra Artikel.
Und wie gehe ich vor, wenn auch der Serien-Name im Titel steht und ins Feld Serie eingetragen werden soll?
Der Titel ist z.B.:
“Am Nil 01 – Der Traum der Sonne: Historischer Roman”
Versucht habe ich jetzt
Suchfeld: Titel
suchen nach: ([\w ]+) (?=[0-9])
ersetzen durch: \1
Zielfeld: Serie
Dabei wird aber der ganze Titel ins Feld Serie eingetragen.
Versuch es mal mit:
Suchfeld: titel
Suchen nach: (.*) 0*(\d+) – .*
Ersetzen durch: \1 [\2]
Zielfeld: Serie
Das Leerzeichen nach der ersten Klammer, im Feld “Suchen nach:” ist wichtig!