使用 MetaWeblog API 修改博客

  1. 设置启用 MetaWeblog 博客客户端访问。

    image

  2. 生成访问令牌。

  3. 发送请求:

    import axios from 'axios';
    
    function escapeXml(str) {
      return str
        .replace(/&/g, '&')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/\r?\n/g, '&#x000A;');
    }
    
    async function main() {
      const title = "使用 MetaWeblog API 修改博客"
      const body = "(博客内容)"
      const description = escapeXml(body);
      const username = "undefined443";
      const token = "0123456789ABCDEFGHIJKLMN"
      const url = `https://rpc.cnblogs.com/metaweblog/${username}`;
      const blog_id = 19039962
      const data = `<?xml version="1.0"?>
    <methodCall>
      <methodName>metaWeblog.editPost</methodName>
      <params>
        <param><value><string>${blog_id}</string></value></param>
        <param><value><string>${username}</string></value></param>
        <param><value><string>${token}</string></value></param>
        <param>
          <value>
            <struct>
              <member>
                <name>description</name>
                <value><string>${description}</string></value>
              </member>
              <member>
                <name>title</name>
                <value><string>${title}</string></value>
              </member>
              <member>
                <name>categories</name>
                <value>
                  <array><data><value><string>[Markdown]</string></value></data></array>
                </value>
              </member>
            </struct>
          </value>
        </param>
        <param><value><boolean>1</boolean></value></param>
      </params>
    </methodCall>`;
    
      const response = await axios.post(url, data, {
          headers: {'Content-Type': 'text/xml'},
      });
      console.log(response);
    }
    
    main().catch(console.error);
    

参考:

posted @ 2025-08-15 16:47  Undefined443  阅读(10)  评论(0)    收藏  举报