Migrate a mailing list to Discourse (mbox, Listserv, Google Groups, etc)

Я смог сделать Google Takeout для моих групп Google, загрузить файлы .mbox и импортировать их.

Эти шаги помогли сопоставить data/folder с существующей категорией, но это нужно выполнять в контейнере import, а не в контейнере app, как указано в этой статье: ссылка:

./launcher enter import
rails c

# Используйте ID категории, отображаемый в URL, например
# это 16, если путь к категории выглядит так: /c/soccer/16
category = Category.find(16)

# Используйте имя директории, где хранятся файлы mbox. Например,
# если файлы хранятся в import/data/foo, в качестве имени директории следует использовать "foo".
category.custom_fields["import_id"] = "soccer"
category.save!

У меня уже есть пользователи в Discourse, которые перешли самостоятельно, поэтому скрипт импорта не смог создать контакты для них (вероятно, это не проблема), но импортированные сообщения, в которых участвовали эти существующие пользователи Discourse, показывают отправителя как system вместо их имени.

Есть ли способ сопоставить существующих пользователей с их импортированными сообщениями?

Пока я отменил всё, восстановившись из недавней резервной копии. Готов попробовать снова с рекомендациями по работе с существующими пользователями Discourse и их импортированными сообщениями.

Обновление:

Claude помог решить задачу сопоставления существующих пользователей. Необходимо запустить этот цикл в консоли rails в дополнение к вышеуказанному коду:

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
1 лайк