Die Lösung steht buchstäblich im Post über deinem. ![]()
Wir sollten das Skript reparieren. Vielleicht kannst du einen PR erstellen, der das Problem für alle löst?
Die Lösung steht buchstäblich im Post über deinem. ![]()
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.
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)?
Ja, das tut es
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.
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.
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:
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.
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.
Ich konnte ein Google Takeout meiner Google-Gruppen erstellen, die .mbox-Dateien hochladen und importieren.
Diese Schritte waren hilfreich, um das data/folder-Verzeichnis einer bestehenden Kategorie zuzuordnen. Dies muss jedoch im import-Container erfolgen, nicht im app-Container, wie in diesem Artikel beschrieben:
./launcher enter import
rails c
# Verwenden Sie die in der URL angezeigte Kategorien-ID, zum Beispiel
# ist es 16, wenn der Pfad der Kategorie so aussieht: /c/soccer/16
category = Category.find(16)
# Verwenden Sie den Verzeichnisnamen, in dem die mbox-Dateien gespeichert sind. Zum Beispiel,
# wenn die Dateien in import/data/foo gespeichert sind, sollten Sie „foo" als Verzeichnisnamen verwenden.
category.custom_fields["import_id"] = "soccer"
category.save!
Ich habe bereits Benutzer in Discourse, die sich selbst migriert haben, und daher konnte das Import-Skript keine Kontakte für sie erstellen (wahrscheinlich nicht schlecht). Die importierten Nachrichten, an denen diese bestehenden Discourse-Benutzer beteiligt waren, zeigen jedoch den Absender als system anstelle ihres Namens an.
Gibt es eine Möglichkeit, die bestehenden Benutzer ihren importierten Nachrichten zuzuordnen?
Derzeit habe ich alles rückgängig gemacht, indem ich von einem kürzlichen Backup wiederhergestellt habe. Ich bin bereit, es erneut zu versuchen, mit etwas Anleitung zum Umgang mit bestehenden Discourse-Benutzern und ihren importierten Nachrichten.
Update:
Claude hat die Zuordnung bestehender Benutzer gelöst. Zusätzlich zum oben genannten Code muss dieser Loop in der Rails-Konsole ausgeführt werden:
User.where("id > 0").find_each do |u|
email = u.email.downcase
unless u.custom_fields["import_id"].present?
u.custom_fields["import_id"] = email
u.save_custom_fields
end
end