小窝复活计划

因为某些不可抗力,近一年没有再管理过 blog

回来的时候发现图全裂了(草

一看原因是 jsdelivr 加速的图会自动将域名跳转至 https://raw.githubusercontent.com/

服务器到期了,我打算转 Hexo 作为 blog 框架


开始折腾

安装 Hexo

首先在本地部署 Hexo

要求的环境 gitnode.js 因为开发需要早就安装好了,所以直接开始安装 Hexo

1
npm install -g hexo-cli
1
2
3
hexo init <folder>
cd <folder>
npm install

提前安装好 hexo-migrator-wordpress 插件

1
npm install hexo-migrator-wordpress --save

转换 WordPress 中的文章数据

拿出之前备份好的 WordPress 网站数据(备份很重要)

用一点奇怪的办法在本地跑起来

在 WordPress 仪表盘中导出数据(工具 → 导出 → 导出文章或所有) 版本: 5.3

导出的是一个 xml 文件

1
hexo migrate wordpress <导出的xml文件>

稍等片刻,文章就会转换成 .md 文件,都在 /source/_posts/ 目录

由于数据格式的差异,该方法并不能完美转换成功

包括但不限于图片404、文章异常等

修复文章需要折腾不少时间

然后配置好 _config.yml 、主题和仓库

1
hexo server #开启预览服务器 http://localhost:4000/
1
2
hexo g #生成静态文件
hexo d #部署,向仓库推送文件

迁移评论(LeanCloud)

导出评论

导出评论有两种方法

一种是用上面的方法,导出的是 xml(所有内容已经包含评论了)

另外一种方法就是从数据库中直接导出表 wp_comments

我是用了第二种,直接把表导出为 json 格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[
{
"comment_ID": "4", //编号
"comment_post_ID": "42", //页面编号,需要转译为页面后缀
"comment_author": "****", //昵称
"comment_author_email": "****@qq.com", //邮箱
"comment_author_url": "", //网站链接(评论)
"comment_author_IP": "***.***.***.***", //ip地址
"comment_date": "2019-10-20 19:01:12", //评论时间(服务器所在的时区)
"comment_date_gmt": "2019-10-20 11:01:12", //评论时间(格林尼治标准时间)
"comment_content": "\u7559\u8a00\u03b5=\u03b5=(\u30ce\u2267\u2207\u2266)\u30ce", //内容,Unicode编码
"comment_karma": "0", //不清楚干嘛的
"comment_approved": "1", //0等待审核,1允许发布,spam垃圾评论
"comment_agent": "Mozilla\/5.0 (Windows NT 6.3; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/77.0.3865.90 Safari\/537.36", //ua
"comment_type": "", //不清楚+1
"comment_parent": "0", //上一层评论的编号(楼中楼),嵌套关系。0为不是回复层
"user_id": "0" //用户id,未注册为0
},
...
]

评论系统选用 Waline

它的数据结构是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[
{
"comment": "<p>留言ε=ε=(ノ≧∇≦)ノ</p>", //内容,需要<p>标签
"createdAt": "2019-10-20T11:01:12.000Z", //创建时间
"insertedAt": {
"__type": "Date",
"iso": "2019-10-20T11:01:12.000Z" //插入时间
},
"ip": "***.***.***.***", //ip地址
"link": "", //网站链接(评论)
"mail": "****@qq.com", //邮箱
"nick": "****", //昵称
"objectId": "4", //编号
"ua": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36", //ua
"updatedAt": "2019-10-20T11:01:12.000Z", //更新时间
"url": "/comment/", //对应的页面后缀
"rid": null //回复层编号,对应主评论objectId。null为不是回复层
},
...
]

转换评论格式

因为我没有在网上找到这种可以转换格式的工具,所以就用 C# 简单写了一个

代码已经在 github 开源
https://github.com/BluesDawn576/WordPress2Valine


转换完成后将 json 文件导入到 LeanCloud

Class名称为 Comment

然后就是折腾时间(指修复表情包


趣事

我只想拿个数据