首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

部落格文章批量修改實戰 (上):MetaWeblog API 與 XML-RPC.NET 入門指南

     編輯:關於ASP.NET

面對 500+ 篇舊文章需統一格式 (段首縮進、RSS 全文輸出),手動修改不現實。博客園支援 MetaWeblog API (基於 XML-RPC),配合開源 XML-RPC.NET 類庫,即可撰寫程式自動化批量修改。

XML-RPC 與 MetaWeblog 簡介

  • XML-RPC:HTTP + XML 遠程呼叫協議,輕量、易偵錯 (Fiddler 即可看懂)。
  • MetaWeblog:部落格通用編輯介面,支援 `getPost`、`editPost`、`newPost`、`deletePost` 等方法。
  • Windows Live Writer 等離線編輯器即基於此協議。

XML-RPC.NET 快速上手

忽略 MSDN 範例 (舊版、易誤導),直接參考 XML-RPC.NET 官網首頁範例:

public class Post
{
    [XmlRpcMember("postid")] public int PostID;
    [XmlRpcMember("dateCreated")] public DateTime CreateTime;
    [XmlRpcMember("title")] public string Title;
    [XmlRpcMember("description")] public string Content;
    [XmlRpcMember("categories")] public string[] Categories;
}

public interface IMetaWeblogProxy : IXmlRpcProxy
{
    [XmlRpcMethod("metaWeblog.getPost")]
    Post GetPost(string postId, string userName, string password);

    [XmlRpcMethod("metaWeblog.editPost")]
    bool UpdatePost(string postId, string userName, string password, Post post, bool publish);
}

建立 Proxy 並呼叫

var proxy = XmlRpcProxyGen.Create();
proxy.Url = "https://www.cnblogs.com/JeffreyZhao/services/metaweblog.aspx";

var post = proxy.GetPost("12345", "username", "password");
post.Content = post.Content.Replace("  ", ""); // 移除段首兩格空白
proxy.UpdatePost("12345", "username", "password", post, true);

博客園 MetaWeblog 實測差異

  • API 端點:`/services/metaweblog.aspx` (需 HTTPS)。
  • 認證:博客園帳號/密碼 (非 API Key)。
  • `categories` 陣列對應博客園分類名稱。
  • `editPost` 回傳 `bool` 表示成功與否。

整體自動化流程規劃

  1. 取得所有文章 ID (見下篇:非同步下載月份歸檔頁解析)。
  2. 平行呼叫 `getPost` 取得完整內容。
  3. 本地處理內容轉換 (Regex/HTML Agility Pack)。
  4. 平行呼叫 `editPost` 更新。
  5. 記錄成功/失敗日誌,失敗重試機制。

掌握 MetaWeblog + XML-RPC.NET,即可輕鬆實現任何支援標準的部落格平台自動化發文、備份、遷移、批量修改。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved