MWeb发布文章到自建博客(Django)

by chenomg

发表于: 04月 16日, 2019年 | 分类:Django | 标签: Django MetaWeblog MWeb

更新于: 04月 16日, 2019年


MWeb能够使用MetaWeblog API发布文章,于是我就捣鼓了一下,使我的博客可以支持MetaWeblog。记录一下供有需要的朋友借鉴。

首先介绍一下MetaWeblog API

什么是MetaWeblog

MetaWebBlog API(MWA)是一个Blog程序接口标准,允许外部程序来获取或者设置Blog的文字和熟悉。他建立在XML-RPC接口之上,并且已经有了很多的实现。

看看MetaWeblog的主要接口方法以及request示例

blogger.deletePost —— 删除文章
blogger.getUsersBlogs —— 获取用户博客信息
metaWeblog.editPost —— 编辑文章
metaWeblog.getCategories —— 获取用户博客分类
metaWeblog.getPost —— 获取文章
metaWeblog.getRecentPosts —— 获取最近的文章
metaWeblog.newMediaObject —— 添加媒体对象(图片等)
metaWeblog.newPost —— 添加文章
wp.newCategory —— 添加目录

有三个基本的函数规范:

metaWeblog.newPost (blogid, username, password, struct, publish)
    返回一个字符串,可能是Blog的ID。
metaWeblog.editPost (postid, username, password, struct, publish) 
    返回一个Boolean值,代表是否修改成功。
metaWeblog.getPost (postid, username, password) 
    返回一个Struct。

请求示例: metaWeblog.getPost

<?xml version="1.0"?>
    <methodCall>
      <methodName>blogger.getUsersBlogs</methodName>
      <params>
        <param>
            <value><string>postid</string></value>
        </param>
        <param>
            <value><string>username</string></value>
        </param>
        <param>
            <value><string>password</string></value>
        </param>
      </params>
</methodCall>

完整的api列表可见MetaWeblog API列表

如何在Django项目中实现

实现思路

和Django rest-framework中api的实现类似,就是将MetaWeblog特定的请求(xml)解析后传递到应用内相应方法,并最终处理及返回数据。

用到的库

  • django-xmlrpc Django_xmlrpc提供了一种方法,使得Django开发人员可以使用XML-RPC暴露他们的视图(或实际上任何其他函数)

实现过程

参考django-xmlrpc文档中的使用方法

  • settings.pyINSTALLED_APPS中添加django_xmlrpc
  • 注册你的方法,有两种方法
XMLRPC_METHODS = (('path.to.your.method', 'Method name'),
                  ('path.to.your.othermethod', 'Other Methodname'),)

第一种:在项目的settings.py文件中注册

第二种:在项目应用内新建一个xmlrpc.py模块或包,进行注册

  • 在xmlrpc内完善你注册的方法,示例如下
from django_xmlrpc.decorators import xmlrpc_func

@xmlrpc_func(returns='string', args=['string'])
def test_xmlrpc(text):
    """Simply returns the args passed to it as a string"""
    return "Here's a response! %s" % str(text)
  • 最后在url中配置路由
from django_xmlrpc.views import handle_xmlrpc

url(r'^xmlrpc/$', handle_xmlrpc, name='xmlrpc'),
  • 可以参考我的网站示例

写作工具推荐

不管是自建的博客还是在发表在Medium或者WordPress之类的网站,都可以选择一款写作应用,方便将文章同时更新发布到各个平台。

以下推荐几款App:

Reference:

  1. MetaWeblog API中文说明
  2. XML-RPC 简单理解与博客园的MetaWeblog协议
  3. MetaWeblog
  4. 知识扩充:企业博客、MetaWeblog 和 XML-RPC



Comments:

  • 欢迎发表评论~~
Leave a Comment:
We'll never share your email with anyone else.