phpBB3 导入脚本的增强请求

在 phpBB 中,可以向上传的附件添加注释:

这些注释随后会显示在帖子中的图片下方:

如果 phpBB3 导入脚本能够获取这些注释并将其作为替代文本(alt text)分配给配对的图片,那将会很有用,这样在 Discourse 中将鼠标悬停在图片上时就会显示这些文本。

谢谢
Dan

1 个赞

啊!由于我对 Ruby on Rails 一无所知——而且我正在请求对 phpBB 导入脚本进行增强——我想请求一个额外的增强,如此处所述。如果脚本报告帖子存在日期/时间错误,同时报告 phpBB 的 post_id 以便调试将会很有用。

谢谢
Dan

1 个赞

您要求的功能如何实现尚不清楚,但我花了几分钟时间研究了一下,似乎没有一个非常令人满意的可行解决方案。

上传记录中没有用于存放说明文字的位置,而且我没有看到从“上传”回溯的明显方法……一种可能性是将评论作为文件名,然后在稍后以某种方式将其提取为说明文字。是的。这可能是你能做的最好的事情,将该说明文字编码为文件名,这样它就会在鼠标悬停等情况下显示出来。如果你愿意,你之后可以做其他事情,比如获取包含说明文字的文件名,然后以某种方式将其插入到 HTML 中。

1 个赞

坦率地说,我对 RoR 甚至 postgres 都不了解。但是,当您用 alt 文本标记图像时,它会存储在 postgres 数据库中,并与该图像相关联。导入脚本中有什么阻止了这种分配?当然,该注释在 MySQL 中是可访问的。

1 个赞

看起来很棘手,但您可能可以通过修改此处的此方法获得成功:

用这个代替:

text.gsub!(attachment_regexp) do
        index = $1.to_i
        real_filename = $2
        unreferenced_attachments[index] = nil
        attachments.fetch(index, real_filename)
end

您会想要类似这样的东西:

text.gsub!(attachment_regexp) do
        index = $1.to_i
        description = $2.strip
        unreferenced_attachments[index] = nil

        url = attachments.fetch(index, description)

        "![#{description}](#{url})"
end

这只是一个未经测试的示例,用来说明需要修改的位置。我可能是错的。

如果我明天有时间,我可能会提交一个带有真正解决方案的拉取请求 (PR)。:grinning_face_with_smiling_eyes:

5 个赞

谢谢!您想根据 MIME 类型来限定此任务吗?(我无法将 phpBB 评论附加到 .mp4 文件;虽然我可以附加到 .gif 文件,但它在悬停时没有出现。)

1 个赞

这可能有用,但我研究了一种将评论直接添加到帖子原始内容的新方法。我相信那样处理所有类型的文件更安全。

您能否用您的数据集测试这些更改?我在本地进行了测试,但在继续进行拉取请求 (PR) 之前很想听听您的反馈。

3 个赞

我很乐意测试,但是……我必须清除我的测试环境并重复吗?Claude.ai 引导我完成了安装过程,我是 Docker 新手——即便如此,一路上也出现了许多错误。

如果您能概述一种让我可以轻松测试的方法,我将很乐意尝试一下。

1 个赞

干得好!我查看了代码,但没有找到那个。

是的。你需要清除数据库并重新运行。导入器会跳过已导入的数据,所以你需要重新导入所有内容才能试用。不过看起来它应该有效!

好的——附件仍然存在,MySQL数据库也是。运行花了几个小时,我会让 Claude 带着我走一遍并报告结果。

当然,我可以帮你。无需更改你的安装。简单的方法如下:

  1. 备份你的站点并安全存储。这将保护你免于丢失你的工作。
  2. 重置你的站点:
# 进入站点的容器
cd /var/discourse
./launcher enter <your-container-name>

# 重置数据库
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# 退出容器
exit

# 重新构建容器以确保一切就绪
./launcher rebuild <your-container-name>
  1. 使用新代码修改文件。你可以使用命令行文本编辑器,或者通过 ssh 在你最喜欢的文本编辑器中打开你的容器。
  2. 设置 settings.yml 并再次运行导入程序。

要恢复到你以前的状态,你只需恢复你在开始时所做的备份:

./launcher enter <your-container-name>
discourse enable restore
discourse restore <your-backup-filename>
4 个赞

哦耶!既然我们谈到这个,修改脚本以报告正在处理的 phpBB post_id 是否足够容易,以便在报告日期/时间问题时使用?

2 个赞

看起来很简单!等 Rosie :dog: 带我散步完,我马上就去试试。

2 个赞

我正在使用现有的 gsub 在此处添加它:

但感谢您的关注,这让我意识到我没有考虑到 phpbb 也有的未引用的附件:

2 个赞

好的,备份正在进行中。我预计这可能需要一段时间……

我需要编辑吗?我不能只将您 git 仓库中的文件通过 docker cp 复制到脚本路径中吗?

1 个赞

那样也可以。或者,您可以将 container.yml 设置为使用我的仓库和分支并重新构建。

1 个赞

嗯,那不太顺利。

reset_log.txt (16.6 KB)

1 个赞

我认为您可能需要以 discourse 用户身份运行这些命令:

su discourse

或者

su discourse -c “bundle exec rake db:drop”

哎呀。新手失误,我不是有意关闭帖子的——只是想确认一下,那似乎解决了那个特定的问题。

“似乎是。” 我还在等 db:drop 完成。继续……

1 个赞

仍然没有反应。

reset_log2.txt (1.7 KB)