【0】需求原因
個人習慣用markdown寫博客,然后同步到博客園,每次同步都比較麻煩。
於是通過Metaweblog實現了,一步上傳markdown文件的小工具。
工具地址:https://github.com/dongfanger/pycnblog
作者博客:https://www.cnblogs.com/df888/p/11826480.html
【1】功能
- 一鍵拖拽上傳
- 默認“未發布”,可選擇直接發布
- 重復上傳,提示是否更新博客
【2】環境
python3
安裝參考:
windows:https://blog.csdn.net/weixin_40844416/article/details/80889165
linux:https://www.cnblogs.com/gered/p/13246889.html
【最佳實踐測試】
(1)查看 Typora 設置
這個文件存儲位置設置無所謂的;

(2)配置 pycnblog 配置文件 config.yaml
解壓出來后文件夾:

打開配置文件修改 config.yaml

1、blog_url
管理進入博客園后台 =》 設置 =》拉到頁面最底端

2、blog_id
就是網址上的這個東西

3、username
這沒什么好說的,就是你登錄博客園的賬戶
4、passowrd
這沒什么好說的,就是你登錄博客園的密碼
(3)運行 pycnblog 中的文件 cnblog_markdown.cmd
1、打開這個文件

出現如下窗口

2、把我們要上傳的markdown文件拖過去


操作完成后就會生成,對應的 _network.md 文件,如下圖;
你然后你可以把該文件發給別人,也可以直接復制markdown代碼到博客園

3、對比操作前后文檔的區別
我們可以發現,圖片的URL已經被替換成了網絡RUL,存儲在博客園的網絡URL;
你現在可以把該文件發給別人,也可以直接復制markdown代碼到博客園

(4)上傳新生成的 _network 文檔到博客園

然后內容直接復制過來就好了

張貼過來之后,發布,然后查看,結果如下圖:

成功
(5)總結:可復制替換后的 markdown 代碼發布,但無法直接發布
【附錄】
【故障處理】
(1)Typroa =》markdown圖片存儲設置
如果(2)中報錯,發布到博客園報錯,那么則必定是因為這個
寫markdown有一利器Typora,一般圖片存儲設置我會修改成這樣。
打開文件>偏好設置,找到'圖片插入'

修改為'復制到指定路徑',規則設置為./${filename}.assets
下面的3個選項全部勾選。
這樣當復制粘貼圖片到markdown時,就會在目錄中新建一個同名文件夾,存儲圖片。

(2)為什么只會圖片上傳,文檔不會自動發布到博客園?
故障信息:

我的配置文件如下: blog_url: https://rpc.cnblogs.com/metaweblog/gered blog_id: "gered" username: "xxx" password: "xxxx" #是否生成圖片替換后本地文件,默認False關閉 gen_network_file: True #上傳后是否發布,默認未發布,設置True為發布 publish: True #圖片自定義顯示格式,默認不設置 #img_format: "<center><img src="" style="width:100%;" /></center>" 設置居中和寬度 #img_format: typora 還原typora圖片樣式,居中,設置zoom,上傳后無需再手動調整圖片大小 img_format: ""
作者提供的解決方案:
修改upload.py 60行代碼中的99999為99,因為:博客園的博文最大可獲取數量為100。修改后測試成功!


實際上,默認為已發布了!
【工具原理】
本工具的基本原理是,調用Metaweblog的相關api,把圖片上傳到服務器后,獲取url替換本地圖片地址,再上傳文件到博客園,在博客園后台能看到新博客。
Metaweblog是一個開放api,用於和遠程blog交互,可以通過xmlrpc建立連接
server = xmlrpc.client.ServerProxy(blog_url)
這里用到了2個api:圖片上傳.MetaWeblog.newMediaObject和博客上傳.MetaWeblog.newPost。
上傳圖片部分,通過asyncio包,實現了異步上傳。
