zoukankan      html  css  js  c++  java
  • WordPress to Micolog转换工具

    虽然Micolog提供了从WordPress文件导入日志的功能,但WordPress到Micolog的转换总不是那么完美,简单的来说,表现有二:

    1,如果item中包含<title>*******.jpg</title>字样,导入自动中段。我也不知道为什么WordPress导出的xml文件中会存在这么怪的内容,又不是日志,纳闷。

    2,图片无法导入。如果你日志搬家,从WordPress转换到Micolog,那么原来的图片怎么办?要么以静态文件形式上传到GAE,并建立好相应的路径,但如果文件太多,肯定会担心超过1000文件的限制。最好的办法当然是按照Micolog的格式,将所有图片导入到GAE的数据库中。

    今天我们就来解决这两个问题,按照我的需求,用python写了一段code,运行后就可以将WordPress完美导入Micolog。我们先来将具体操作,然后讲原理。具体操作如下:

    0,备份你的所有的WordPress的文件到本地(本工具主要用到上传的文件)。进入WordPress的后台,将所有日志导出为wordpress.xml。这两个在后面需要用到,所以在开始前请先处理完毕。

    1,编辑app.yaml文件,配置remote_api路径,如下:(具体路径可以自行修改)。(当然,这里还包括了micolog的上传等,请自行解决,如果已经上传了micolog的,请初始化数据,并进入数据库中将除了blog数据外的所有数据删除。)

    - url: /remote_api
      script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
      login: admin

    2,下载我的WordPress2Micolog.py文件,编辑该文件中的几个参数为自己的参数:

    #这是应用程序ID
    app_id='myappid'
    #如果是本地处理,则将host改成你自己的url路径,如果直接在appengine上处理,则使用appspot.com
    host = '127.0.0.1:8080'
    #host = '%s.appspot.com' % app_id
    #remote_api的路径
    remoteurl='/remote_api'
    #原有Wordpress的URL
    wpurl = 'http://share.sharesh.cn'
    #本地Wordpress的路径
    wppath = 'E:\\PHPnow\\htdocs\\blog'
    #WordPress.xml文件所在目录
    xmlpath = 'E:\\PHPnow\\htdocs\\blog'

    3,运行WordPress2Micolog.py文件(建议使用python2.5自带的IDLE运行,如果有错误还能看到具体问题所在),等待。此步骤主要是上传所有图片,并根据wordpress.xml文件生成micolog.xml文件,micolog.xml文件中图片的路径已经是micolog的路径了。

    4,进入micolog后台,导入,选择刚才生成的micolog.xml文件,直接导入即可。补充几句:建议使用FireFox导入,不要使用IE导入;如果中途发生中断,则是GAE超时,在micolog.xml文件中找到导入的最后一个记录的item,将catalog、tag和已经导入的item项目全部删除,留下没有导入的item项目,保存文件,再次导入,直到完成即可。完成后建议在micolog后台的工具中重新建立一下文章链接。

    下面说说思路:

    看了整个流程也基本明白我的思路了吧,其实重要之处在于WordPress2Micolog.py,这个文件的作用是什么呢?主要完成三件事情:1,将xml文件中多余的item项目删除,以保证上传到micolog中没有问题;2,根据xml文件中的img和a,将所有图片上传到数据库;3,根据已经上传了的图片修正xml文件中的img的src和a的href路径。

    所以我分成了两个function,第一个function就是wordpress到临时文件,将无效的item删除,并将所有图片上传到数据库中,第二个function是根据数据库中的图片生成新的有效的图片链接,并最终生成xml文件。

    不过,工具也有问题的地方,由于我没有png和bmp等图片格式,所以我只判断了jpg格式的文件,在item的判断中仅仅判断了jpg,而在上传到数据库的时候呢,又是直接将类型定义为了image/jpeg。另外就是数据库中的name我设置成了原始的图片url,而不是jpg的名称。总的来说并不影响,如果你的情况特殊,那么请按照代码自行修改即可。

    顺便测试了一下micolog导出wordpress的功能,发现wordpress完全可以通过,只是,图片和wordpress2micolog一样,无法直接下载并更新链接,看来以后我要是micolog导出到wordpress的话,还需要再写一个工具,my god。

    一直没有发表日志,今天终于写上一篇来充充数。py的code写的很菜,如果看到我写的python觉得很好笑,请给出一定的指点,但确实让我这样的小菜菜也花了我不少时间,所以感叹,写code真是一件痛苦的事情那。

    最后说一下我测试通过的情况,提供给大家作参考:wordpress.xml:1.75M;post:144;jpg file:799;micolog.xml:486K。本地测试通过,用时大概而是多分钟。而正式上传到GAE的过程中,失败了好几次,不过好在我分成了两个function,所以wp2temp的function完成以后如果temp2micolog的function失败,那么把wp2temp的function注释掉,让其直接进入到temp2micolog的function即可。这里需要说明的是,如果wp2temp的function中途失败,请务必到数据库中将所有的图片删除掉,不过删除后不知道为什么数据库竟然占着空间不变小,郁闷,这个就下次再考虑吧,但也看来,我的程序还是需要改进的,至少能够断点续传吧。最终的测试结果是:上传799个图片花费40分钟;重写micolog.xml花费60分钟。总共花费100分钟,够让人晕的,看来还真要改进改进。

    最后的最后:感谢step1

    下载地址:https://files.cnblogs.com/Tangf/WordPress2Micolog.rar

  • 相关阅读:
    Atitit 华为基本法 attilax读后感
    Atitit 华为管理者内训书系 以奋斗者为本 华为公司人力资源管理纲要 attilax读后感
    Atitit 项目版本管理gitflow 与 Forking的对比与使用
    Atitit 管理的模式扁平化管理 金字塔 直线型管理 垂直管理 水平管理 矩阵式管理 网状式样管理 多头管理 双头管理
    Atitit 乌合之众读后感attilax总结 与读后感结构规范总结
    深入理解 JavaScript 异步系列(4)—— Generator
    深入理解 JavaScript 异步系列(3)—— ES6 中的 Promise
    深入理解 JavaScript 异步系列(2)—— jquery的解决方案
    深入理解 JavaScript 异步系列(1)——基础
    使用 github + jekyll 搭建个人博客
  • 原文地址:https://www.cnblogs.com/Tangf/p/1439793.html
Copyright © 2011-2022 走看看