Adieu的大杂烩

在进行Blog迁移的时候,需要从之前的WordPress系统中导出以往写的博文,导入新系统中。WordPress本身提供了信息导出的功能,但是使用xmlrpc接口来进行博文导出将会更加方便。

网上搜索了一下, wordpress-library 提供了api简单的封装,不过直接使用Python自带的xmlrpclib来操作也非常的简单。代码片段如下:

import xmlrpclib

XMLRPC_ENDPOINT = "http://www.YOURBLOG.com/xmlrpc.php"
USERNAME = "YOURUSERNAME"
PASSWORD = "YOURPASSWORD"
BLOGID = "0" # Blog ID,如果是单用户的WordPress系统,则为0

client = xmlrpclib.ServerProxy(XMLRPC_ENDPOINT)
posts = client.metaWeblog.getRecentPosts(BLOGID, USERNAME, PASSWORD, 1000) # 最后一个参数代表取多少篇博文,如果想一次性获取全部博文,则将这个参数设为一个大数即可

for post in posts:
    print post
    DO_SOMETHING_ELSE()

需要注意的是,返回的post所带的wp_slug参数是经过quote了的,需要unquote来得到原始的值,代码片段如下:

import urllib
slug = urllib.unquote(post['wp_slug']).decode("utf8")

使用WordPress的xmlrpc接口还可以方便的进行其他操作,所有接口函数列表可以使用 mt.supportedMethods() 函数获得,如下:

>>> client.mt.supportedMethods()
['wp.getUsersBlogs', 'wp.getPage', 'wp.getPages', 'wp.newPage', 'wp.deletePage', 'wp.editPage', 'wp.getPageList', 'wp.getAuthors', 'wp.getCategories', 'wp.getTags', 'wp.newCategory', 'wp.deleteCategory', 'wp.suggestCategories', 'wp.uploadFile', 'wp.getCommentCount', 'wp.getPostStatusList', 'wp.getPageStatusList', 'wp.getPageTemplates', 'wp.getOptions', 'wp.setOptions', 'wp.getComment', 'wp.getComments', 'wp.deleteComment', 'wp.editComment', 'wp.newComment', 'wp.getCommentStatusList', 'wp.getMediaItem', 'wp.getMediaLibrary', 'wp.getPostFormats', 'blogger.getUsersBlogs', 'blogger.getUserInfo', 'blogger.getPost', 'blogger.getRecentPosts', 'blogger.getTemplate', 'blogger.setTemplate', 'blogger.newPost', 'blogger.editPost', 'blogger.deletePost', 'metaWeblog.newPost', 'metaWeblog.editPost', 'metaWeblog.getPost', 'metaWeblog.getRecentPosts', 'metaWeblog.getCategories', 'metaWeblog.newMediaObject', 'metaWeblog.deletePost', 'metaWeblog.getTemplate', 'metaWeblog.setTemplate', 'metaWeblog.getUsersBlogs', 'mt.getCategoryList', 'mt.getRecentPostTitles', 'mt.getPostCategories', 'mt.setPostCategories', 'mt.supportedMethods', 'mt.supportedTextFilters', 'mt.getTrackbackPings', 'mt.publishPost', 'pingback.ping', 'pingback.extensions.getPingbacks', 'demo.sayHello', 'demo.addTwoNumbers']

对这些接口函数的解析可以参考本文最后的相关链接,这里就不详细解释了。充分利用这些接口函数可以实现定制WordPress客户端,自动发帖等更加高级的功能,为开发者留下了无限的可能。

Comments

今天遇到的一个问题,记录一下,以便日后备查。

今天在捣鼓openwrt时,打算挂载局域网内的一个samba share,在成功挂载后执行 ls 时报错:

root@OpenWrt:/mnt/cifs# ls
ls: can't open '/mnt/cifs': Value too large for defined data type

经过一段不短的时间调试以及搜索后,总算找到了解决方案,参见 这里

使用以下指令挂载samba share后,问题解决:

root@OpenWrt:~# mount.cifs //IP/SHARE /mnt/cifs -o nounix,noserverino
Update:
貌似这个问题很早就有了,参见 这里的讨论:

Comments

都来自于 http://css.maxdesign.com.au

文字简单易懂,适合有一定CSS基础以及英语基础的同学阅读。另外该网站上还有一些CSS教程,也值得一看。

Comments

其实,这是一个测试 :)

Comments

夫妻感情和睦的核心其实并不是追求那些自己想要的东西,而是接受那些自己不想要的东西。因为当一个愿望得到满足以后,总会有新的欲望产生。而另一半的缺陷总是有限的,当所有的缺陷都能够接受以后,对方在自己眼中就变得完美起来了。

Comments