创建 Yammer Importer PM 的最佳方法

我已经为某人创建了一个 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 表不按其他脚本的方式管理上传(我无法完全理解)。我还添加了一个上传表,而不是使用 generic_importer 使用的 topic_uploadpost_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 中看到对上传的引用时会处理它们。它还将用户引用替换为 Discourse 的 @username 引用。它还处理一些奇怪的 opengraphobject,如果存在,则使用它们来生成主题标题(在我编写此脚本的转储中的大多数主题中都缺少这些标题)。

问题:

  • 这是否太含糊不清,无法回答这些问题?
  • 我应该创建一个 PM 来核心,还是将其包含在一个独立的存储库中(我将包含一个脚本,该脚本会将代码复制到 Discourse 源代码树中并从那里运行它)?
  • generic_database 的添加听起来合理吗,还是我应该在我的导入脚本中添加该类,或者只是在我的脚本中包含我的附加函数并让它引用全局 @db
2 个赞

我的建议是,为核心创建一个 PR,然后我们以此为基础进行……

2 个赞

你好 Jay,

这个导入器是公开的吗?如果是,在哪里?

提前非常感谢!

此致
Johan

script/import_scripts/yammer.rb 中有一个 Yammer 导入脚本。

3 个赞

谢谢。这是:discourse/script/import_scripts/yammer.rb at main · discourse/discourse · GitHub

2 个赞

嗨 Jay。

我以为这是 Yammer 的导入器。
但如果我阅读代码,事实并非如此。
它看起来是 Discourse 的导入器。
我对 Discourse 不太熟悉。你能告诉我一些关于 Discourse 导入器的事情吗?

提前致谢

好的。这个网站是为 Discourse 设计的,所以“X 导入器”几乎总是意味着“将您旧的 X 网站迁移到 Discourse 的导入器”。

如果您有一个 Yammer 网站并希望拥有一个 Discourse 网站,这会有所帮助。

4 个赞