将主题从一个 Discourse 实例移动到另一个

我一直想解决上传文件迁移的问题,现在借助 AI 聊天机器人的帮助终于做到了。分享我的笔记给关注这个话题的朋友们!Jay 在上面的帖子中包含了启动所需的关键信息,感谢他。

我最初的尝试完全符合 Jay 的预测。如果你创建一个包含源站点图片 URL 的列表,并将其粘贴到新站点的帖子中,这些图片就会被下载。要实现这一点,必须启用 Download remote images to local 设置。

我的 AI 聊天机器人为此编写了一个脚本,我在这里分享出来,供后来的开发者参考。

摘要

在 Rails 控制台中运行以下代码:

topic = Topic.find(=TOPIC_ID=)
posts = Post.where(topic_id: topic.id)
urls = []

posts.each do |p|
  UploadReference.where(target: p).each do |ref|
    urls << "=SOURCE_URL=#{ref.upload.url}"
  end
end

puts urls.uniq.join("\n")
puts "\nTotal: #{urls.uniq.count} upload(s)"

:bulb: 想迁移整个类别吗? 请将前两行替换为:

topic_ids = Topic.where(category_id: =TOPIC_ID=).pluck(:id)
posts = Post.where(topic_id: topic_ids)

在这种情况下,=TOPIC_ID= 是你的类别 ID,可以在管理后台 → 类别(Admin → Categories)的 URL 末尾找到。

然而,对我来说这还不够,因为我还有 PDF 文件,它们不会自动下载到本地。

因此,我让我的聊天机器人写了一个 Python 脚本来迁移上传文件。它运行得很好,所以我也很乐意分享它。如果你想尝试或提供反馈,这里是仓库地址

我还让聊天机器人编写了一份更完整的关于迁移主题或类别的操作手册,发布在我的 Discourse 站点上。

2 个赞