上傳markdown文件到博客園


【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包,實現了異步上傳。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM