1. 程式人生 > 實用技巧 >一個釋出文章到部落格園的 Python 指令碼

一個釋出文章到部落格園的 Python 指令碼

原文地址

我的個人獨立部落格是基於 Hexo 搭建的,因為小站,Google 搜尋引擎收錄文章比較慢,還搜不到

為了解決這個問題,希望把文章也順便釋出到部落格平臺部落格園上。但不想每次手動複製貼上,打算利用指令碼實現,希望除了釋出,並且還能更新文章。原來打算找到部落格園介面,模擬操作介面實現。搜尋發現部落格園提供了 MetaWeblog 介面,所以利用介面,開發了這個指令碼。原始碼地址

如何使用這個指令碼

部落格園 -> 管理 -> 設定 -> 允許 MetaWeblog 部落格客戶端訪問

cnblogs-post.py 中配置:

config = {
    'url': 'https://rpc.cnblogs.com/metaweblog/deppwang',               # 你的 MetaWeblog 訪問地址
    'username': 'DeppWangXQ',                                           # 你的登入使用者名稱,可能跟上面的不一致
    'password': '12345678'                                              # 你的登入密碼
    'local_post_path': '/Users/yanjie/GitHub/HexoBlog/source/_posts/'   # 你的本地博文路徑
}

在文章開頭,新增文章資訊塊,至少需要包括 title 和 tags,格式如下:

---
title: 一個可編輯與新增部落格園文章的 Python 指令碼
english_title: a-python-script-to-edit-and-add-cnblogs-posts
date: 2020-06-20 20:48:37
tags: 部落格園
categories: Tools
---
正文開始 ...

指令碼根據文章名稱來判斷是否已經發布,如果已經發布,更新,否則新增。預設只操作最近修改文章,但也可以指定文章數量(count)

python3 cnblogs-post.py [count]   # macOS/Linux
python cnblogs-post.py [count]    # Windows

刪除最近釋出文章

python3 cnblogs-post.py delete    # macOS/Linux
python cnblogs-post.py delete     # Windows

核心程式碼

import xmlrpc.client
import ssl

ssl._create_default_https_context = ssl._create_unverified_context

config = {
    'url': 'https://rpc.cnblogs.com/metaweblog/deppwang',
    'username': '', 
    'password': ''
}

class MetaWeblog:
    def __init__(self, url, username, password):
        self.url, self.username, self.password = url, username, password
        self.proxy = xmlrpc.client.ServerProxy(self.url)

    def getRecentPosts(self, count):
        return self.proxy.metaWeblog.getRecentPosts('', self.username, self.password, count)

def main():
    metaWeblog = MetaWeblog(config['url'], config['username'], config['password'])
    posts = metaWeblog.getRecentPosts(100)

一文多發

指令碼只實現釋出、更新文章到部落格園。如果想實現一文多發,可使用 OpenWrit,或自己開發相應指令碼,方法為找到相應介面,使用模擬操作介面的方式實現

我個人沒有一文多發的需求,感興趣的同學可以做做

參考

  • https://extendswind.top/posts/technical/python3_publish_blog/
  • https://github.com/Whistle1988/auto_post_article
  • https://rpc.cnblogs.com/metaweblog/deppwang
  • http://samwirch.com/blog/recursively-find-the-last-modified-file-in-python
  • https://github.com/executablebooks/markdown-it-py