Es gibt verschiedene Tools, um die Inhalte eines DokuWiki von dessen eigener Syntax nach Markdown zu konvertieren, welches in Hugo verwendet wird. Die Auswertung davon gibt es hier.
Ich habe mich für Pandoc entschieden.
Export mit Hilfe von Pandoc
Der grundsätzliche Aufruf für den Export via Pandoc ist:
find path/to/pages/ -iname "*.txt" -exec pandoc --wrap=none -s --from=dokuwiki --to=gfm -o "{}.md" '{}' \;
Der Parameter --wrap=none
ist wichtig, weil sonst Zeilen immer nach 72 Zeichen einen Zeilenumbruch bekommen. Dokumentation hierzu siehe hier im Bereich “wrap”.
Die erstellten .md-Dateien liegen jetzt immer an der selben Stelle wo auch die .txt-Datien liegen.
Man benötigt eine Pandoc-Version ab mindestens 2.11.3, da sonst Interwiki-Links durch Links zu Google ersetzt werden. Siehe im Bereich “Dokuwiki reader” der Release Notes von Pandoc.
Da es in Debian selbst in Unstable nur Version 2.9 gibt, kann man manuell die neueste Version installieren, siehe hier.
.txt-Dateien löschen
Die alten .txt-Dateien können jetzt gelöscht werden mit:
find path/to/pages/ -name "*.txt" -execdir rm '{}' \;
Front Matter
Damit Dateien überhaupt in Hugo gerendert werden, müssen sie ein rudimentäres Front Matter haben, das zumindest z. B. den Titel enthält:
---
title: Müllsammeln
---
Für das Hinzufügen dieses rudimentären Front Matters (mit dem Dateinamen als Titel) habe ich das Script von hier angepasst und hinzugefügt, dass auch die erste H1
-Überschrift in jeder Datei entfernt wird, da Hugo diese beim Rendern der Website automatisch aus dem titel:
generiert. Zusätzlich wird noch das .txt
aus den Dateinamen entfernt.
#!/bin/bash
filepath="$1" #path/to/filename.md
file_name=$(basename $filepath) #filename.md
md='.txt.md'
title=${file_name%$md} #filname
newname="${title}.md" #filename.md
TEMPLATE="---
title: $title
---
# Remove first line of file (with # Title)
sed -i '1d' "${filepath}"
echo "$TEMPLATE" | cat - "$filepath" > temp && mv temp "${filepath%$md}.md"
rm ${filepath}
Der Aufruf ist:
find pages/ -name "*.md" -print0 | xargs -0 -I file path/to/prepend.sh file
Fertig
Im Ergebnis erhält man die komplette Verzeichnisstruktur eines DokuWiki mit Dateien im Markdown-Format.
Zusätzlich benötigt man aber noch die Medien-Dateien (Fotos, Screenshots, Videos, usw.) aus dem DokuWiki.
Verzeichnisstruktur der .md-Dateien
Hier ein Auszug aus der Verzeichnisstruktur meines exportierten Wikis:
.
└── pages
[…]
├── sport
│ ├── fahrrad
│ │ ├── hunde.md
│ │ ├── kleidung
│ │ │ ├── armlinge_und_beinlinge.md
│ │ │ ├── baselayer.md
│ │ │ ├── handschuhe.md
│ │ │ ├── hose.md
│ │ │ ├── lenkerstulpen
│ │ │ │ ├── 45nrth.md
│ │ │ │ └── einfache_variante.md
│ │ │ ├── lenkerstulpen.md
│ │ │ ├── schuhe.md
│ │ │ ├── sicherheitsweste.md
[…]
Verzeichnisstruktur der Medien-Dateien
Zusätzlich benötigt man natürlich noch die Dateien aus media/
.
Auch hier ein Auszug aus den entsprechenden Verzeichnissen meines alten Wikis:
[…]
├─ sport
│ └── fahrrad
│ ├── 2019-06_kamera_befestigung_am_rueckspiegel_1.jpeg
│ ├── 2019-06_kamera_befestigung_am_rueckspiegel_2.jpeg
│ ├── 2020-07_kamera_setup_vorne_1.jpg
│ ├── 2020-07_kamera_setup_vorne_2.jpg
│ ├── 2020-07_kamera_setup_vorne_3.jpg
│ ├── 2020-12_kamerabefestigung_lenkertaschenhalter_01.jpg
[…]
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt