导出单个主题的最简单方法?

你好,

我们正尝试将单个主题从一个 Discourse 实例导出到本地存储,或者更理想的是导出到另一个实例。原实例的管理员支持这次迁移,但不一定愿意花费大量时间来完成迁移工作,因此我们正在寻找各种相对快速且省力的解决方案。

到目前为止,我们考虑了以下两个选项:

虽然第一个链接显然是实现我们最终目标最直接的途径,但我们不确定管理员是否愿意配合完成看似需要他们投入大量工作的迁移任务,因此也在考虑使用 @pfaffman 的 Discourse Downloader。

然而,如果根据我们的需求和限制条件,其中某个选项明显更优,我们非常希望得到那些曾尝试过其中一种方法或更熟悉此流程的人的见解。此外,如果我们尚未发现其他更优的解决方案,也非常希望能了解!

感谢您的时间!

2 个赞

主题/分类的导入/导出命令行工具实际上只需几条命令,最多花五分钟就能完成。

你有没有考虑过将用户数据复制到另一个实例可能带来的法律影响?

3 个赞

所有用户都同意此次迁移,因此我不认为这会是个问题。

如果您有不同看法,请告诉我!

1 个赞

你真的是指单个主题吗?为什么不在网页界面中直接复制粘贴呢?

编辑:哦,对了。一个主题包含多个帖子。抱歉。:frowning_face:

无论如何,既然我现在明白了,我认为如果你能让管理员帮忙的话,可以使用 rake 任务。我觉得这并不难。

1 个赞

可能的原因:

  • 您希望同时保留用户、上传内容、引用和点赞
  • 该主题包含海量帖子
2 个赞

好的,所以

管理员说两个方案都不行,因为工作量太大了

这是他们原话,不是我说的,我其实也不喜欢这样

那你知不知道有没有办法在不具备管理员权限的情况下,导出整个话题(而不是单条帖子)的 .json 文件?

编辑: 这或许更适合单独开一个话题,毕竟它似乎已经不符合原标题了。不过看起来有点像垃圾信息,所以我还是算了。

1 个赞

我认为你不需要在服务器上运行 @pfaffman 的方案。据我所知,这不需要管理员权限。

需要 API 密钥。

这是一个公共论坛话题吗?如果是,那么这应该可以在没有 API 密钥的情况下工作。

哇!看来我确实把它写成了:如果是公开话题,就不需要 API 密钥。

或者也许不是?

我已经推送了一个修复,现在你可以执行 git pull,即使 apikeys 文件为空也能正常工作。(不过我想你可能需要先创建一个空的 apikeys 文件。)它会将一个话题下载为文本文件。

我编写这个工具是为了离线分析讨论,所以如果没有进一步的工作,我不确定它会有多大用处。我认为它应该能让你将内容下载到本地,但就当前状态而言,对于迁移到另一个 Discourse 实例帮助不大。

如果你希望将其迁移到另一个 Discourse 实例,且该话题是公开的,那么你需要对这个工具做一些调整。如果你有预算,可以联系我或在 Marketplace 发帖。

2 个赞

说实话,如果我要花那么多时间,我可能会直接写个脚本爬取该主题,手动抓取所有单独的 .json 文件,哈哈。

可惜我无法为上述任一方案投入资源,所以运行下载器可能就是我目前最好的选择了。

谢谢!

1 个赞

那段代码是一个不错的起点。它会下载 JSON 文件,然后将它们转换为其他格式。

2 个赞

听起来很有帮助——谢谢!

1 个赞

感谢提供的 Ruby 代码,@pfaffman

对于更喜欢 Python 的用户,mcmcclur/ArchiveDiscourse: Code for archiving my Discourse sites 提供了关于如何使用 API 和 JSON 文件的优秀入门指南。

2 个赞