In a neon wilderness he was restless

Redesigned.
Redefined.
Reborn.

Datum Änderungen / Edits
08.06.2018 Neue Exportversion 1.4 - Fehlerbereinigung in der Makroerkennung ( Änderungen)
22.04.2018 Neue Exportversion 1.3 sowie Wordpress Import-Plugin 0.7 - Mit dieser Version werden nun auch die Lesezähler zu jedem Beitrag mit exportiert, wenn man dies über einen Parameter im Info-Bildschirm aktiviert ( Änderungen)
16.04.2018 Neue Exportversion 1.2 - Autolinker darf erst nach der Makroverarbeitung aufgerufen werden, Ungute Trennzeichenketten werden nun entschärft ( Änderungen)
04.04.2018 Neue Exportversion 1.1 - Korrigierte Reihenfolge der Bearbeitung von Macros und NiceUrl-Umsetzung auf Beitragsnummern ( Änderungen)
19.03.2018 Neue Exportversion 1.0 - Verbesserte NiceUrl-Erkennung, neuer Parameter "keepImg", Verarbeitung des story.url Macros ( Änderungen)
26.02.2018 Neue Exportversion 0.99 - Korrekte Parametererkennung in Twoday-Macros, Anzeige von Fortschrittsbalken während des Exports ( Änderungen)
21.02.2018 Neue Exportversion 0.98 - Konvertierung und Ausgabe von Beitragsmacros (file, gallery, image, link, poll, story.link) in die Exportdatei, Integration von statischen Twoday-Dateien (staticURL files) in die ausgegebene Ressourcenliste ( Änderungen)
16.02.2018 Neue Exportversion 0.97 - https-Kompatibilität, Trackback-Bereinigung, Videoload-Generierung und Performance ( Änderungen)
19.01.2016 Neue Exportversion 0.96 - Verbesserte NiceUrl-Verarbeitung und -Konvertierung, Erweiterung der Konsolennachrichten im Debugging-Modus ( Änderungen)
13.01.2016 Neue Exportversion 0.95 - Neue Debug- und Timeout-Parameter, Umsetzung von NiceUrls auf Standard-Twoday-Beitragsnummern (ermöglicht bessere Übernahme und Querreferenzierung in Wordpress), Bessere Erkennung/Verarbeitung von image-Macros ( Änderungen)
09.03.2015 Neue Exportversion 0.92 - Blogexport für wordpress.com-Nutzer, Gast-Kennung in Benutzernamen, Übernahme der Beitrags-ID ( Änderungen)
25.02.2015 Neue Exportversion 0.91 - Textlinks werden nun auf Anforderung automatisch in klickbare HTML-Links gewandelt ( Änderungen)
20.02.2015 Neue Exportversion 0.9 - Bereinigung potenzieller Formatfehler für Datum/Autor bei unregistrierten Autoren (Credits: Archivalia)
06.11.2014 Browserkompatibilität
Das Problem

Die Sicherung und Übertragung von Twoday-Bloginhalten auf andere

Plattformen mit Hilfe der vorhandenen Standardexportfunktion konfrontiert Twoday-Blogger mit erheblichen Problemen und umfangreichen manuellen Nachpflegearbeiten. Die Gründe dafür sind vielfältig:

  • das von Twoday ausgegebene MovableType-Format ist nicht korrekt (die Wordpress-Importfunktion für dieses Format kennt z.B. weder SHOWONFRONT: , EDITABLEBY:, DISCUSSIONS: oder REPLY:EMAIL: müsste eigentlich URL: heißen und ein TITLE: für Kommentare ist unzulässig),
  • wichtige Informationen werden nicht bzw. nicht korrekt exportiert,
  • Antworten auf Kommentare werden falsch als fortlaufender Kommentar eingespielt, wodurch Struktur und Lesbarkeit der Inhalte leiden,
  • Offline-Beiträge werden prinzipiell nicht für einen Export angeboten,
  • eine Selektion oder Eingrenzung auf bestimmte Beiträge (z.B. nach Kategorien oder Datum) ist nicht möglich.

Gleichwohl ist das Bedürfnis verständlicherweise groß, auf Basis des allgemeinen Twoday-Zustands, einer gefühlten Plattform-Obsoleszenz sowie allgemeiner Absetzbewegungen seine Blogdaten bestmöglich gesichert zu wissen — auch, wenn man selbst keinen unmittelbaren Wechsel plant.

Die Lösung
Im folgenden stelle ich eine selbst programmierte Lösung vor, die rein anwenderseitig alle Beiträge und Kommentare/Antworten eines Blogs in korrektem, sofort weiterverwendbaren MovableType-Format ausgibt. Dabei benötigt sie keinerlei Twoday-Ressourcen (z.B. freien Blogspeicherplatz für die Exportdatei), erlaubt verschiedene Auswahloptionen und stellt zusätzlich eine Liste zur Verfügung, in der alle verwendeten statischen Twoday-Bilder aufgeführt werden.
Vorteile / Eigenschaften der Exportlösung:
  • Auswahlmöglichkeiten Beiträge können nach Zeitraum (von-bis), Status (Alle, Nur Veröffentlichte, Nur Unveröffentlichte), Kategorie/n und Anzahl selektiert werden.
  • Sicherheit nur Sie als angemeldeter Administrator können Blogbeiträge exportieren; exportierte Daten werden nur auf Ihrem Rechner gespeichert.
  • Struktur Ein zusätzlich bereitgestelltes Wordpress-Import-Plugin stellt sicher, dass Kommentare und Antworten mit der Originalstruktur (Einrückung) in Wordpress eingespielt werden.
  • Bilderservice Eine verlinkte Referenzliste mit allen zu übertragenden statischen Twoday-Bildern ermöglicht ein einfaches Anklicken und Speichern aller relevanten Blogbilder.
  • Einfachheit Die Gesamtlösung wird als gepackte Layoutdatei (zip) bereitgestellt und steht unmittelbar nach dem einfachen Import des zusätzlichen Layouts zur Verfügung. Es sind keine weiteren manuellen Eingriffe erforderlich.
  • Kapselung Die neue Exportfunktion ist vollständig im Layout twodayExport gekapselt. Andere Layouts, Skins oder Blogelemente werden nicht verändert.
  • Aktualität Die Lösung verfügt über eine eigene Versionsprüfung, so dass Sie immer über aktuelle Softwareupdates informiert sind.

Das letzte Kapitel beschreibt außerdem detailliert, wie die aus Twoday exportierten Daten ohne manuelle Pflegetätigkeit vollständig nach Wordpress importiert werden können.

Installation und Nutzung
  • Die Exportlösung installieren
  • Bloginhalte auswählen und exportieren
  • Exportierte Beiträge nach Wordpress übernehmen
Epilog

Dieser Beitrag ist lang — ausgedruckt wohl gut 30 Seiten. Allein die Softwarelösung des Exportprozesses umfasst zusätzlich über 1500 Zeilen HTML, CSS und JavaScript. Diese Arbeit lizensiere ich als OpenSource unter MIT, d.h. jede/r Blogger:in kann diese kostenfrei und ohne jedwede kompensatorische Verpflichtung verwenden und einsetzen. Dies ist mein "Danke" an eine Community, in der ich nun bereits über 11 Jahre viel Freude habe und interessante Menschen kennenlernen durfte.

Wichtig ist mir, dass sowohl dieser Beitrag als auch die Softwarelösung weder Aufforderung noch Begründung sein sollen, Twoday zu verlassen. Es kann jedoch nicht von Nachteil sein, seine Bloghistorie an sicherem Ort (und in einer importfähigen Syntax) gespeichert zu wissen und sich ohne Druck mit potenziellen Alternativen vertraut zu machen, sollten diese eines Tages benötigt werden. Wenn dieser Text dazu beiträgt, das individuelle Sicherheitsgefühl zu verbessern, würde ich mich freuen.

Was tun bei Problemen / Fehlern?
There's always one more bug heißt es in Lubarsky's Law of Cybernetic Entomology. Sehr wahrscheinlich ist diese neue Exportlösung keine Ausnahme von dieser Regel. Wenn Sie einen Fehler oder eine Verbesserungsmöglichkeit entdecken, können Sie diese gerne als Kommentar hinterlassen.

Eine Bitte: Fügen Sie Ihren Problembeschreibungen alle Informationen bei, die helfen können, das Problem zu analysieren und möglichst schnell zu einer Lösung zu kommen. Dazu gehören:

  • Name und URL Ihres Blogs (Twoday und ggf. Wordpress),
  • Name und Version Ihres Browsers,
  • eine Referenz / einen Link auf die Stelle, wo das Problem aufgetreten ist (z.B. ein bestimmter Beitrag),
  • ein Bild/Screenshot des Problems,
  • möglichst genaue Ursache-Wirkung-Beschreibung der Problemsituation (d.h. was haben Sie gemacht/eingegeben/geändert vs. was ist das [unerwünschte] Ergebnis dieser Aktivität).
Browserkompatibilität

Diese Exportlösung nutzt moderne Techniken (z.B. FileAPI, Blobs) und ist daher nur in modernen Browsern lauffähig! Getestet ist sie auf aktuellen Versionen von Chrome (empfohlen) und Firefox. Falls Sie den Internet Explorer nutzen müssen (Sie haben mein volles Mitgefühl), müssen Sie mindestens über die Version 10 (oder höher) verfügen.

Changelog / Release-Informationen (chronologisch)
Version 0.91
Autolink-Ergänzung

In Twoday-Beiträgen ist es möglich, klickbare Links durch Eingabe einer einfachen Text-URL zu erzeugen. Da die Linkfunktionalität serverseitig erst bei der Aufbereitung der Blogseite generiert wird, gingen die Links bislang beim Export verloren (d.h. waren wieder nur einfacher Text). Ab Version 0.91 werden nun alle erkannten einfachen Textlinks automatisch in echte HTML-Links umgewandelt und in die Exportdatei ausgegeben.

Die Autolink-Funktionalität ist über einen Einstellparameter im Infobildschirm aktivierbar (Standard=deaktiviert).

Version 0.92
Blogexport für wordpress.com

Blogbesitzer auf wordpress.com haben leider nicht die Möglichkeit, individuelle Plugins zu installieren. Sie konnten daher bislang diese Exportlösung nicht nutzen, da die spezielle Twoday-Kommentar­struktur (eingerückte Antwort auf einen Kommentar) nur mit dem selbsterstellten Plugin einspielbar war.

Wordpress.com Benutzer als auch jene, denen eine einfache, fortlaufende Darstellung der Kommentare ausreichend ist (ohne Einrückung), können nun auch die Exportroutine nutzen. In den "Einstellungen" ist dazu das Auswahlkästchen "Für wordpress.com exportieren" anzukreuzen. Dann kann der Import mit dem Standard-Movable-Type Importer von Wordpress erfolgen.

Entfernung der Gast-Kennung

Anonyme, unregistrierte Benutzer erhalten seitens Twoday zusätzlich eine "(Gast)"-Kennung an die gewählte Benutzerkennung angehängt. Über eine Auswahlbox in den Einstellungen lässt sich für den Export diese Gast-Kennung aus dem Benutzernamen entfernen.

Beitrags-ID als Benutzerfeld in Wordpress

Jeder Twoday-Beitrag besitzt eine eindeutige Nummer (ID). Diese Kennung wird nun im Wege des Imports durch das Plugin als benutzereigenes Feld "storyID" nach Wordpress übernommen (Tabelle POSTMETA). Hierdurch lassen sich in Wordpress z.B. Links zum Twoday-Originalbeitrag herstellen (http://blogalias.twoday.net/stories/storyid) oder Querverweise auf eigene Alt-Beiträge anpassen.

Version 0.95
Neue Debug- und Timeout-Parameter (für "Techniker")

Über zwei neue Parameter kann nun eine Debug-Funktion aktiviert werden sowie die Timeout-Zeitspannen individuell eingestellt werden. Bei aktivierter Debugfunktion werden wichtige Stati/Zwischenmeldungen über die Konsole des Browsers ausgegeben. Die Timeout-Angaben in Millisekunden legen fest, wie lange das Script zwischen Serverzugriffen warten soll, um Fehlermeldungen des Twoday-Servers zu vermeiden. Die Vorgabewerte 500/5/5 (für Indexseiten/Beiträge/Kommentare) sollten nur durch erfahrene Anwender geändert werden.

Umsetzung der NiceUrls auf numerische Adressen

Jeder Beitrag in Twoday besitzt eine eindeutige Nummer, über die der Beitrag z.B. auch für Querreferenzen adressiert werden kann (Bsp: http://neonwilderness.twoday.net/stories/1022396398). Hat der Twoday-Nutzer das NiceUrl-Modul aktiviert, wird diese Nummer durch einen textlichen Schlüssel ersetzt (obiges Beispiel: http://neonwilderness.twoday.net/stories/twoday-tipp-8-videos-anzeigen). Zur späteren, besseren Umsetzung der alten Twoday-Beitragsnummern auf neue Wordpress-Artikel-IDs ist es hilfreich, wenn alle Beiträge einheitlich eine Nummer anstatt Textfragmente enthalten. Ab Version 0.95 stellt das Script sicher, dass für den Export alle NiceUrl-Beitragsadressen wieder in numerische Beitragsadressen umgesetzt werden.

Verbesserte Erkennung/Verarbeitung von image-Macros

Twoday-Bildmacros der Form <% image %> sind komplex und haben viele Parametervarianten (Antville Dokumentation). Für den Export generiert das Script daraus echte Bildadressen und berücksichtigt dabei auch weitere vorhandene Makro-Parameter.

Version 0.96
Verbesserte NiceUrl-Verarbeitung

Interne Querverweise auf eigene Blogbeiträge mit NiceUrls (in Textform) werden nun besser erkannt und verarbeitet, auch wenn sie unnötige Linkanhängsel wie "/main" oder "/edit" oder direkt angesteuerte Kommentar-IDs ("#{comment-id}") aufweisen. Credits an QUH für die Problembeschreibung und die Testmöglichkeit im Originalblog.

Erweiterte Konsolennachrichten im Debugging-Modus

Die Prozess- und Statusnachrichten, die während des eingeschalteten Debugging-Modus über die Konsole ausgegeben werden, wurden erweitert.

Version 0.97 (16.02.2018)
Beseitigte Probleme
Das Exportscript läuft nun problemlos im HTTPS-Modus. Dies ist ab sofort der empfohlene Modus für Exportläufe.
Die falsche Berücksichtigung von "Trackback-Kommentaren" ist bereinigt. Trackbacks werden nicht mehr exportiert.
Die AutoLinker-Funktion (siehe Infos in Version 0.91) wurde auf das neueste verfügbare Release aktualisiert. Damit sind alte Fehler in seltenen Konstellationen und bei sehr komplizierten Links nun abgestellt.
Neuerungen/Erweiterungen
Für auf Twoday hochgeladene Bilder, deren URL automatisch auf die neue Zielblog-Adresse geändert werden soll (z.B. von https://static.twoday.net/{blogalias}/images/meinbild.jpg in https://meinneuerwordpressblog.de/wp-content/uploads/meinbild.jpg), kann die Ziel-URL jetzt völlig frei eingegeben werden. Damit werden beliebige Adress-Konfigurationen (z.B. https://meinhugoblog.netlify.com/images) für zu übertragende Twoday-Bilder unterstützt.
Videoload-Anwender können sich darüber freuen, dass das Exportscript nun die vollständigen IFRAMEs, die z.B. zur Anzeige aller unterstützten 20 Plattformen (z.B. YouTube, Vimeo, TED, Soundcloud, Giphy etc.) nötig sind, automatisch auch in die Exportdatei ergänzt. Damit werden alle Video­einbettungen unmittelbar auch im neuen Blog (dort ohne Videoload-Scriptunterstützung) angezeigt. In den Einstellungen gibt es einen zusätzlichen Parameter, mit dem man die gewünschte Video-Anzeigebreite als Vorgabe einstellen kann (voreingestellt sind 600 Pixel). Dies kann vor Beginn des Exports beliebig angepasst werden. Der Wert 0 (null) unterdrückt die IFRAME-Generierung und gibt den ursprünglichen Videoload-DIV-Befehl unverändert aus — dies kann u.U. dann sinnvoll sein, wenn man das flexiblere Videoload-Script auch im neuen Blog einbinden kann und möchte (z.B. bei einer eigenen Wordpress-Installation, bei einer statischen Seite oder gar bei einem Umzug nach Antville).
Die Performance/Ablaufschnelligkeit des Exportscripts ist durch JavaScript- und CSS-Minifizierung trotz neu hinzugekommener Funktionen leicht verbessert.
Version 0.98 (21.02.2018)
Beseitigte Probleme
Die Unterstützung für im Beitrag verwendete Twoday-Macros wurde um Größenordnungen verbessert. <% file %>, <% gallery %>, <% image %>, <% link %>, <% poll %> und <% story.link %>-Macros werden nun in korrektes, im Zielblog sofort darstellbares HTML übersetzt und in die Exportdatei ausgegeben.
Die Autolinker-Funktion ist nicht mehr standardmäßig aktiviert, da viele Blogplattformen selbst die Fähigkeit haben, erkannte Textlinks in klickbare Links umzusetzen. Über eine Einstellung im Info-Bildschirm kann diese wahlweise wieder aktiviert werden.
Neuerungen/Erweiterungen
Neben statischen Bildern im Blog (staticURL images) werden nun auch alle verwendeten statischen Dateien (staticURL files) mit Link in die ausgegebene Übersichtsliste aufgenommen. Wenn eine URL-Änderung der statischen Ressourcen auf die neue Blogadresse angefordert wurde, wird dies nun auch für diese Dateien ausgeführt — die statischen Twoday-Files müssen also ins gleiche Upload-Verzeichnis hochgeladen werden wie die übertragenen Bilder.
Da die ausgegebene Liste mit statischen Ressourcen nicht mehr nur Bilder enthält, wurde diese von {blogalias} imgurl liste.html in {blogalias} url liste.html umbenannt.
Version 0.99 (26.02.2018)
Beseitigte Probleme
Falls in verwendeten Twoday-Macros Parameter genutzt wurden (Bsp: <% story.link to="https://twoday.net" text="Ist bald tot" %>), wurden diese u.U. nicht richtig erkannt und verarbeitet. Dies ist nun korrigiert. Wegen der evtl. falsch generierten Links wird dringend eine Wiederholung des Exportlaufs mit der neuen Version empfohlen.
Neuerungen/Erweiterungen
Während des Exportlaufs informieren nun Fortschrittsbalken über den aktuellen Fortgang des Exports. Immens hilfreich bei der Beurteilung, ob man noch Zeit hat, sich einen neuen Kaffee zu holen.
Version 1.0 (19.03.2018)
Beseitigte Probleme
Bessere Erkennung von Nice-Urls, z.B. ist bei https://{blogalias}.twoday.net/stories/24 die "24" keine Beitragsnummer (obwohl numerisch), sondern eine Nice-Url (Fehler erkannt beim Export von Eugenes Blog und ihren Weihnachtskalenderbeiträgen).
Verbesserte Aufbereitung des story.url Macros
Neuerungen/Erweiterungen
Neuer Parameter "keepImg", mit dem man festlegt, ob die Referenzen auf fehlende (nicht mehr vorhandene) Ressourcen entfernt oder behalten werden sollen. Dies ermöglicht, dass z.B. Bildaufrufe von Bildern, die man irgendwann einmal gelöscht hat, automatisch entfernt werden und später nicht mehr als Fehler angezeigt werden. Man kann jedoch auch festlegen, dass solche Referenzen (als Erinnerungspunkt) in der Exportausgabe verbleiben (diese Einstellung ist der Standard).
Nicht gefundene Twoday-Ressourcen (Bilder/Dateien) werden nun, wenn die Referenz bewahrt wird, mit der Klasse class="notFound" markiert. Man kann solche fehlenden Bilder/Dateien also schnell in der Exportdatei auffinden, indem man nach "notFound" sucht.
Eliminierung kleinerer Anwenderfehler im Beitragstext, z.B. eines doppelten Schrägstrichs am Ende einer URL, was regelmäßig zu Folgeproblemen führte.
Version 1.1 (04.04.2018)
Beseitigte Probleme
Eine Nice-Url kann auch aus einem Macro heraus referenziert werden, z.B. bei einem verlinkten Image-Befehl <% image name="bild1" linkto="/stories/meine-schoene-niceurl" %>. Dummer­weise wurde die Twoday-Macro­interpretation programm­technisch erst NACH der Nice-Url-Umsetzung (auf Beitrags-IDs) gestartet, wodurch einige Nice-Urls unter Umständen in der Export­datei un­bearbeitet blieben. Dies ist nun korrigiert.
Version 1.2 (16.04.2018)
Beseitigte Probleme
Die AutoLinker-Funktion, die aus einfachen Twoday-Textlinks echte HTML-Links für die Exportdatei produziert, darf erst nach der Twoday-Makroverarbeitung starten, da der Autolinker sonst versucht, in z.B. <% image name="meinbild" linkto="https://irgendeine-url.de" %> einen unschönen HTML-Link zu integrieren.
Es gibt Blogger, die exakt 8 Trennstriche '--------' zur internen optischen Trennung in ihren Textbeiträgen nutzen. Prinzipiell nichts gegen einzuwenden, nur ist genau diese Zeichenkette das Signal für den Wordpress-Importer (Movable-Type), dass gerade ein Beitrag endet. Damit es nicht zu unschönen Abschneidungen beim Import kommt, wird diese spezielle Zeichenkette jetzt entschärft, wenn sie in einem Beitragstext gefunden wird.
Version 1.3 (22.04.2018)
Neuerungen/Erweiterungen
Neuer Parameter "ReadCount", mit dem man festlegt, ob der Lesezähler von Beiträgen (story.read Macro) mit in die Exportdatei ausgegeben wird. Der Lesezähler wird am Ende des Beitragstextes in der Form "[#123]" ergänzt, dann während des Imports durch das spezielle Wordpress-Import-Plugin wieder aus dem Text extrahiert und in ein individuelles Anwenderfeld ("Wordpress Custom Fields") eingestellt. Anwenderfelder lassen sich bei der Beitragsansicht (Anzeige/Edit) einblenden ("Ansicht anpassen" → "Benutzerdefinierte Felder" aktivieren).
Das Wordpress-Import-Plugin kann nun den Beitragslesezähler im exportierten Text erkennen, herauslösen und in ein eigenes Feld (Tabelle POSTMETA, Feld "reads") für jeden Beitrag speichern. Achtung: Da wordpress.com Nutzer (FREE-Modus) keine Plugins installieren können, verbleibt der Lesezähler im Beitragstext, da der "normale" Standard-Wordpress-Importer diesen als reinen Text interpretiert. Wenn man das nicht möchte, deaktiviert man die Ausgabe des Lesezählers vor dem Export im Info-Bildschirm (Standard=deaktiviert).
Version 1.4 (08.06.2018)
Hier downloaden:
Exportlösung
Importplugin
Beseitigte Probleme
Falls mehrere Twoday-Makros in einer Zeile genutzt wurden (z.B. Bildmakros), konnte es passieren, dass nicht alle gefunden und für die Exportdatei aufbereitet wurden. Dieser Fehler ist nun korrigiert.
Upgrade auf die neue Version
Bitte entfernen Sie zunächst ein bereits installiertes TwodayExport-Layout. Gehen Sie dazu in Meine Layouts (https://{blogalias}.twoday.net/layouts/) und klicken neben dem Twoday-Export Layout auf löschen. Nach erfolgter Löschung laden Sie die downgeloadete neuere Version (Zip-Datei) über Klick auf Layout importieren. Weitere Details zur Installation siehe auch in Abschnitt 1 dieses Beitrags "Die Exportlösung installieren".