0%

Hexo访问坚果云自动更新博客

使用Webdav4访问坚果云,下载文件,更新Hexo。

需求

我用坚果云管理工作、生活、学习等一切的文档,使用Hexo作为博客生成工具,Hexo在一台VPS上运行。我希望在写完一篇博客后,存储到坚果云指定目录中。一个脚本能够定时访问这个目录,若目录非空,则将目录中的markdown格式的文件复制到Hexo source/_posts目录,复制图片文件至source/images/。文件复制后,Hexo自动更新博客内容。

代码

python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from webdav4.client import Client 

# username 为坚果云账号, passwd 为密码
client = Client("https://dav.jianguoyun.com/dav/",auth=(username,passwd))

# 列出目录
dir = client.ls(path="/我的坚果云/存放欲发布博客的目录/",detail=True)

# 下载
for d in dir:
# markdown文件目录与图片不同
if d['display_name'][-2:] == 'md':
DIR = '/Hexo目录/source/_posts/'
else:
# 其他为图片文件
DIR = '/Hexo目录/source/images/'
# 下载
client.download_file(from_path=d['name'],to_path=DIR+d['display_name'])
print(d['display_name'] + ' downloaded.')
# 删除坚果云上的文件
client.remove(d['name'])

自动任务

建立shell脚本文件,内容如下,不要忘记Chmod +x添加执行权限:

1
2
3
4
5
6
echo "will get posts."
python3 /脚本所在目录/get_posts_to_publish.py

echo "will generate hexo content."
cd /博客所在目录/
hexo g

建立定时任务:

1
crontab -e

crontab设定每4小时执行一次脚本:

1
* */4 * * * /脚本路径/脚本名称

完毕。