如何优雅地将Discuz转换为Flarum论坛
2020.11.21更新: 最近有意愿用MyBatis重写一个,这个太臃肿了。具体就坐等我另开新坑吧!
以下为原文:
什么是D2F?
这是一个可以将Discuz系统的论坛内基本数据移动到Flarum系统的小工具简单说就是Discu转换Flarum的工具,论坛系统转换。GitHub地址:https://github.com/KeKe12030/DiscuzToFlarum
演示站点:
DZ站点:https://bbs.mcplugin.cn
转换后的Flarum站点:http://test.mcplugin.cn
注:这里的Flarum一定是没有添加任何第三方插件的纯净Flarum,否则会出现导入失败的问题。
过您想要使用D2F,请您仔细阅认真读本博客!
目前D2F实现的功能
- 转移Discuz用户的邮箱、注册时间、回复内容、头像 (密码无法迁移怎么办?看我上面的博客教程里写了)
- 讲指定fid(Discuz论坛版块ID)中的帖子,转移到对应的discussion_id当中(Flarum的板块ID)
目前帖子仅支持displayorder>-1(即可以被展示的帖子,被删除的帖子暂不支持) - 帖子只有帖子内容、作者、阅览量、、回复的迁移(预计未来版本添加帖子附件的转化)
- DZ论坛
FID(板块ID)与Flarum论坛ids.yml的对照表文件,方便自动化转化论坛所有帖子 - 在
replace.yml里新增自定义替换文字
未来D2F添加的功能
- 论坛用户密码、注册IP的转化
- 帖子附件的转化
- 帖子锁帖的转化
- 更多细节的开发尚待发现
1.如何获得D2F?
1.下载源码后,自行编译。
Github地址:https://github.com/KeKe12030/DiscuzToFlarum
2.直接下载Jar包。
Github Relesases:https://github.com/KeKe12030/DiscuzToFlarum/releases
需要的第三方Jar包:JDBC
2.如何运行D2F?
运行前的提示:
1.请清空Flarum论坛的Users表和Discussion表和Discussion_tag表,这三个表中不要留存任何数据。
2.请不要安装其他的第三方插件,Flarmn必须是纯净的,未经过使用的。
Ⅰ.如果您是下载的源码:
打开您下载好的源码,找到src目录下的三个配置文件,根据提示配置(下方将会讲解如何配置)
配置好之后,添加运行环境(JDBC需要添加到库中)后运行Main.java
Ⅱ.如果您下载的是Jar包:
用压缩程序(如360压缩包,WINRAR等)打开您下载好的Jar包,找到三个配置文件,根据提示配置(下方将会讲解如何配置)
配置好之后,输入java -jar xxxx.jar运行Jar包(xxxx.jar为您下载的jar包文件名)
3.如何配置D2F?
根据上一步的教程,您现在已经找到了配置文件。
通过记事本/其他的文本工具打开它们后,根据下面的提示进行配置:
- config.properties
此配置文件用于配置D2F的数据库配置,以及一些其他拓展功能的配置
1 | #使用flarum论坛系统的数据库配置 |
2. replace.yml
此配置文件用于配置您所需要替换的字符(config.yml中的replaceStrs设置为true则开启,false则关闭)
1 | # 这里是配置您所需要替换的自定义文本的,如需使用,请将config.yml中的replaceStrs设置为true,关闭设置为false |
3. ids.yml
此配置文件是将您Discuz论坛中的板块ID替换为Flarum论坛中的板块ID(或者叫做分类ID)
格式:Discuz的板块ID=Flarum的板块ID
等号左边数字只能为一个,等号右边数字可以为多个,用英文的逗号,隔开
1 | # Discuz的板块ID=Flarum的板块ID(如有多个可加逗号【注意是英文逗号】) |
4.最后
一切准备就绪,配置完成之后,根据第2步的提示,运行D2F即可。
常见问题:
- 目前无法转换密码怎么办?
因为邮箱被导入了,所以可以使用Flarum自带的邮箱找回密码,让用户重新设置密码(唯一的解决方法)
2. 转换好慢啊,效率低,我论坛数据多怎么办?
什么?代码冗余?啊这,别骂了别骂了,我有空一定改。
现在的工具是面向过程版的,后续会更改为面向对象思想版的,冗余会大大减少。
现在只是测试版,效率很低,建议等后续版本。3. 我转换完成之后,管理员账号怎么登陆?
使用第一个常见问题的方法,通过忘记密码进行登录,UID1的账号默认是管理员账号。如果您有其他问题,欢迎在https://github.com/KeKe12030/DiscuzToFlarum/issues 提交Issues
作者的一些留言:
说一下开发原因吧,因为总被人吐槽用Discuz太土了,上个世纪的风格和上个世纪的产物了, 又被人推荐了Flarum,安装了一下试了试,感觉还不错,但是就是数据没法转移。 于是在半年前我尝试去转移数据,基础的数据可以转移了,但是还有很多数据没办法迁移, 后续等待其他大佬开发比较NB的转换程序,或者说慢慢等我划水写完把。 这个工具建议给有Java基础的人员来用,因为可以高度DIY,我把所有功能全封装了。 FlarumSQLUtil是专门控制Flarum数据库的,DiscuzSQLUtil是专门控制DZ数据库库的,所有你想获得的东西 前提是我写了 都可以通过getXXXX()方法获得到什么?你说这太屑了,功能一点都不多?啊这,我也没办法,没时间继续写下去,只能抽空改一改,增加一些新功能,可能这个东西也没人用吧。