项目背景:
在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风格,安装对应插件后可以看到高亮效果。
各种风格对比如下:
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/
D大居然木有用wxpython
嘿嘿,多谢提议,下个版本改进的时候再加入
兔兔的意思是做个GUI?
我觉得木有GUI 用户推广效果不好啦
推广什么的都无所谓,反正也不拿来赚钱。
我是打算写一个web版本的,直接在网页上操作。
可惜的是google 的appspot被该死的XXX屏蔽了
其实D大可以尝试一下SAE。哈哈
嗯,有空去试一下
5555……沙发没了。。话说。。怎么chrome显示的英文字体好可爱的~卡哇伊~~【卖个萌~
字体是因为更新了主题阿。话说你又卖萌,小心哪天卖完了。
常在卖萌很多的群和BBS中闲逛的大D。。。表示。。卖萌无极限。。嘿嘿~
鼓掌庆祝~
52同学评论文章再也不用登录CSDN啦^o^
友链更新完毕~
D大搬家啦~~~~~~~~~~~~~~~~
恩恩,CSDN已经满足不了我啦
CSDN已经无法满足D大技术前进的脚步了
D大的配色太刺眼了。暗一点吧
评论部分调灰了。如果还是觉得太亮的话,可能你是用镜面的LED背光显示器的原因。那个太刺眼了,亮度调低也没用。
LED确实背光太刺眼,但是抛开显示器问题,我个人还是比较喜欢暗色调的页面,感觉比较舒服
多谢博主分享
Pingback: 迁移csdn的blog到wordpress | KumaLee's Area
D大V5
博主是否可以开发php。有个小东西,php开发,可以付费。
最近工作比较忙,抱歉了
Thanks guy! It works!
Pingback: Old CSDN Blogs Imported « Bo Yang's Blog
使用了楼主的这个工具,把博客搬了家。
这工具真的不错,非常谢谢
看来咱俩在做一些重复的工作。因为偶也是用Python写了BlogsToWordpress,也支持csdn搬家到wordpress。呵呵。
不过倒是启发偶,有机会去添加一些对csdn的额外功能的支持,比如下载附件,保持语法高亮的代码之类的功能。
话说,你也是基于blog_mover去添加了对应的功能的。呵呵。
看了你的搬家工具,支持的站点好多,一定花了不少功夫。
要是你能早点开发,我也就不会搞这个项目了,当时搜索好久无果阿。
blog_mover受益者,握手~
恩,4月份添加csdn的支持的。晚你3个月。
不过以后别人就都可以用了。。。
为开源事业尽自己的一份力 ~\(≧▽≦)/~