阿里雲有個開發者社群,入駐過的朋友可能想要把自己的部落格釋出到阿里雲社群上。
今天我來介紹一下blog-auto-publishing-tools自動釋出部落格到阿里雲的實現原理。
阿里雲的部落格釋出介面比較簡單,只有標題,正文,摘要,關聯試用產品,釋出子社群,文章圖片這幾個選項。
一起來看看如何實現吧。
前提條件
前提條件當然是先下載 blog-auto-publishing-tools這個部落格自動釋出工具,地址如下:https://github.com/ddean2009/blog-auto-publishing-tools
阿里雲的實現
因為阿里雲的部落格釋出介面比較簡單,只有標題,正文,摘要,關聯試用產品,釋出子社群,文章圖片這幾個選項。
其中標題,正文,摘要和文章圖片這幾個是必須的。
關聯試用產品,和釋出子社群並不是剛需,所以這兩個目前選擇預設值即可。
如果有感興趣的朋友可以自行實現這兩個功能。
所以在config/alicloud.yaml中,我們只需要配置阿里雲的發文地址即可:
site: https://developer.aliyun.com/article/new#/
有同學要問了,標題,正文,摘要和文章圖片在哪裡配置呢?
在最新的工具實現中,有兩種方式來設定這些值。
- 第一種方式
第一種方式是在config/common.yaml中:
# 文章的標題
title: 一鍵自動化部落格釋出工具,用過的人都說好(阿里雲篇)
# 文章的內容
content: /Users/wayne/Downloads/blogthings/blogs/blog/projects/004-auto-blog-publish-tool-oschina.md
# 文章的摘要
summary: 使用一鍵自動化部落格釋出工具blog-auto-publishing-tools把部落格釋出到阿里雲上。
這種是最基本的方式。
- 第二種方式
如果你的markdown檔案中已經包含了title和summary這些資訊,那麼你就不需要再重複在common.yaml中再寫一次了。
這種方式,你需要把title和summary(對應的是description),寫到markdown檔案的YAML Front Matter中,如下所示:
這樣,在程式中會優先讀取markdown檔案中的YAML Front Matter,免去你重複設定的煩惱。
設定封面圖片
封面圖片就是在上圖的image中設定的。
這裡image是一個網路圖片連結。一般來說部落格的圖片上傳中上傳的圖片需要是一張本地的圖片。
不過不要擔心,這個工具已經實現了自動把遠端圖片轉換成本地圖片再上傳的整套過程。
大家只管設定即可。
不過能夠設定封面圖片的前提是部落格網站的上傳圖片是一個input標籤。
可惜的是阿里雲的上傳是一個button,並沒有input,所以目前來說阿里雲是沒有辦法透過這個工具來自動上傳封面圖片的。
這個功能,後續再最佳化,看看有沒有實現的可能。
設定標題
阿里雲的標題比較簡單,直接透過ID獲取,或者透過下面的XPATH來獲取,設定:
# 文章標題
title = driver.find_element(By.XPATH, '//input[@placeholder="請填寫標題"]')
title.clear()
if 'title' in front_matter['title'] and front_matter['title']:
title.send_keys(front_matter['title'])
else:
title.send_keys(common_config['title'])
time.sleep(2) # 等待3秒
設定正文
阿里雲的正文是一個textarea,不像之前的oschina和segmentfault用的是codemirror,那種動態的程式碼風格。
所以設定正文就比較簡單了,我們直接拿到textarea,呼叫send_keys就行了:
# 文章內容 markdown版本
file_content = read_file_with_footer(common_config['content'])
content = driver.find_element(By.XPATH, '//div[@class="editor"]//textarea[@class="textarea"]')
content.send_keys(file_content)
time.sleep(3) # 等待3秒
設定摘要
阿里雲的摘要也是一個textarea,我們可以用類似設定正文的方式來設定摘要:
# 摘要
if 'description' in front_matter['description'] and front_matter['description']:
summary = front_matter['description']
else:
summary = common_config['summary']
if summary:
summary_input = driver.find_element(By.XPATH, '//div[@class="abstractContent-box"]//textarea[@placeholder="請填寫摘要"]')
summary_input.send_keys(summary)
釋出部落格
所有的內容都設定好了,接下來我們就可以點選發布部落格按鈕了。
# 釋出
if auto_publish:
publish_button = driver.find_element(By.XPATH, '//div[@class="publish-fixed-box-btn"]/button[contains(text(),"釋出文章")]')
publish_button.click()
總結
阿里雲的部落格釋出介面還是中規中矩的,沒有太多特殊的地方,除了上傳封面沒有使用input標籤之外,其他都還是挺常規的用法。
點我檢視更多精彩內容:www.flydean.com