在进行Blog迁移的时候,需要从之前的WordPress系统中导出以往写的博文,导入新系统中。WordPress本身提供了信息导出的功能,但是使用xmlrpc接口来进行博文导出将会更加方便。
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()
>>> 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客户端,自动发帖等更加高级的功能,为开发者留下了无限的可能。