【test】上传测试

master
gaoxin 2021-05-28 16:34:41 +08:00
commit 3a753a4779
5 changed files with 335 additions and 0 deletions

View File

@ -0,0 +1,105 @@
# Auther: Wang Qi
# !/usr/bin/env python
# encoding: utf-8
import os
import oss2
import sys
import base64
import hashlib
import requests
import subprocess
import urllib3
import logging
import time
import random
import argparse
from threading import Thread, current_thread
from concurrent.futures import ProcessPoolExecutor
from qcloud_cos import CosConfig
from qcloud_cos import CosS3Client
class jlrg():
basedir = "/data/public/samba/public/jieling_dl/dev/assetBundles/"
dir_name = "mht_china"
fail_list = []
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
secret_id = 'AKIDRJxLRFFzwcmiNlLzqPggdplPlrpVec2A' # 替换为用户的 secretId
secret_key = 'zh8JDqJZYLq42j9NL2RYOyGI9kDOIGxN' # 替换为用户的 secretKey
region = 'ap-guangzhou' # 替换为用户的 Region
token = None # 使用临时密钥需要传入 Token默认为空可不填
scheme = 'https' # 指定使用 http/https 协议来访问 COS默认为 https可不填
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Scheme=scheme)
# 2. 获取客户端对象
client = CosS3Client(config)
def __init__(self):
self.fileList = []
def get_all_file(self):
fo = open("/data/scripts/mht_china_test.txt", "r")
files = fo.readlines()
filelist = []
for f in files:
file = f.strip()
if not file.startswith("http") and not file.endswith("/") and not file.endswith("version.txt") and not file.endswith("files.unity3d"):
filelist.append(file)
return filelist
def flushurl(self,url):
keydict = {
'Action': 'RefreshCdnUrl',
'Timestamp': str(int(time.time())),
'Nonce': str(int(random.random() * 1000)),
'SecretId': jlrg.secret_id,
'urls.0': url
}
return keydict
def upload_file_to_txy_cos(self, local_file_path):
if local_file_path.endswith('.DS_Store') or not os.path.isfile(local_file_path):
return
if ".svn" in local_file_path:
return
print(local_file_path)
# print(11111)
cos_object_key = local_file_path[len(jlrg.basedir):].replace("\\", "/").lstrip("/")
print(cos_object_key)
url = 'http://' + "jl.tyu89.wang" + "/" + cos_object_key
print(url)
response = jlrg.client.upload_file(
Bucket='internal-jieling-1302131159',
LocalFilePath=local_file_path,
Key=cos_object_key,
PartSize=1,
MAXThread=10,
EnableMD5=False
)
self.flushurl(url)
return (response['ETag'])
def up(self):
os.system("sh /data/scripts/url_mht_china_test.sh")
filelist = self.get_all_file()
print(filelist)
pool = ProcessPoolExecutor(4)
for file in filelist:
# print(file)
pool.submit(self.upload_file_to_txy_cos, file)
self.upload_file_to_txy_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/config.txt")
self.upload_file_to_txy_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/config.txt")
self.upload_file_to_txy_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/files.unity3d")
self.upload_file_to_txy_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/version.txt")
https://dcdn.aliyuncs.com/?Action=RefreshDcdnObjectCaches&ObjectPath=download.gamenew-h5.com/Japan/SW/&ObjectType=Directory&Version=2018-01-15&Timestamp=2021-05-08T03:32:45Z&SignatureNonce=15215528852396&AccessKeyId=LTAIE4jRXhLBvVLL&SignatureMethod=HMAC-SHA1
if __name__ == '__main__':
z = jlrg()
z.up()

65
Tools/oss/test.py 100644
View File

@ -0,0 +1,65 @@
# -*- coding: utf-8 -*-
import oss2
import os
class jlrg():
# 阿里云账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维请登录RAM控制台创建RAM用户。
auth = oss2.Auth('LTAIE4jRXhLBvVLL', '74hEmfGzNEYLSFP26fO6CUZ319AY61')
# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1杭州为例Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称。
bucket = oss2.Bucket(auth, 'https://oss-ap-northeast-1.aliyuncs.com', 'taichuxing')
basedir = "/data/public/samba/public/jieling_dl/dev/assetBundles/"
fail_list = []
def __init__(self):
self.fileList = []
def get_all_file(self):
fo = open("/data/scripts/mht_test.txt", "r")
files = fo.readlines()
filelist = []
print(filelist)
for f in files:
file = f.strip()
if file.startswith("http") and not file.endswith("/") and not file.endswith("version.txt") and not file.endswith("files.unity3d"):
filelist.append(file)
return self.fileList
def upload_file_to_aly_cos(self, local_file_path):
if local_file_path.endswith('.DS_Store') or not os.path.isfile(local_file_path):
return
if ".svn" in local_file_path:
return
print(local_file_path)
cos_object_key = local_file_path[len(jlrg.basedir):].replace("\\", "/").lstrip("/")
print(cos_object_key)
url = 'http://download.gamenew-h5.com/' + cos_object_key
print(url)
jlrg.bucket.put_object_from_file(cos_object_key, local_file_path)
def up(self):
os.system("sh /data/scripts/url_mht_china_test.sh")
filelist = self.get_all_file()
print(filelist)
pool = ProcessPoolExecutor(4)
for file in filelist:
pool.submit(self.upload_file_to_aly_cos, file)
self.upload_file_to_aly_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/config.txt")
self.upload_file_to_aly_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/files.unity3d")
self.upload_file_to_aly_cos("/data/public/samba/public/jieling_dl/dev/assetBundles/mht_china/test/Android/version.txt")
if __name__ == '__main__':
z = jlrg()
z.up()

View File

@ -0,0 +1,82 @@
# encoding: utf-8
import os
import time
import base64
import random
import urllib, urllib2
import hmac, hashlib
class AL_Flush():
alurl = "https://dcdn.aliyuncs.com/?"
url = "download.gamenew-h5.com"
AccessKeyId = "LTAIE4jRXhLBvVLL"
AccessKeySecret = "74hEmfGzNEYLSFP26fO6CUZ319AY61"
def percentEncode(self, value):
#value = urllib.quote(value)
#value = value.replace("%26", "&")
value = value.replace("/", "%252F")
value = value.replace("&", "%26")
value = value.replace("=", "%3D")
value = value.replace(":", "%253A")
return value
def flush(self, dic):
t = time.time()-8*60*60
localtime = time.localtime(t)
date = time.strftime("%Y-%m-%dT%H:%M:%SZ", localtime)
keydict = {
'Action': 'RefreshDcdnObjectCaches',
'ObjectPath': self.url + '/' + dic,
'ObjectType': "Directory",
'Version': '2018-01-15',
'Timestamp': date,
'SignatureNonce': str(int(random.random() * 100000000)),
'AccessKeyId': self.AccessKeyId,
'SignatureMethod': 'HMAC-SHA1',
'SignatureVersion': '1.0'
}
keydict = sorted(keydict.iteritems(), key = lambda asd:asd[0] ,reverse = False)
print keydict
params = ""
for k in keydict:
if params != "":
params += "&"
params += k[0]+"="+k[1]
print params
StringToSign = "GET&%2F&" + self.percentEncode(params)
#StringToSign = self.percentEncode(StringToSign)
print StringToSign
h = hmac.new(bytes(self.AccessKeySecret+"&"), bytes(StringToSign), hashlib.sha1).hexdigest()
#h = hmac.new(b'hash',b'helloworld',digestmod='sha1')
print(h)
sign = base64.b64encode(h)
print sign
sign = self.percentEncode(sign)
print sign
u = self.alurl + params + "&Signature="+sign
print u
#response = urllib2.urlopen(u)
#print response.read()
a = b"testsecret&"
b = b"GET&%2F&AccessKeyId%3Dtestid&Action%3DDescribeLiveSnapshotConfig&AppName%3Dtest&DomainName%3Dtest.com&Format%3DXML&RegionId%3Dcn-shanghai&ServiceCode%3Dlive&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3Dc2fe8fbb-2977-4414-8d39-348d02419c1c&SignatureVersion%3D1.0&Timestamp%3D2017-06-14T09%253A51%253A14Z&Version%3D2016-11-01"
h = hmac.new(a, b, hashlib.sha1).hexdigest()
#h = hmac.new(b'hash',b'helloworld',digestmod='sha1')
print(h)
sign = base64.b64encode(h)
print sign
if __name__ == '__main__':
alf = AL_Flush()
alf.flush("Japan/SW/")

View File

@ -0,0 +1,19 @@
#!/usr/bin/env python
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkdcdn.request.v20180115.PreloadDcdnObjectCachesRequest import PreloadDcdnObjectCachesRequest
client = AcsClient('LTAIE4jRXhLBvVLL', '74hEmfGzNEYLSFP26fO6CUZ319AY61', 'ap-northeast-1')
request = PreloadDcdnObjectCachesRequest()
request.set_accept_format('json')
request.set_Area("overseas")
request.set_ObjectPath("download.gamenew-h5.com/Japan/SW/")
response = client.do_action_with_exception(request)
# python2: print(response)
print(str(response, encoding='utf-8'))

View File

@ -0,0 +1,64 @@
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import sys
from typing import List
from alibabacloud_dcdn20180115.client import Client as dcdn20180115Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_dcdn20180115 import models as dcdn_20180115_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client(
access_key_id: str,
access_key_secret: str,
) -> dcdn20180115Client:
"""
使用AK&SK初始化账号Client
@param access_key_id:
@param access_key_secret:
@return: Client
@throws Exception
"""
config = open_api_models.Config(
# 您的AccessKey ID,
access_key_id=access_key_id,
# 您的AccessKey Secret,
access_key_secret=access_key_secret
)
# 访问的域名
config.endpoint = 'dcdn.aliyuncs.com'
return dcdn20180115Client(config)
@staticmethod
def main(
args: List[str],
) -> None:
client = Sample.create_client('LTAIE4jRXhLBvVLL', '74hEmfGzNEYLSFP26fO6CUZ319AY61')
preload_dcdn_object_caches_request = dcdn_20180115_models.PreloadDcdnObjectCachesRequest(
area='overseas',
object_path='download.gamenew-h5.com/Japan/SW/'
)
# 复制代码运行请自行打印 API 的返回值
client.preload_dcdn_object_caches(preload_dcdn_object_caches_request)
@staticmethod
async def main_async(
args: List[str],
) -> None:
client = Sample.create_client('LTAIE4jRXhLBvVLL', '74hEmfGzNEYLSFP26fO6CUZ319AY61')
preload_dcdn_object_caches_request = dcdn_20180115_models.PreloadDcdnObjectCachesRequest(
area='overseas',
object_path='download.gamenew-h5.com/Japan/SW/'
)
# 复制代码运行请自行打印 API 的返回值
await client.preload_dcdn_object_caches_async(preload_dcdn_object_caches_request)
if __name__ == '__main__':
Sample.main(sys.argv[1:])