1 #!/usr/bin/env python
2 from aliyunsdkcore import client
3 import json
4 from aliyunsdkcdn.request.v20141111 import DescribeUserDomainsRequest # 获取CDN域名列表类
5 from aliyunsdkcdn.request.v20141111 import RefreshObjectCachesRequest # 刷新CDN的类
6 from aliyunsdkcdn.request.v20141111 import DescribeRefreshTasksRequest # CDN刷新操作日志类
7 from aliyunsdkcdn.request.v20141111 import DescribeRefreshQuotaRequest # CDN剩余刷新次数的类
8
9
10 class Aliyun:
11 """
12 阿里云CDN刷新操作相关,3.5版本暂时不支持,官网声明支持2.7版本,2.6亲测可用,写成类没什么意义啊,wtf,算了,就酱吧
13 官网资料https://helpcdn.aliyun.com/document_detail/27200.html?spm=5176.doc27148.6.625.VnHkL4
14 但是这资料真特么没有什么卵用,艹
15 pip install aliyun-python-sdk-cdn 安装
16 pip install aliyun-python-sdk-cdn --upgrade 升级
17 pip uninstall aliyun-python-sdk-cdn 卸载
18 """
19 __instance = None
20
21 def __init__(self, AccessKey='xxxxxxxxxxxxxxxxxxxx', AccessSecret='xxxxxxxxxxxxxxxxxxx'):
22 """
23 https://helpcdn.aliyun.com/document_detail/27248.html?spm=5176.doc27247.6.727.6F2Khg
24 :param AccessKey: 阿里云服务器内部可生成,上面的网页有跳转链接
25 :param AccessSecret: 阿里云服务器内部可生成
26 """
27 self.AccessKey = AccessKey
28 self.AccessSecret = AccessSecret
29 self.Client = client.AcsClient(self.AccessKey, self.AccessSecret, 'cn-hangzhou')
30
31 @staticmethod
32 def singleton():
33 if Aliyun.__instance:
34 return Aliyun.__instance
35 else:
36 Aliyun.__instance = Aliyun()
37 return Aliyun.__instance
38
39 def refresh_cdn_url(self, url, Type):
40 """
41 刷新指定路径缓存,cdn是什么就不解释了....
42 :param url: 需要刷新的目标url,需要注意的是如果是域名则必须以‘/’结尾
43 :param Type: 域名为Directory,例如http://www.bfmq.com/
44 单独文件为File,例如http://www.bfmq.com/a.txt
45 :return: 返回的信息真神奇,一点卵用都没用,说好的error code呢,亲?so,不返回了
46 """
47 self.request = RefreshObjectCachesRequest.RefreshObjectCachesRequest()
48 self.request.set_ObjectPath(url)
49 self.request.set_ObjectType(Type)
50 self.request.set_accept_format('json')
51 self.result = json.loads(self.Client.do_action(self.request))
52 print(self.result)
53
54 def get_cdn_data(self):
55 """
56 获取本日可刷新剩余次数,默认每日文件2000次,目录100次,应该跟会员等级有关系....
57 :return: UrlRemain 今日url刷新数剩余
58 DirRemain 今日dir刷新数剩余
59 UrlQuota 今日url刷新数总量
60 DirQuota 今日dir刷新数总量
61 """
62 self.request = DescribeRefreshQuotaRequest.DescribeRefreshQuotaRequest()
63 self.request.set_accept_format('json')
64 self.result = json.loads(self.Client.do_action(self.request))
65 print(self.result)
66
67 def get_cdn_log(self, page=1, page_size=20):
68 """
69 获取七天内CDN刷新操作日志
70 :param page: 取得第几页 取值范围为:1-100000
71 :param page_size: 分页大小,默认20,最大50
72 :return: 返回的是UTC时间哦
73 """
74 self.request = DescribeRefreshTasksRequest.DescribeRefreshTasksRequest()
75 self.request.set_accept_format('json')
76 self.request.set_PageNumber(page)
77 self.request.set_PageSize(page_size)
78 self.result = json.loads(self.Client.do_action(self.request)).get("Tasks").get("CDNTask")
79 print(self.result)
80
81 def get_cdn_url(self, page=1, page_size=20):
82 """
83 获取本云用户下域名列表
84 :param page: 取得第几页 取值范围为:1-100000
85 :param page_size: 分页大小,默认20,最大50
86 :return:
87 """
88 self.request = DescribeUserDomainsRequest.DescribeUserDomainsRequest()
89 self.request.set_PageNumber(page)
90 self.request.set_PageSize(page_size)
91 self.request.set_accept_format('json')
92 self.result = json.loads(self.Client.do_action(self.request)).get("Domains").get("PageData")
93 print(self.result)