我想我不该把这个问题隐藏在其他帖子中。
@gerhard 目前不同的 BBCode 是如何被区别处理的?这是偶然发生的错误,还是有意为之?
我想我不该把这个问题隐藏在其他帖子中。
@gerhard 目前不同的 BBCode 是如何被区别处理的?这是偶然发生的错误,还是有意为之?
你们在更大的机器上测试时,每分钟能导入多少帖子?我目前在一台 8 核 Xeon 上运行导入任务,机器看起来负载很低,但导入速率始终无法显著超过 1000 条/分钟。
由于使用的是高速 NVMe SSD,我推测瓶颈不在 I/O 上。有什么建议可以进一步提升速度吗?我想争取再优化百分之几,从而将整体导入时间缩短一两个小时(目前大约需要 14 小时)。
你好,我遇到了一个小问题……我导入了并转换了大约 10 万篇帖子,随后发现我忘记正确设置重定向链接(另外,在 settings.yml 中也没有将表情符号链接到 emoji)。有没有办法重新导入所有内容,以便正确解析链接,同时不改变我已经设置好的其他内容?
如果我再次运行脚本,它是否会认为已经导入过而什么都不做,还是会有所不同?
根据我的了解,很遗憾这是不可能的。它会按照您所说的那样——忽略已导入的帖子。
有没有办法让它暂时忘记已导入的帖子并重新导入?
(不是永久性的,因为我之后还想添加帖子)
这应该不是有意为之,BBCode 到 Markdown 的转换目前还不够完美。
听起来差不多,除非你能找到单核速度更高的 CPU。
你在开始导入之前有备份吗?如果有,可以恢复备份并重新开始导入。否则就只能从头开始了。
真遗憾。这是否也适用于表情符号?
你说的“从头开始”是指重新安装 Discourse 吗?
很抱歉,在导入后尝试修正表情符号会非常困难且容易出错。如果您想走这条路,我无法为您提供帮助。
是的,基本上是这样。您可以通过删除所有数据并重建容器来跳过几个步骤。
./launcher stop app
rm -rf /var/discourse/shared/
./launcher rebuild app
谢谢!
您的意思是,只需执行这两个命令,论坛就准备好导入了吗?不需要其他步骤吗?(那主题、奖项、群组以及其他所有已设置的项呢?有没有办法备份这些?(关于主题我知道如何保存和导入,但其他设置呢?))(括号太多了)
我主要是很高兴现在发现了这个问题,而不是在迁移过程中、系统停用时才遇到,这样就有时间修复了。但我希望尽量减少返工……
没错,如果没有备份,你就得手动重新做这些事。
如果还不清楚的话,这会清空整个数据库,您需要从头开始。
如果您搜索一下,会发现几种保存和恢复设置的方法。
但正如建议的那样,您最好在执行导入之后再处理这些设置,或者先完成所有设置,创建一个备份,将其作为导入前的起点。
你好,Helmi,
一位正在开发自定义 BB 代码插件的朋友在导入器中发现了一个漏洞,导致颜色标签无法正确渲染。
用他的话说:
颜色标签正被故意从帖子中剥离。转换器的漏洞并不在于它只移除了结束标签。所谓的“漏洞”在于它没有移除带有 命名颜色 的颜色标签。
证据:
https://github.com/discourse/discourse/blob/master/script/import_scripts/ph pbb3/support/text_processor.rb
def clean_bbcodes(text)
# 许多 phpbb bbcode 标签都附带了一个哈希值。例如:
# [url=https://google.com:1qh1i7ky]点击这里[/url:1qh1i7ky]
# [quote="cybereality":b0wtlzex]一些文本。[/quote:b0wtlzex]
text.gsub!(/:(?:\w{8})\]/, ']')
# 移除颜色标签
text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")
end
最后一行 text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "") 是一个正则表达式,它会捕获带有哈希代码的颜色标签以及结束颜色标签,但不会捕获带有命名颜色(如 color=green 等)的颜色标签。
解决方案:删除该行。
text.gsub!(/\[\/?color(=#[a-z0-9]*)?\]/i, "")
我们实际上并不希望这样做。我们希望保留颜色数据,无论我们决定如何显示它。(对于我们的论坛来说,这就是解决方案。对于 Discourse,你可能需要修改代码,使其移除所有颜色标签,而不仅仅是命名颜色的标签。)
你好,Gerhard。按照您的指示操作后(我先删除了内容,然后重新做了大量工作,接着进行了备份,随后开始导入。但导入进行到一半时,我发现自己操作有误,于是停止了导入,由于数据已经部分导入,只能从头再来。
于是,我再次删除了所有内容。
在重新构建应用以便恢复备份并再次尝试导入后,网站拒绝连接。
运行 Discourse Doctor 时,它提示:Discourse 版本在 [域名] 处未找到。在 localhost 处也未找到。没有其他错误。
我接下来该怎么做?
你不需要重新构建,只需恢复备份即可。
我猜你需要运行
./launcher start import
discourse-doctor 不知道 import 容器的存在。
你可能需要重新构建 app 和 import,因为它们应该是同一版本。
我已经重新构建了导入和应用程序,但连接仍被拒绝。![]()
您需要再次添加 phpBB 的数据库转储和文件。您可能在重置过程中删除了它们。
是的,我已经删除了那些内容。但我是不是需要先恢复我的数据?我在导入之前已经设置了很多东西,这样就不必在重新导入时再重复设置了。难道现在不会只是导入到一个原生的 Discourse 实例中吗?
然后,您将恢复位于 /var/discourse/shared/backups/default 的备份文件。
啊啊啊,我又来了,抱歉,但我现在又遇到了另一个问题……
这次是:表情符号! 我在 settings.yml 中这样配置了每个表情:
happy: [‘:D’,‘:-D’]
woo: ‘:woo:’
等等。
我将表情图片放在了 /var/discourse/shared/standalone/import/images/smilies 目录下。
导入时,我没有看到任何关于找不到表情之类的错误提示。
尽管如此,表情仍未映射为 emoji,在帖子中它们被转换成了图片。
我哪里做错了?
再次感谢你们的帮助和见解!
编辑:
当然……我需要用 phpBB3 而不是 phpBB2 来映射……
我想这应该能解决问题,但我仍需要测试一下这是否就是问题所在。
编辑 2:我现在用一个新的 phpBB3 数据库转储文件重新导入了,其中已包含表情数据。但依然没有表情。它们被转换成了图片,并且也不在 emoji 集合中。问题可能出在哪里?
我终于成功将表情符号映射到了 emoji。
由于我有超过 150 个自定义表情符号,它们的图片名称和表情代码各不相同,这让我走了不少弯路。因此,我为像我一样的用户提供一份简化的扩展教程。
了解导入器如何处理表情符号
我原本以为,当你在导入器中添加表情代码并将图片放入指定的图片文件时,它们会自动添加到 emoji 文件夹中。但事实并非如此。因此,你需要手动将表情图片导入到 emoji 中。
导入时,图片名称必须与你实际使用的表情代码一致。例如,如果你有一个表情,其图片文件名为“cheery_icon0.gif”,当用户输入“:cheer:”时显示该图片,那么你需要将该图片重命名为“cheer.gif”,然后上传到 emoji 文件夹中(在管理面板 > 自定义 > emoji)。
现在,当你有一堆在 phpBB 中通过类似以下内容显示的表情时,情况变得更加有趣:
<:-)
%-)
:3
例如,我有一个表情:
代码:<:-) 且文件名为“_1partyguyhat.gif”
首先,我需要决定在 Discourse 中使用的新代码是什么,因为文件名不能包含“<:-)”。然后,将 gif 文件重命名为该代码,并在设置文件中添加相应的映射。
对我来说,这个特定表情的映射如下:
party_hat: '<:-)'
导入后,帖子中所有用户输入的“<:-)”实例都会被转换为“:party_hat:”。
然后,系统会使用 party-hat emoji 来渲染该表情符号,前提是该 emoji 在 emoji 文件夹中可用。
当你有 120 个表情需要转换时的提示 ![]()
settings.yml 故障排查
emojis 这一行。(我完全忽略了这一点)"yes": ':yes:' 来编码该特定 emoji。希望这对大家有所帮助。我知道,在我终于成功导入所有表情之前,我花了将近两周的时间。