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)