Migration einer Mailingliste zu Discourse (mbox, Listserv, Google Groups usw)

Die Lösung steht buchstäblich im Post über deinem. :wink:

Wir sollten das Skript reparieren. Vielleicht kannst du einen PR erstellen, der das Problem für alle löst?

Danke, das hat es behoben, Entschuldigung dafür. Als Buße für meine Leseschwäche habe ich Added duplication to name to prevent modification of frozen string exception by adam-skalicky · Pull Request #30325 · discourse/discourse · GitHub geöffnet, um anderen die Schande zu ersparen, eine dumme Frage zu stellen.

1 „Gefällt mir“

Replikatiert dieses Importskript Discourse Mailman 2 E-Mail-Threading in irgendeiner Weise (z. B. unter Verwendung des kleinen Discourse-Pfeils, um “In-Reply-To” anzuzeigen) oder ist es rein chronologisch (für jeden Thread basierend auf Message-ID, In-Reply-To und References)?

1 „Gefällt mir“

Ja, das tut es

3 „Gefällt mir“

Gut. Ziemlich viele meiner E-Mails auf der Mailingliste haben nicht die Header „In-Reply-To“ und „References“, die sie haben sollten, sodass sie möglicherweise als neue Themen und nicht nur als Antworten importiert werden. Soweit ich mich erinnere, verwendet das Skript diese Header oder Betreffzeilen (nicht beides).

Ich glaube, ich habe das schon einmal gefragt, aber gibt es nicht-manuelle Möglichkeiten, diese Header zur MBOX-Datei hinzuzufügen und/oder die E-Mails vor oder nach dem Import in Discourse anderweitig neu anzuordnen?

Es ist jetzt möglich, Themen zusammenzuführen und die chronologische Reihenfolge beizubehalten, sodass das vielleicht die Antwort ist. Ihnen fehlt lediglich der kleine Discourse-Pfeil, der anzeigt, auf wen die Nachricht die Antwort war.

1 „Gefällt mir“

Das mbox-Importskript hat zwei Phasen. Die erste ist die Indizierung und gibt eine SQLite-Datenbank aus. Sie könnten die Daten entweder in SQLite ändern, bevor Sie den Import durchführen, oder Sie ändern das Ruby-Skript.

Die gesamte Magie des Sortierens/Gruppierens nach Betreff oder Headern geschieht hier:

Sie könnten Ihre eigene Gruppierungslogik hinzufügen, wenn Sie wissen, wie Sie E-Mails gruppieren möchten.

3 „Gefällt mir“

Das wird noch eine Weile dauern, bis ich überhaupt etwas so Komplexes in Betracht ziehe!

Bei https://bazaar.launchpad.net/~mailman-coders/mailman/2.1/view/head:/Mailman/Archiver/pipermail.py#L669 scheint Mailman 2’s Pipermail in der folgenden Reihenfolge der Präferenz zu suchen:

  1. In-Reply-To.
  2. References.
  3. Ältester E-Mail mit übereinstimmendem Betreff.

Diese Kombination von Ansätzen scheint ideal. Im dritten Fall könnte es für Discourse sinnvoll sein, den “Antwortet auf”-Pfeil nicht zu verwenden.

Aus dem Gedächtnis: Mailman 3’s Hyperkitty berücksichtigte den Betreff überhaupt nicht, was nicht so gut war.

2 „Gefällt mir“

Entschuldigen Sie, dass ich mich mit einer möglicherweise dummen Frage einmische, aber ich konnte hier keine klare Antwort finden. Ich möchte wissen, ob der Importprozess für jede E-Mail einen neuen Discourse-Benutzer erstellt, natürlich mit De-Duplizierung, oder ob sie alle als ein Systembenutzer hinzugefügt werden. Ich habe eine Mailingliste mit 20 Jahren Beiträgen, die ziemlich groß und schwer zu experimentieren ist. Und was ist mit Antworten in der ursprünglichen Liste? Werden diese in Threads zusammengefasst?

Ja, die Benutzer werden erstellt, einer pro E-Mail-Adresse.

Hallo zusammen,

ich versuche, von Google Groups zu migrieren. Wenn ich versuche, die Nachrichten mit dem folgenden Befehl herunterzuladen: script/import_scripts/google_groups.rb -g <gruppenname> -d <domänenname>, erhalte ich sofort einen Stacktrace:

Fetching gem metadata from https://rubygems.org/.......\nResolving dependencies...\n/usr/local/lib/ruby/gems/3.4.0/gems/childprocess-4.1.0/lib/childprocess.rb:6: warning: logger was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0.\nYou can add logger to your Gemfile or gemspec to silence this warning.\n/usr/local/lib/ruby/gems/3.4.0/gems/selenium-webdriver-4.1.0/lib/selenium/webdriver/common/zipper.rb:23: warning: base64 was loaded from the standard library, but is not part of the default gems starting from Ruby 3.4.0.\nYou can add base64 to your Gemfile or gemspec to silence this warning.\n/usr/local/lib/ruby/gems/3.4.0/gems/bundler-2.6.4/lib/bundler/runtime.rb:71:in 'block (2 levels) in Bundler::Runtime#require': There was an error while trying to load the gem 'webdrivers'. (Bundler::GemRequireError)\nGem Load Error is: cannot load such file -- base64\n```

Ich könnte eine `gem "base64"` zu dem Skript `google_groups.rb` hinzufügen, um etwas weiterzukommen, aber dann sehe ich Folgendes:

Logging in…\n/usr/local/lib/ruby/gems/3.4.0/gems/rubyzip-3.2.2/lib/zip/entry.rb:757:in ‘File#initialize’: No such file or directory @ rb_sysopen - /root/.webdrivers/root/.webdrivers/chromedriver (Errno::ENOENT)\n```

Irgendwelche Vorschläge, wie ich mit dem Herunterladen der Nachrichten fortfahren kann?

Edit: Gibt es vielleicht eine neuere Version dieses Skripts? Gruppen verwenden nicht mehr /forum in ihrer URL, sondern die Notation /g/ und es gab andere Änderungen.