利用Python实现自动将APK文件上传至蒲公英

访客 196 0

新建文件upload_pgyer.py,代码如下:

import osimport requestsimport argparseimport jsonfrom requests_toolbelt import MultipartEncoder, MultipartEncoderMonitorupload_url = 'https://upload.pgyer.com/apiv1/app/upload'class UploadOptions:    def __init__(self):        self.parser = argparse.ArgumentParser(description="自动上传文件")        self.parser.add_argument("--path", type=str, required=True, help="apk的绝对路径,或者apk的根目录")        self.parser.add_argument("--uKey", type=str, required=True, help="uKey")        self.parser.add_argument("--api_key", type=str, required=True, help="_api_key")    def parse(self):        return self.parser.parse_args()# 使用的是python3,需要pip3 install requests requests_toolbeltif __name__ == '__main__':    parser = UploadOptions()    args = parser.parse()    print(args)    paths = []    # 支持只上传一个apk文件    # 或者传入多个apk的文件的根目录,会自动解析    if os.path.isfile(args.path):        paths.append(args.path)    else:        for root, ds, fs in os.walk(args.path):            print(root, ds, fs)            if len(fs) > 0:                for f in fs:                    file = os.path.join(root, f)                    if os.path.isfile(file) and str(file).endswith('.apk'):                        paths.append(file)    for path in paths:        print("开始上传", path)        # uKey和_api_key去下面这个网站去获取        # https://www.pgyer.com/doc/api#uploadApp        e = MultipartEncoder(            fields={'uKey': args.uKey,                    '_api_key': args.api_key,                    'file': (os.path.basename(path), open(path, 'rb'), 'application/octet-stream')}        )        def my_callback(monitor):            print('\r', '上传进度:', monitor.bytes_read / monitor.len, end='', flush=True)        print(e)        m = MultipartEncoderMonitor(e, my_callback)        response = requests.post(upload_url, data=m, headers={'Content-Type': m.content_type})        # 如果不用带进度,可以用下面的这个方法        # response = requests.post(upload_url, data={        #     'uKey': args.uKey,        #     '_api_key': args.api_key,        # }, files={'file': open(path, 'rb')})        response.encoding = "utf-8"        print('\n', response.request.url, response.request.method)        print(response.request.headers)        print("返回的内容为-->", response.status_code, json.loads(response.text))        print('===================>')

在Android项目中的build.gradle,新建一个task,可以替换成自己需要的文件目录

任务 uploadpython 的类型是 Exec,命令行为 'python3', '../upload_pgyer.py', '--path', '$buildDir/intermediates/apk', '--uKey', '你自己的key', '--api_key', '你自己的key'。请注意,新版本的 apk 不再位于 outputs 目录下,而是位于 '$buildDir/intermediates/apk' 目录下。使用以下命令即可上传: 
请执行以下命令上传Python项目:./gradlew uploadpython。你可以在以下项目地址找到更多信息:https://github.com/SerBad/publish_pgyer

标签: 文件 根目录 进度 项目

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~