一個釋出文章到部落格園的 Python 指令碼
阿新 • • 發佈:2020-07-01
我的個人獨立部落格是基於 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