导出 Typecho 的数据到 Canvas:typecho-to-canvas

通过简单几步,将 Typecho 博客程序的数据(文章,标签一类)轻松转换到由 Laravel 驱动的 Canvas 博客平台。

有关 Canvas 什么的我就不说了吧,大概知道这是个比较新的 PHP 博客程序,由 Laravel 框架驱动就可以了。

至于为什么为突发奇想写这样一个东西,首先主要是这是个比较新鲜的东西,相关的东西都还很少,我在 GitHub 上找到了 wordpress-to-canvas 的东西,于是便觉得为何不搞一个 typecho-to-canvas 呢~其次呢,因为我之前用过一段时间的 Typecho,也想借这个东西把之前的一些数据导回来(虽然我找不到我把 DB 的 备份扔到哪了……qwq),以及……其他的一些原因……所以就花了一些时间造这个轮子啦。

GitHub: typecho-to-canvas: easily converting your data from Typecho to Canvas

Packagist(Composer): typecho-to-canvas

# 功能特色

  • Typecho 下的第一个 “Switch to Canvas” 工具
  • 支持转换 Typecho 的文章、标签和关系树,兼容性约 95%
  • 自动加载和解析配置数据,你甚至可以全程 Enter
  • 在 CLI 模式下运行
  • 作者这么萌

# 环境需求

  • 确保 Typecho 和 Canvas 在转换环境下分别已正确安装
  • 拥有转换环境的操作权限
  • PHP 5.6.4 以上的版本(Canvas 的版本要求)
  • 已正确安装 composer 依赖管理工具
  • PHP 已加载对应 Typecho 和 Canvas 安装类型的数据库的 PDO 拓展
  • 数据库正常运行(废话)
  • 耐心,Patient

# 使用方法

数据无价,在进行以下操作之前,强烈建议手动备份 Typecho 和 Canvas 的数据库。

数据无价,在进行以下操作之前,强烈建议手动备份 Typecho 和 Canvas 的数据库。

数据无价,在进行以下操作之前,强烈建议手动备份 Typecho 和 Canvas 的数据库。

重要的事情说三遍。 再次确保你的环境工作正常,Typecho 和 Canvas 的数据库可以访问~然后接着往下看吧~

准备:安装 te2cn

安装教程可以在 GitHub 的 README 找到:https://github.com/kirainmoe/typecho-to-canvas

这里提供通过 Git 的安装方法,简单快捷~如果你没有安装 Git,请自行搜索当前系统的安装方式。

# 首先将项目仓库拉下来
$ git clone https://github.com/kirainmoe/typecho-to-canvas
$ cd typecho-to-canvas

# 然后用 composer 安装依赖
$ composer install

# 运行 te2cn,按照提示转换数据就行啦
$ chmod -R 755 ./te2cn
$ ./te2cn

填写数据库配置信息

运行程序首先是一贯的套路 welcome,然后 te2cn 会先后向你询问 TypechoCanvas 的数据库配置信息。首先会询问 Typecho 的数据库配置信息,请按顺序依次输入:数据库主机、用户、密码、数据库名称、端口、以及数据库的种类。程序会给出默认值,如果你不需要修改默认值,可以直接敲回车。 (小技巧:直接将 Typecho 的配置文件 config.inc.php 复制到程序目录下,te2cn 会自动解析数据库配置,无需人工填写)

接下来会询问 Canvas 数据库的配置信息。首先会问你 Canvas 和 Typecho 是否安装在同一数据库主机中,如果是的话直接回车,程序会问你 Canvas 安装的数据库名称;如果不是的话,会收集 Canvas 安装数据库的配置。 (目前暂时不支持解析 Laravel .ENV 的说 qwq)

接下来会列出所收集或解析的数据库的配置信息,请检查是否有误,如果无误可以直接敲回车。

开始转换进程

如果信息填写正确,程序就会自动开始数据导出进程。不过在这之前会先询问你是否保留 Canvas 的现有数据,如果你需要保留直接回车,不保留的话需要确认两次,以防误操作丢失数据。

然后,程序就会自动启动转换进程。取决于 Typecho 数据量的大小以及服务器 IO 性能,这个过程可能需要一些时间,请耐心等待,在依次导出了 tags, posts, relationships 之后,就完成了操作。

Enjoy~

当看到转换完成的提示之后,Typecho 的数据就成功地被导出到 Canvas 了。你可以试一试运行 Canvas 看看效果:

$ cd /path/to/your/canvas
$ php artisan serve

# 问题解决

目前由于 Canvas 暂时不支持本地评论以及其他一些 Typecho 的 features,所以只做了文章、标签和关系树的单向转换。如果有时间会更新逆向转换功能(canvas-to-typecho)。

有任何问题或者建议,都可以到 GitHub 的项目主页提 issues 或者 Pull request 告诉我们。

嘛。希望这个轮子能对你们有帮助~