a migrator help you transfer comments from duoshuo to disqus
Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
screenshot
LICENSE.md
README.md
duoshuo-migrator.py

README.md

duoshuo2disqus

背景

前几天我受够了多说的各种漏洞和问题,终于把评论系统切换到了 Disqus。为了尽可能的保留之前网友们的留言和评论,我写了个 Python 程序把多说导出的 JSON 格式文件转换成了 Disqus 支持的 WXR (WordPress eXtended RSS) 格式。

对切换评论系统的前因后果以及中间过程感兴趣的话,可以看看我之前的博文《告别多说,拥抱 Disqus》。

可以访问我的博客原文《我把博客评论从多说迁移到 Disqus 时造的轮子》参与讨论。

轮子

代码明显属于糙快猛的风格,没有太多的讲究,能把活干好就行。好像自从我大学时期读了垠神的这篇 《谈程序的“通用性”》 之后,写出的脚本和一次性轮子都是这种风格。

用法

  1. 下载 duoshuo-migrator.py,并安装依赖

    • Linux/Mac OS X

      pip install lxml

      如果Mac下安装报以下错误:

      /var/folders/pm/qg6mrjdx4cxcdf96kfjzctcw0000gn/T/xmlXPathInitxjIaO5.c:1:10: fatal error: 'libxml/xpath.h' file not             found
          #include "libxml/xpath.h"
                   ^
          1 error generated.
          

      你可以采用这个方式来解决:

       步骤1. 不管有没有有装Xcode,再次安装一下command line tools。

    xcode-select --install

       步骤2. 用sudo授予更高权限安装

    sudo pip install lxml

    即可正常安装。
    
* Windows

    Windows 下使用 pip 安装 lxml 时编译无法通过,到 <https://pypi.python.org/pypi/lxml/3.5.0> 下载对应自己 Python 版本的 32 或 64 位 exe 文件安装即可。
  1. 登录多说后台,在http://<shortname>.duoshuo.com/admin/tools/ 页面导出多说评论 export_duoshuo

  2. 使用duoshuo-migrator.py将步骤 2 导出的评论转为 disqus 支持的 XML 格式的文件。 duoshuo-migrator.py有三个参数:

    • -h 查看帮助
    • -i 指定输入文件,默认从 stdin 读取,
    • -o 指定输出文件,默认输出到 stdout。

    一般可以这么用:

    python duoshuo-migrator.py -i ~/Desktop/export.json  -o disqus.xml
    

    如果程序执行的过程中发现有文章的标题为空,会往 stderr 中输出一些信息来提醒用户注意,比如这样:

    found article without title, id=1173938669371785301, link=http://www.jamespan.me/blog/2015/01/22/trick-of-paging-query/

  3. 登录 disqus 后台,在https://<shortname>.disqus.com/admin/discussions/import/platform/wordpress/ 页面选择步骤 3 中导出的xml文件 disqus_import

最后

我对 lxml 库不是很熟悉,所以写生成 XML 那段代码还是颇费了一番功夫,写这种代码真是磨性子。

希望我顺手造的轮子能在你逃离多说拥抱 Disqus 的时候,帮你减少麻烦节省时间,也希望我的贡献让这个世界稍微变得美好了那么一点点~

参考