CsdnBlogMover(CSDN博客搬家程序)发布

项目背景:

在2011年底的时候忽然有了自己开设独立博客的想法。主要是因为CSDN的博客服务太难用了:广告多、不能匿名评论、不能嵌入flash和音乐、可定制性差。再加上我刚有这些想法的第三天CSDN就爆出了明文密码事件,所以就毅然决然了离开陪伴我6年的CSDN了。我们需要一个更自由更可控的世界。

想把原始的文章评论从CSDN移动主机的wordpress平台上,自然不能用手工来做,作为一个程序员,这种机械的行为是不能容忍的。寻找搬家程序无果,偶然发现有先辈WeiWei写过一个livespace的搬家程序,正好又是GPL发布的,遂以为原型改动。

第一次用python连学带写,一周时间终于搞定, CsdnBlogMover1.0正式发布。

功能描述:

0、本程序目前只负责从Csdn导出文件,导入功能是由wordpress官方开发的Worpress Import插件完成的

1、支持文章、评论、分类、附件(即上传到csdn上的图片)转移

2、支持SyntaxHighlighter 和GeSHi两种引擎的代码高亮(需安装wordpress对应插件)

3、支持断点续传 ,程序会自动保存已经下载好的页面,防止中途出错退出后丢失已完成的任务^^

安装需求:

python2 运行环境和BeautifulSoup库(文章结尾有链接地址)

使用方法:

程序是一个命令行工具,以下默认为程序当前目录,并确定开启python脚本的执行权限

一、简单用法

1、导出blog文件

[dave@dave CsdnBlogMover]$ ./blog_mover.py -s http://blog.csdn.net/davelv

这里表示把位于http://blog.csdn.net/davelv的博客导出出来,程序运行无误后会生成一个名为export_${当前时间}.xml文件。

2、把刚才生成的导出文件导入到wordpress里

打开wordpress站点,登录到管理界面后,选择工具–>导入菜单,选择Wordpress格式(此插件需要安装)然后讲刚才的导出文件上传到站点。

等待上传完毕后会提示选择导入账户和导入附件,由于CSDN的附件不支持外链,所以推荐选择导入附件,注意如果附件比较多(>100)的话,导入附件时间会比较长(为什么我的页面失去响映了? 见FAQ)。

导入完毕,没有错误提示的话,就成功了,搬家前后截图如下。

移动前
移动前
移动后
移动后

二、高级选项

1、设置导出的日志起始位置和文章数目

[dave@dave CsdnBlogMover]$ ./blog_mover.py -n 10 -b http://blog.csdn.net/davelv/article/details/7169731

这里表示从http://blog.csdn.net/davelv/article/details/7169731这篇文章开始共导出10篇文章,注意:时间是向前计算的

2、不导出评论

[dave@dave CsdnBlogMover]$ ./blog_mover.py --postonly -s [URL]

程序会导出除评论以外的东西

3、不导出附件(用途不大)

[dave@dave CsdnBlogMover]$ ./blog_mover.py --noattach -s [URL]

程序不会处理csdn中的附件,这可能会导致你所有在csdn的外链无法正常使用。其实如果真的不想转移附件的话,在导入的wordpress时,不要勾选导入附件的项目就可以了orz。

4、设置wordpress文章和评论的起始ID(高级选项)

[dave@dave CsdnBlogMover]$ ./blog_mover.py -i 100 -s [URL]

上面将起始ID设置为100,默认是10,这个ID就是wordpress文章链接中的数字,如果该数字和wordpress中已有文章id重复的话,导入的文章会从wordpress中最大的id开始算起。

5、设置代码高亮格式

[dave@dave CsdnBlogMover]$ ./blog_mover.py -l geshi -s [URL]

以上将文章高亮格式设置为GeSHi引擎支持的风格,不用-l参数默认是SyntaxHighlighter风格,安装对应插件后可以看到高亮效果。

各种风格对比如下:

noplugin
没有安装插件
SyntaxHighlighter
安装了SyntaxHighlighter引擎的WP SyntaxHighlighter插件
GeSHi
安装了GeSHi引擎的Better WordPress Syntax插件

FAQ:

一、导入附件后页面失去响应变成空白页面怎么处理?

由于网站设定了网页程序运行的最大时间,当超过最大时间的时候会停止运行。当附件比较多时,就可能会出现这样的情况。这时你可以选择两种方案:

1、增加程序运行时间上限

在我的网站上php 是运行在php-fpm管理的fastcgi模式下,修改php-fpm配置文件(一般命名为php-fpm.conf)中的 request_terminate_timeout 字段和php配置文件(一般命名为php.ini)max_execution_time 字段为更大的值。

如果你没有权限修改修改配置文件的话还有第2点

2、分段导出文件

可以使用脚本的 -b -n -i三个选项分段导出文件

[dave@dave CsdnBlogMover]$ ./blog_mover.py  -i 10 -n 50 -b http://blog.csdn.net/davelv/article/details/7169731
...运行完毕后...
[dave@dave CsdnBlogMover]$ ./blog_mover.py  -i 60 -n 50 -b http://blog.csdn.net/davelv/article/details/5976986

上面演示了100个日志分2个文件导出的方法,然后分别把导出文件按照正常方法导入即可

改进计划:

以下改进进化为时间顺序排列

1、支持更多更灵活的代码高亮

2、支持 MetaWeblog API 在线发布blog

3、提供更灵活的输入输出项目

3、增加图形界面版本或者网页版本

 

资源链接:

本项目及其进度保存在github网站上,采用GPL授权,欢迎改进或者汇报bug

github项目主页:https://github.com/davelv/CsdnBlogMover

github下载页:https://github.com/davelv/CsdnBlogMover/downloads

BeautifulSoup主页:http://www.crummy.com/software/BeautifulSoup/

 致谢:

在开发过程中得到以下同仁支持,在此表示感谢。

WeiWei,live space mover作者,本程序参考原型,个人主页: http://weiwei9.com/

大D,我的好兄弟,提供了最新的全面的Wordpress导出文件,个人主页:http://www.bugsong.net/

This entry was posted in Python, 程序设计 and tagged , , . Bookmark the permalink.

31 Responses to CsdnBlogMover(CSDN博客搬家程序)发布

  1. xushine says:

    D大居然木有用wxpython

  2. 大D says:

    5555……沙发没了。。话说。。怎么chrome显示的英文字体好可爱的~卡哇伊~~【卖个萌~

  3. Snail says:

    鼓掌庆祝~

  4. 杨漱玉青 says:

    D大搬家啦~~~~~~~~~~~~~~~~

  5. 老谢 says:

    CSDN已经无法满足D大技术前进的脚步了

  6. 战狼 says:

    D大的配色太刺眼了。暗一点吧

    • davelv says:

      评论部分调灰了。如果还是觉得太亮的话,可能你是用镜面的LED背光显示器的原因。那个太刺眼了,亮度调低也没用。

      • 战狼 says:

        LED确实背光太刺眼,但是抛开显示器问题,我个人还是比较喜欢暗色调的页面,感觉比较舒服

  7. 空谷幽兰 says:

    多谢博主分享

  8. Pingback: 迁移csdn的blog到wordpress | KumaLee's Area

  9. android vpn says:

    博主是否可以开发php。有个小东西,php开发,可以付费。

  10. gooooloo says:

    Thanks guy! It works!

  11. Pingback: Old CSDN Blogs Imported « Bo Yang's Blog

  12. emptystack says:

    使用了楼主的这个工具,把博客搬了家。
    这工具真的不错,非常谢谢

  13. crifan says:

    看来咱俩在做一些重复的工作。因为偶也是用Python写了BlogsToWordpress,也支持csdn搬家到wordpress。呵呵。
    不过倒是启发偶,有机会去添加一些对csdn的额外功能的支持,比如下载附件,保持语法高亮的代码之类的功能。

    话说,你也是基于blog_mover去添加了对应的功能的。呵呵。

    • davelv says:

      看了你的搬家工具,支持的站点好多,一定花了不少功夫。
      要是你能早点开发,我也就不会搞这个项目了,当时搜索好久无果阿。
      blog_mover受益者,握手~

回复 Snail 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注