Как лучше создать импортёр для Yammer: запрос в ЛС

Я создал импортер для yammer для одного человека, и он хочет, чтобы он был общедоступным. (Привет, @gerhard, думаю, это как раз в твоей зоне компетенции.) Я не до конца понимаю популярность yammer и то, скоро ли многие люди начнут искать новую платформу, или же большинство из них просто ожидают потерять свои данные при уходе с платформы.

Экспорт из yammer представляет собой набор CSV-файлов, поэтому скрипт импорта использует script/import_scripts/base/generic_database.rb. Он включает импорт личных сообщений (PM), что потребовало добавления нескольких таблиц в generic_database.rb. Мне показалось более логичным написать отдельный код для PM, чем пытаться заставить существующий код обрабатывать их, рискуя сломать его для других импортеров (zendesk, zendesk_api и answerbase), которые его используют. Кроме того, вложения обрабатываются иначе, чем в скриптах, использующих generic_database.rb, поэтому мои таблицы для PM не управляют загрузками так, как это делают другие (я не до конца понял, как это устроено у них). Я также добавил таблицу upload, вместо использования topic_upload и post_upload, как это делает общий импортер.

    def create_upload_table
      @db.execute <<-SQL
        CREATE TABLE IF NOT EXISTS upload (
          id #{key_data_type} NOT NULL PRIMARY KEY,
          user_id INTEGER,
          original_filename TEXT,
          filename TEXT,
          description TEXT,
          url TEXT
        )
      SQL
    end

Текущий код обрабатывает загрузки, когда находит на них ссылки в raw. Он также заменяет ссылки на пользователей на упоминания в формате @username из Discourse. Кроме того, он обрабатывает некоторые странные объекты opengraphobject и использует их, если они существуют, для генерации заголовков тем (которых не хватает в большинстве тем в дампе, для которого я это писал).

Вопросы:

  • Не слишком ли много догадок, чтобы ответить на эти вопросы?
  • Стоит ли мне создать PM для ядра проекта или просто разместить это как отдельный репозиторий (я включу скрипт, который скопирует код в исходное дерево Discourse и запустит его оттуда)?
  • Выглядят ли изменения в generic_database разумными, или мне следует придумать способ добавить методы в этот класс внутри моего скрипта импорта, или просто включить свои дополнительные функции в собственный скрипт и обращаться к глобальному @db?

Я бы сказал, создайте PR для ядра, а дальше посмотрим…

Привет, Джей,

Этот импортер общедоступен? Если да, то где?

Заранее большое спасибо.

С уважением, Йохан

Скрипт импорта Yammer находится в script/import_scripts/yammer.rb

Спасибо. Вот здесь: discourse/script/import_scripts/yammer.rb at main · discourse/discourse · GitHub

Привет, Джей.

Я думал, это импортер для Yammer.
Но если посмотреть на код, то это не так.
Похоже, это импортер для Discourse.
Я не очень хорошо знаком с Discourse. Можешь рассказать что-нибудь об импортере для Discourse?

Заранее спасибо.

Верно. Этот сайт посвящён Discourse, поэтому «импортер X» почти всегда означает «импортер для переноса вашего старого сайта X на Discourse».

Если у вас есть сайт Yammer и вы хотите создать сайт на Discourse, это может помочь.