You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
import base64
|
|
import calendar
|
|
import datetime
|
|
import hashlib
|
|
import hmac
|
|
import os
|
|
import random
|
|
import time
|
|
from urllib import parse
|
|
|
|
import requests
|
|
|
|
|
|
def get_md5_01(file_path):
|
|
md5 = None
|
|
if os.path.isfile(file_path):
|
|
f = open(file_path, 'rb')
|
|
md5_obj = hashlib.md5()
|
|
md5_obj.update(f.read())
|
|
hash_code = md5_obj.hexdigest()
|
|
f.close()
|
|
md5 = str(hash_code).lower()
|
|
return md5
|
|
|
|
|
|
def createTransaction(HTTPMethod, filePath):
|
|
fileName = filePath.split('/')[-1]
|
|
|
|
for Version in getBetweenDay('2017-01-01'):
|
|
print("Version={Version}".format(Version=Version))
|
|
param = {
|
|
"Format": "JSON",
|
|
"Version": Version,
|
|
"AccessKeyId": "LTAIeS8aBuPBZxV2",
|
|
"SignatureMethod": "HMAC-SHA1",
|
|
"Timestamp": int(time.time()),
|
|
"SignatureVersion": "1.0",
|
|
"SignatureNonce": random.randint(0, 9),
|
|
"Action": "CreateTransaction",
|
|
"Ext": fileName[-fileName[::-1].index('.'):],
|
|
"Md5": get_md5_01(filePath),
|
|
"Size": os.path.getsize(filePath)
|
|
}
|
|
AccessKeySecret = b'hyPeTaDQBQs6jetYcqY0BUdpacXTH3'
|
|
canonicalQueryString = ''
|
|
for i in sorted(param.items(), key=lambda d: d[0]):
|
|
canonicalQueryString += '&' + i[0] + parse.quote('=' + str(i[1]))
|
|
# print(canonicalQueryString[1:])
|
|
|
|
strUrlEncoding = HTTPMethod + '&%2F&' + canonicalQueryString[1:]
|
|
print(strUrlEncoding)
|
|
stringToSign = base64.b64encode(hmac.new(AccessKeySecret, strUrlEncoding.encode('UTF-8'), 'sha1').digest())
|
|
|
|
server = 'https://cloudphoto.cn-shanghai.aliyuncs.com'
|
|
url = server + "?" + canonicalQueryString[1:] + '&Signature=' + stringToSign.decode('utf-8').replace('+','%20').replace('/','%2F').replace('=','%3D')
|
|
print(url)
|
|
result = requests.get(url)
|
|
|
|
if result.status_code == 200:
|
|
break
|
|
else:
|
|
print(result.content)
|
|
time.sleep(1)
|
|
|
|
|
|
def getBetweenDay(begin_date):
|
|
date_list = []
|
|
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d")
|
|
end_date = datetime.datetime.strptime(time.strftime('%Y-%m-%d', time.localtime(time.time())), "%Y-%m-%d")
|
|
while begin_date <= end_date:
|
|
date_str = begin_date.strftime("%Y-%m-%d")
|
|
date_list.append(date_str)
|
|
begin_date += datetime.timedelta(days=1)
|
|
return date_list
|
|
|
|
|
|
if __name__ == '__main__':
|
|
createTransaction("GET", "C:/Users/10295/Desktop/灵梦.png")
|
|
# print(getBetweenDay('2017-01-01'))
|
|
|