使用新浪微博圖床請(qǐng)先參考之前兩篇文章:
自動(dòng)部署涉及到以下文章:
項(xiàng)目地址:代碼地址
工程中的文件包括:
- deploy.py 自動(dòng)部署入口
python deploy.py
啟動(dòng)自動(dòng)部署 - expect.sh github自動(dòng)部署
- image.db 新浪圖床db
- install.sh hexo自動(dòng)部署
- weibo_util.py 微博模擬登陸+圖床
Linux + hexo + python + github運(yùn)行環(huán)境可以直接clone工程到本地,將工程中的文件拷貝到hexo博客的根目錄,例如/home/hexo/blog下,修改expect.sh中的用戶(hù)名密碼為自己的github的用戶(hù)名密碼,隨后運(yùn)行python deploy.py,輸入新浪微博用戶(hù)名和密碼就可以將博客一鍵部署到github,并將博文中的圖片替換為新浪圖床的圖片,示例網(wǎng)站:http://trytofix.com. 其他環(huán)境的用戶(hù),可根據(jù)下面對(duì)每個(gè)文件的解釋,各取所需.
Linux 需要安裝expect,
sudo apt-get install expect
weibo_util.py 用來(lái)模擬登陸微博,將本地圖片上傳到新浪圖床,并獲取圖床的鏈接.
if __name__ == '__main__':
print get_image('/home/q/hexo/blog/source/img/angular-remove-table-item.jpg')
修改get_image()中的路徑為本機(jī)電腦上的路徑,隨后python weibo_util.py就可以查看效果,第一次使用,會(huì)提示輸入新浪微博的用戶(hù)名和密碼,程序運(yùn)行成功后返回圖床的url地址.
install.sh 一個(gè)簡(jiǎn)單的發(fā)布腳本,集成了hexo發(fā)布的三個(gè)步驟: clean, generate, deploy,注意最后一行的expect.sh,介紹在下面.
#!/bin/bash
hexo clean
hexo g
./expect.sh
expect.sh 部署hexo到github時(shí),需要輸入用戶(hù)名和密碼,使用expect可以自動(dòng)輸入用戶(hù)名和密碼,將
set user yourusername
set pass yourpassword
替換為自己的github的用戶(hù)名和密碼.
如果不需要將博客部署到github,請(qǐng)?jiān)趇nstall.sh中注釋./expect.sh或替換為hexo d
deploy.py部署hexo博客
- 將_posts下的文章備份
- 遍歷所有的文章,找到
![image_alt](image_url)
標(biāo)準(zhǔn)markdown格式的image_url,其中image_url的格式應(yīng)為'/img/xxx.jpg',位于source/img下 - 通過(guò)weibo_util獲取改圖片的圖床地址并替換
- 執(zhí)行install.sh,生成圖片地址為圖床地址的博客頁(yè)面
- 將文章備份替換回來(lái),_posts下的文章中的圖片仍為markdown格式.
為了避免每次部署時(shí),都生成新的圖床url(浪費(fèi)資源可恥,感謝新浪無(wú)私的沒(méi)有做防盜鏈限制),在部署時(shí),將圖片做md5計(jì)算,將md5與新浪圖床url存入map,最后使用json持久化到文件中(image.db),每次部署先查看md5是否存在map中,如果存在,則直接取md5對(duì)應(yīng)的value值,否則,獲取圖床地址并存入image.db.
image.db存放圖片md5與圖床url對(duì)應(yīng)關(guān)系的json數(shù)據(jù)庫(kù)
感謝新浪提供的圖床,避免相同的圖片每次都生成新的圖床地址,浪費(fèi)資源.