把一篇簡書博客同步到掘金的 python 腳本

需求

辛辛苦苦寫完一篇質量比較高的技術博客,不少開發者朋友都會把它發到簡書、掘金、我的博客等數個平臺。我也不例外,通常是先在簡書寫好,由於簡書的 markdown 編輯器用起來比較舒服,並且傳圖片比較方便:只需把要傳的圖片粘貼到剪切板上,在編輯框裏 Command-V 一下,就自動上傳圖片、並生成相應的 markdown 代碼了。javascript

可是往別的平臺發的時候有個小問題。第一次,我直接把簡書博客全文複製粘貼到掘金的編輯框裏,就發出去了;很快就收到掘金編輯的微信:「你的圖掛啦!快去看看吧!」原來,簡書會自動把博客裏的圖片重傳一次,放在本身的圖片服務器 upload-images.jianshu.io 上。而這個服務器對站外訪問是有必定限制的,貼到掘金上天然就訪問不到了。java

因而,每次在簡書發完文章,我都要把全部圖片再往我本身的七牛空間從新傳一份,而後用七牛的圖片連接逐一替換簡書的圖片連接。這個過程很重複,也很無聊,爲何不能用腳本自動化處理一下呢?所以,我寫了這個用於同步簡書博客的 python 腳本。python


使用

環境準備

這個腳本在 python 2.7.1 下運行經過。圖牀用的是七牛雲存儲。
七牛的 python sdk 須要安裝 requests,沒裝的朋友能夠在 terminal 裏運行 sudo easy_install -U requests 來安裝。git

源碼地址

源碼放在 Github 上,地址戳這裏github

用法

  1. 把腳本源碼下載到本地
  2. 填寫源碼中的如下部分:正則表達式

    # 在此處填寫你的七牛 Access Key 和 Secret Key
     accessKey = '...'
     secretKey = '...'
     q = Auth(accessKey, secretKey)
    
     # 七牛上的 bucket 名
     bucketName = '...'
     # 這個 bucket 的外鏈前綴,就是七牛後臺的「外鏈默認域名」
     imageUrlPrefix = "http://xxxxxx.bkt.clouddn.com/"複製代碼
  3. 把 blog.txt 裏的文本替換成本身的博客內容
  4. 在 terminal 中切換到腳本根目錄,運行:python blogbot.py,會看到如下輸出:
    $ python blogbot.py 
    正在解析文件...
    正在下載圖片...
    下載中:1 / 4
    下載中:2 / 4
    下載中:3 / 4
    下載中:4 / 4
    正在上傳圖片...
    上傳中:1 / 4
    上傳中:2 / 4
    上傳中:3 / 4
    上傳中:4 / 4
    正在寫入文件...
    完成啦~複製代碼
  5. 新生成的博客就在腳本根目錄下的 newBlog.txt 裏。拿去用吧:)

源碼講解

爲何選擇 python?

其實用任何一種腳本語言均可以。七牛還有 javascript 的 sdk,因此一開始想作成一個網頁的。不過由於涉及到須要填寫七牛的 Access Key 和 Secret Key,感受在本地運行更安全一些(並且懶得畫網頁了……),因此用的 python。七牛雲存儲

腳本流程

  1. 讀文件
  2. 從博客正文中識別圖片連接
    這一步用的是正則表達式,簡單匹配 markdown 的圖片語法,提取出全部的圖片連接。
  3. 下載圖片
    用 python 的 urllib.urlretrieve 下載圖片,自動命名爲 image1image2……
  4. 上傳圖片到七牛
    使用七牛的 python SDK。自動命名爲形如 blog20161027_image1 的文件名,前面拼上七牛的外鏈前綴,即獲得七牛上的外鏈地址。
  5. 替換連接
  6. 寫文件

源碼很簡單,我註釋也寫得挺詳細的,一看源碼就明白了。安全

侷限性

主要是爲了我本身的需求使用,不少地方考慮得比較簡單。好比:服務器

  • 正則表達式只是簡單匹配了 markdown 的圖片語法,並無考慮例如「圖片語法在代碼段裏「之類的狀況。
  • 圖片的命名比較簡單粗暴,不能知足一天處理兩篇文章的需求(第二篇文章的圖片會覆蓋第一篇)。若是有這種需求,能夠簡單修改一下命名那部分的代碼。

就是這樣一個很簡單的小腳本,但願能爲你們的生活帶來方便~微信

相關文章
相關標籤/搜索