# -*- coding: utf-8 -*- # Auther Wang Qi # !usrbinenv python # encoding utf-8 import os import sys import base64 import hashlib import requests import subprocess import urllib3 import logging import time import random import argparse import json from threading import Thread, current_thread from concurrent.futures import ProcessPoolExecutor from qcloud_cos import CosConfig from qcloud_cos import CosS3Client # url = "http://jl.tyu89.wang/" + cos_object_key # print(url) #self.flushurl(url) # 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, path, file): file = file.replace("\\", "/") path = path.replace("\\", "/") local_file_path = path + file print(local_file_path) cos_object_key = self.cdn_sub_dir + "/" + self.platform +"/" + file print(cos_object_key) response = self.client.upload_file( Bucket=self.bucket, LocalFilePath=local_file_path, Key=cos_object_key, PartSize=1, MAXThread=10, EnableMD5=False ) print(response['ETag']) class Cos_Upload(): logging.basicConfig(level=logging.INFO, stream=sys.stdout) def __init__(self, *args): abDir = args[0] settingDir = args[1] changeVersion = args[2] isThread = "1" if args.__len__() > 3: isThread = args[3] self.init(abDir, settingDir, changeVersion, isThread) def init(self, abDir, settingDir, changeVersion, isThread): self.settingFile = "Setting.txt" self.configFile = "config.txt" self.versionFile = "version.txt" self.fileList = [] self.setting_dir = abDir + "/" + settingDir self.ab_dir = self.setting_dir self.change_version = changeVersion self.change_file = self.setting_dir + "/__HotFixLog/" + changeVersion + ".log" self.loadSetting() if self.EncryptKey: self.configFile = self.EncryptKey + self.configFile self.versionFile = self.EncryptKey + self.versionFile self.IsThread = isThread # cdn config self.bucket = '648sy-tcx-1251752472' self.secret_id = "AKIDwhBYeT2LN8cqoa6ML2SbT5RVJq76pHSN" self.secret_key = "f4C5h38vRhgPr2wZw2rPfeNpzsTord8M" self.region = "ap-beijing" self.config = CosConfig(Region=self.region, SecretId=self.secret_id, SecretKey=self.secret_key, Token=None, Scheme='https') self.client = CosS3Client(self.config) def loadSetting(self): settingContent = open(self.setting_dir +"/"+ self.settingFile, "rb") settingJson = json.load(settingContent) self.cdn_sub_dir = settingJson["dir"] self.platform = settingJson["platform"] if ("EncryptKey" in settingJson) : self.EncryptKey = settingJson["EncryptKey"] else: self.EncryptKey = "" def get_all_file(self): fo = open(self.change_file, "r") files = fo.readlines() #print(files) for f in files: file = f.strip() self.fileList.append(file) return self.fileList def up(self): filelist = self.get_all_file() if self.IsThread == "1": pool = ProcessPoolExecutor(4) for file in filelist: pool.submit(upload_file_to_txy_cos, self, self.ab_dir + "/" + self.platform + "/", file) pool.submit(upload_file_to_txy_cos, self, self.setting_dir +"/", self.configFile) pool.submit(upload_file_to_txy_cos, self, self.setting_dir +"/", self.versionFile) else: for file in filelist: upload_file_to_txy_cos(self, self.ab_dir + "/" + self.platform + "/", file) upload_file_to_txy_cos(self, self.setting_dir +"/", self.configFile) upload_file_to_txy_cos(self, self.setting_dir +"/", self.versionFile) if __name__ == '__main__': if sys.argv.__len__() == 4: t = Cos_Upload(sys.argv[1], sys.argv[2], sys.argv[3]) t.up() elif sys.argv.__len__() == 5: t = Cos_Upload(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]) t.up() else: print("params error!") # if __name__ == '__main__': # z = Cos_Upload("D:/HotFix/Root/mht_china/local", "cdn_v3", 'version_1') # z.up()