多吉云CDN自动刷新方案
AI-摘要
切换
YA GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
多吉云CDN自动刷新方案
檐牙点击查看更新记录
更新记录
2024-6-7: 测试版CDN刷新方案1.0
依样画葫芦模仿空梦大佬书写更新脚本
- 目前本方案方法比较折中,且有点笨,还请各位大佬指点
- 由于目前不知道为什么,public无法输出.github文件夹,所以只能放在根目录
- 参考了空梦大佬的教程,https://kmar.top/posts/a427ed12/
- 感谢Dorrhound的帮助
前言
- 思路是在博客根目录创建一个RefreshCDN.py为刷新脚本
- 使用github的action去运行这个刷新脚本
- 教程目前仅适用于多吉云,不过方法应该都适用
- 如果你使用的是别的 CDN,则需要自行查阅 API 文档,然后编写相应的代码
教程正文
- 在开始前,需要客官您已完成HEXO自动部署,如果未完成,参考点我前往教程
- 部署的仓库为源码仓库,并为私人仓库,请勿设为公开!!!以免暴露key
在
[根目录]
创建一个文件名为RefreshCDN.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61from hashlib import sha1
import hmac
import requests
import json
import urllib
import os
def dogecloud_api(api_path, data={}, json_mode=False):
"""
调用多吉云API
:param api_path: 调用的 API 接口地址,包含 URL 请求参数 QueryString,例如:/console/vfetch/add.json?url=xxx&a=1&b=2
:param data: POST 的数据,字典,例如 {'a': 1, 'b': 2},传递此参数表示不是 GET 请求而是 POST 请求
:param json_mode: 数据 data 是否以 JSON 格式请求,默认为 false 则使用表单形式(a=1&b=2)
:type api_path: string
:type data: dict
:type json_mode bool
:return dict: 返回的数据
"""
# 这里替换为你的多吉云永久 AccessKey 和 SecretKey,可在用户中心 - 密钥管理中查看
# 请勿在客户端暴露 AccessKey 和 SecretKey,否则恶意用户将获得账号完全控制权
access_key = '你的AccessKey'
secret_key = '你的SecretKey'
body = ''
mime = ''
if json_mode:
body = json.dumps(data)
mime = 'application/json'
else:
body = urllib.parse.urlencode(data) # Python 2 可以直接用 urllib.urlencode
mime = 'application/x-www-form-urlencoded'
sign_str = api_path + "\n" + body
signed_data = hmac.new(secret_key.encode('utf-8'), sign_str.encode('utf-8'), sha1)
sign = signed_data.digest().hex()
authorization = 'TOKEN ' + access_key + ':' + sign
response = requests.post('https://api.dogecloud.com' + api_path, data=body, headers = {
'Authorization': authorization,
'Content-Type': mime
})
return response.json()
url_list = [
'https://xxxxx/'# xxx替换为你的博客域名
]
api = dogecloud_api('/cdn/refresh/add.json', {
'rtype': 'path',
'urls': json.dumps(url_list)
})
if api['code'] == 200:
print(api['data']['task_id'])
else:
print("api failed: " + api['msg']) # 失败将其中的
access_key = '你的AccessKey'
,secret_key = '你的SecretKey'
,替换为自己的key'https://xxxxx/'
xxxxx替换为你的博客域名创建目录
[根目录]\.github\workflows
已经有的可以略过
在workflows
下新建RefreshCDN.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23name: Refresh CDN
on:
push:
branches:
- master
jobs:
refresh-cdn:
runs-on: ubuntu-latest
steps:
- name: 安装 Node
uses: actions/checkout@v2
- name: 安装 python
uses: actions/setup-python@v2
with:
python-version: '3.x'
- name: 安装依赖
run: pip install requests
- name: 等待源站部署
run: sleep 4m
- name: 刷新CDN
run: python RefreshCDN.py这里用了个笨办法,等待4分钟后进行刷新
创建完后直接提交上去应该就行了
评论
隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果