phpBB3 Forum auf Discourse migrieren

@gerhard: Könnte ich die Bereinigung von Zeichenkodierungsfehlern nach der Migration mit Sidekiq durchführen? Ich bin wirklich neu bei Discourse, daher verstehe ich vielleicht nicht, wie es funktioniert.
Oder vielleicht ein SQL-Skript direkt in MariaDB?

Vielen Dank!

Klar! Du könntest auch einfach jeden Beitrag von Hand bearbeiten. Es ist etwa um den Faktor 10 einfacher, dies vorher zu erledigen, wenn man die Möglichkeit hat, einfach von vorne zu beginnen.

Ich habe eine Reihe von Versuchen unternommen, um die Kodierung auf der MariaDB-Seite zu beheben, bin aber nicht auf eine Lösung gestoßen. Hier ist ein Codeausschnitt, den ich verwendet habe, um die Kodierung bei einem Import, an dem ich arbeite, zu korrigieren.

    ### WIN1252-Kodierung
    win_encoded = ''
    begin
      win_encoded = raw.force_encoding('utf-8').encode("Windows-1252",
                            invalid: :replace, undef: :replace, replace: ""
                           ).force_encoding('utf-8').scrub
    rescue => e
      puts "\n#{'-'*50}\nWin1252 fehlgeschlagen für \n\n#{raw}\n\n"
      win_encoded = ''
    end
1 „Gefällt mir“

Nett, danke :slight_smile:

1 „Gefällt mir“

Es war eine schmerzhafte Erfahrung. Ich habe mehrere Kodierungen ausprobiert und mehrere davon in den Beitrag aufgenommen, um sie vergleichen zu können. Diese hier schien die meisten Probleme meistens zu lösen. Es hat viel länger gedauert, als mir lieb war, herauszufinden, wie .scrub funktioniert, denn ohne sie hätte ich Strings erhalten, die sich nicht mehr mit gsub parsen ließen.

Hat jemand bereits eine gute Lösung, um verschachtelte Listen aus phpBB zu importieren?

Ich bin nicht genug Ruby-Experte, um zu wissen, wie man das angeht – ich sitze hier über folgendem Code:

 def process_lists(text)
      # Konvertiere List-Tags in ul und list=1-Tags in ol
      # list=a wird nicht unterstützt, also behandeln wir es wie list=1
      # list=9 und list=x haben das gleiche Ergebnis wie list=1 und list=a
      text.gsub!(/\[list\](.*?)\[\/list:u\]/mi) do
        $1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "* #{$1}\n" }
      end
      text.gsub!(/\[list=.*?\](.*?)\[\/list:o\]/mi) do
        $1.gsub(/\[\*\](.*?)\[\/\*(:m)?\]\n*/mi) { "1. #{$1}\n" }
      end
    end

Hat jemand eine Idee, wie das „Schleifenlaufen

1 „Gefällt mir“

@helmi

Hast du schon gesehen, wie dieses offizielle Diskurs-Plugin dir bei LIST-Tags helfen könnte?

1 „Gefällt mir“

Das habe ich noch nicht, werde ich aber tun, danke. Allerdings versuche ich, es zu vermeiden, da ich auf lange Sicht keine zusätzlichen BBTags unterstützen möchte – ich würde es vorziehen, die Inhalte beim Import umzuwandeln. Verschachtelte Listen sind kein Hindernis, aber es wäre toll, wenn sie unterstützt würden.

Du könntest ein Backup erstellen, auf phpBB 3.2 upgraden und meinen experimentellen Zweig verwenden. Dieser bietet eine deutlich bessere Unterstützung für BBCodes. :wink:

1 „Gefällt mir“

Das klingt interessant, aber ich möchte mich lieber nicht mehr mit phpBB herumschlagen. Abgesehen von den Listen ist der Importprozess bereits weitgehend optimiert. Das würde uns eher wieder mehr Arbeit und Tests aufbürden. Aber es ist gut zu sehen, dass die Entwicklung von 3.2 gut voranschreitet.

Hey @helmi,

Ja, wir beschäftigen uns seit einem Monat mit solchen Problemen, während wir ein altes vB3-Forum migrieren, das fast zwei Jahrzehnte lang alle möglichen verrückten Verwendungen von BBCode, Verschachtelungen, Einbettungen usw. aufweist.

Es ist nicht trivial, eine solche Migration zu 99,9 % perfekt zu gestalten. Zum Beispiel haben wir Ruby-Code geschrieben, um alle BBCode-Tags aus unseren Code-Blöcken zu entfernen, da Markdown BBCode in umrandeten Code-Blöcken nicht „mag".

Auf unserer Seite finalisieren wir noch viele Ruby-Vorverarbeitungsroutinen, und wir kommen immer näher, aber wir werden mit fast zwei Jahrzehnten an Beiträgen von einigen sehr kreativen BBCode-Nutzern (nicht zu erwähnen all jene Nutzer, die in Beiträge kopiert und eingefügt haben, usw.) niemals „Perfektion" oder „100 %" erreichen.

Wir arbeiten noch daran, Probleme im Zusammenhang mit der Umwandlung von BBCode nach Markdown zu bereinigen.

Manchmal denke ich: „Einfach alles entfernen

1 „Gefällt mir“

Es scheint, als hätten wir immer noch Probleme damit, dass Benutzernamen bei der Importierung mit bestimmten Sonderzeichen geändert werden oder gar nicht importiert werden.

Gibt es bekannte Probleme mit dem Importer, oder habe ich die Option für Unicode-Benutzernamen in Discourse falsch verstanden? Ich habe sie aktiviert, aber die Whitelist enthält immer noch Umlaute. Muss ich die Whitelist löschen, um alle Unicode-Zeichen zuzulassen, oder muss ich alle Zeichen einzeln auflisten? Ich dachte, dass die Aktivierung von Unicode alle Unicode-Zeichen erlaubt und die Deaktivierung nur die in der Whitelist gelisteten.

Beim Importieren werden einige Zeichen wie @ oder * durch _ ersetzt. Ich kann mir vorstellen, dass @ Probleme beim @Mentionen verursachen könnte, aber… Ich wollte nur sichergehen, bevor wir manuell alle diese Benutzer vor dem Import bearbeiten (was eine große Hektik wäre).

Habt ihr dazu irgendwelche Hinweise?

Viele Grüße,
Frank

Selbst wenn Sie die Unicode-Unterstützung aktivieren, werden weiterhin nur Buchstaben und Zahlen erlaubt. Siehe Unicode usernames and group names

2 „Gefällt mir“

Hallo,

zuerst einmal vielen Dank für die gesamte Dokumentation und die Hilfe in diesem Thema.
Ich habe gerade ein altes phpBB3-Forum in ein brandneues Discourse-Forum importiert.

Alles lief mit 200.000 Beiträgen und 20.000 Anhängen ziemlich reibungslos, aber Sidekiq hatte nach dem Import etwas Schwierigkeiten, alles zu verarbeiten.

Jetzt habe ich ein neues Problem mit Bild-Tags, die in URL-Tags enthalten waren, wie hier:
[url=http://www.casimages.com][img]http://nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg[/img][/url]

Nach dem Import (Umwandlung von BBCode in Markdown) sehen diese Bilder nur noch wie Links aus:
[nsm01.casimages.com/img/2009/04/24//090424092900546293539010.jpg](http://www.casimages.com)

Gibt es eine Möglichkeit, diese Links zu verarbeiten/neu zu backen, sodass sie als Bild angezeigt und automatisch auf S3 hochgeladen werden?

Vielen Dank im Voraus für Ihre Hilfe.

Suchen Sie in den Systemeinstellungen nach „download remote“

EDIT: Ups. Anscheinend war das nicht Ihr Problem. Entschuldigung.

@pfaffman

Danke, Jay. Ja, ich habe bereits die Einstellung „Remote herunterladen

1 „Gefällt mir“

Hallo,

ich habe derzeit ein aus phpBB importiertes Forum. Ich überlege, ein weiteres phpBB-Forum (36.000 Beiträge, 230 Mitglieder) in meine bestehende Discourse-Installation zu importieren. Beide Foren teilen sich gemeinsame Kategorien und Benutzer.

Benutzerkonten könnten manuell zusammengeführt werden.
Was die Beiträge angeht, würden diese nach dem Import manuell in die bestehenden Kategorien verschoben.

Würde das so „out of the Box

Du musst die benutzerdefinierten Felder import_id leeren, da sonst neue Beiträge bereits als importiert gelten.

Das klingt nach etwas, bei dem du bei einer lokalen Installation viel herumprobieren musst, wobei du eine Sicherungskopie deiner Hauptdatenbank verwenden solltest.

2 „Gefällt mir“

Vielen Dank für diese wertvollen Informationen, an die ich nicht gedacht habe :+1:t6:
Ja, ich werde das tun und es auf einem Testserver ausprobieren, um zu sehen, ob es umsetzbar ist.

Zum Kontext:

Ich betreibe ein nationales Discourse-Forum zum Thema Einradfahren.
Zudem hoste ich ein phpBB-Forum für einen lokalen Einradverein.
Beide Foren haben einige gemeinsame Nutzer, und einige Themen oder Diskussionsgegenstände überschneiden sich. Die Idee wäre, das Forum des lokalen Vereins in das nationale Forum zu integrieren, um doppelte Themen zu vermeiden, und eine Gruppe/Kategorie für Themen des lokalen Vereins zu erstellen.

Außerdem werden Nutzer, die bisher nur im Forum des lokalen Vereins aktiv waren, so auch das nationale Forum kennenlernen und vielleicht mehr Aktivität einbringen.

Hat jemand eine Idee, warum MySQL im Import-Container nicht läuft?

Ich habe bereits mehrere Durchläufe gemacht, die bisher immer funktioniert haben, aber jetzt erhalte ich folgende Meldung:

Can't connect to local MySQL server through topic:30810

Sobald ich versuche, den Import zu starten. Ich habe alles dreifach geprüft und den Import-Container mehrmals neu erstellt. Alles ist vorhanden, aber MySQL scheint nicht zu laufen. :frowning:

Ich bin etwas entsetzt, da dies heute unser tatsächlicher Umzug zu Discourse ist.

:question: :question::question: Das sieht seltsam aus. Woher kommt das?