日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[2017-08-31]如何使用ruby同步markdown博文到博客园

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [2017-08-31]如何使用ruby同步markdown博文到博客园 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩天折騰了一下用ruby通過MetaWeblog接口把本博客同步到博客園,特此記錄。

MetaWeblog

MetaWeblog是一個專門關于博客的協議標準,通過xmlrpc,很簡單的定義了新增、編輯、刪除三個基本接口。

在博客園設置頁簽的最下方,保存按鈕之前有每個用戶的MetaWeblog接口地址:

MetaWeblog訪問地址: http://rpc.cnblogs.com/metaweblog/personball

打開這個接口地址,可以看到接口文檔。

那么通過什么方式調用這個服務呢?
最好是腳本語言,這畢竟不是開發項目,用需要編譯生成的靜態語言有點小題大做。

如果你熟悉Python,或許也可以找到MetaWeblog的客戶端庫,下面介紹通過Ruby版MetaWeblog客戶端進行XmlRpc調用。

通過Ruby腳本調用metaWeblog.newPost

準備工作:

  • ruby升級到2.3版本;
  • gem install metaweblog
  • 對了,我這里是Mac系統。下面先講幾個注意點,具體操作放最后。

    Tip1 發布頻率

    博客園的MetaWeblog接口對博文發布頻率做了限制,發布間隔太短會遇到提示:

    30秒內只能發布1篇博文,請稍候發布

    間隔30秒還是很容易觸發,建議發布間隔60秒。

    Tip2 發布Markdown

    發布Markdown內容要求Post結構中的categories設成[Markdown],注意categories要求是數組,具體請看接口文檔中struct Post一欄。

    Tip3 擴展MetaWeblog中的Post對象

    你找到的MetaWeblog客戶端很可能是通用的,所以不會針對博客園的接口做適配,肯定需要針對Post對象做擴展。

    博客園MetaWeblog接口Post結構中的title是文章標題,description是文章內容,這兩個都是必填項。
    如果遇到異常提示,必須思考下是不是博客園服務器端拋出來的。

    本博客的同步腳本

    完整代碼見:

    cnblogs_post.rb
    post_sync.rb

    其中cnblogs_post.rb是針對博客園接口的擴展,主要加了個:categories,去掉了原先MetaWeblog::Post定義的:link。
    :dateCreated雖然加了,但是目前博客園不使用接口傳進去的值,而用服務器接收時間作為發布時間。需要修改的話,必須到后臺編輯文章頁面,展開最下方的其他選項,勾選修改發布時間。(我嫌麻煩,直接title上加日期前綴了)

    post_sync.rb主要是單篇文章同步用腳本,處理了幾個問題:

  • 加載cnblogs_post.rb,以使用MetaWeblog::CnblogsPost;
  • 讀取配置(接口地址、用戶名、密碼等);
  • 打開_posts目錄中的markdown文件,進行一定的處理(解析Jekyll文件頭之類);
  • 處理文章中的相對路徑,主要是資源鏈接和博文鏈接等;
  • Yaml配置文件

    post_sync.yml范例:

    target: http://rpc.cnblogs.com/metaweblog/personball source: http://personball.com username: yourUserName password: yourPWD

    配置文件一定記得不要推送到github上,.gitignore中必須指定忽略post_sync.yml。

    批量調用

    首先post_sync.rb必須設置成可執行:

    chmod u+x post_sync.rb

    然后使用bash腳本批量調用,
    批量調用腳本參考batch_sync.sh

    這個腳本可以通過find命令遍歷_posts目錄自動生成:

    find _posts/*|xargs -n 1 echo ./post_sync.rb >> batch_sync.sh

    對了,其中sleep 55s這是通過vscode多行編輯插入的。

    最后,強烈建議程序員一定要多玩玩命令行。

    git add . git commit -a git push && ./post_sync.rb _posts/2017-08-31-how-to-sync-post-to-cnblogs-with-ruby.md

    Go!

    轉載于:https://www.cnblogs.com/personball/p/7460622.html

    總結

    以上是生活随笔為你收集整理的[2017-08-31]如何使用ruby同步markdown博文到博客园的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。