hexo使用新浪微博图床自动部署

使用新浪微博图床请先参考之前两篇文章:

自动部署涉及到以下文章:

项目地址:代码地址

工程中的文件包括:

  • deploy.py 自动部署入口 python deploy.py 启动自动部署
  • expect.sh github自动部署
  • image.db 新浪图床db
  • install.sh hexo自动部署
  • weibo_util.py 微博模拟登陆+图床

Linux + hexo + python + github运行环境可以直接clone工程到本地,将工程中的文件拷贝到hexo博客的根目录,例如/home/hexo/blog下,修改expect.sh中的用户名密码为自己的github的用户名密码,随后运行python deploy.py,输入新浪微博用户名和密码就可以将博客一键部署到github,并将博文中的图片替换为新浪图床的图片,示例网站:http://trytofix.com. 其他环境的用户,可根据下面对每个文件的解释,各取所需.

Linux 需要安装expect, sudo apt-get install expect

weibo_util.py 用来模拟登陆微博,将本地图片上传到新浪图床,并获取图床的链接.

if __name__ == '__main__':
    print get_image('/home/q/hexo/blog/source/img/angular-remove-table-item.jpg')

修改get_image()中的路径为本机电脑上的路径,随后python weibo_util.py就可以查看效果,第一次使用,会提示输入新浪微博的用户名和密码,程序运行成功后返回图床的url地址.

install.sh 一个简单的发布脚本,集成了hexo发布的三个步骤: clean, generate, deploy,注意最后一行的expect.sh,介绍在下面.

#!/bin/bash

hexo clean
hexo g
./expect.sh

expect.sh 部署hexo到github时,需要输入用户名和密码,使用expect可以自动输入用户名和密码,将

set user yourusername
set pass yourpassword

替换为自己的github的用户名和密码.

如果不需要将博客部署到github,请在install.sh中注释./expect.sh或替换为hexo d

deploy.py部署hexo博客

  • 将_posts下的文章备份
  • 遍历所有的文章,找到![image_alt](image_url)标准markdown格式的image_url,其中image_url的格式应为'/img/xxx.jpg',位于source/img下
  • 通过weibo_util获取改图片的图床地址并替换
  • 执行install.sh,生成图片地址为图床地址的博客页面
  • 将文章备份替换回来,_posts下的文章中的图片仍为markdown格式.

为了避免每次部署时,都生成新的图床url(浪费资源可耻,感谢新浪无私的没有做防盗链限制),在部署时,将图片做md5计算,将md5与新浪图床url存入map,最后使用json持久化到文件中(image.db),每次部署先查看md5是否存在map中,如果存在,则直接取md5对应的value值,否则,获取图床地址并存入image.db.

image.db存放图片md5与图床url对应关系的json数据库

感谢新浪提供的图床,避免相同的图片每次都生成新的图床地址,浪费资源.

原文地址

推荐阅读更多精彩内容