利用python將iOS安裝包上傳到蒲公英的腳本

作者: shaneZhang 分類: ios技術 發布時間: 2019-01-05 19:43

本腳本有兩個參數,一個是ipa的路徑,一個是ipa的名字,需要以xxx.ipa結尾。另外本腳本中還需要自行修改蒲公英上傳的appkey和userkey和發送郵件函數中的郵件smtp相關的信息。

# coding=utf-8
import urllib2
import time
import os
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
import json
import sys

# 蒲公英應用上傳地址
url = 'https://www.pgyer.com/apiv2/app/upload'
# 蒲公英提供的 用戶Key
uKey = ''
# 蒲公英提供的 API Key
_api_key = ''
# 安裝應用時需要輸入的密碼,這個可不填
installPassword = ''

paramsCount = len(sys.argv)
if (paramsCount != 3):
    print "本文件只支持以下的二個參數同時配置,缺一不可"
    print "第一個參數:ipa的路徑"
    print "第二個參數:ipa的名字,如xx.ipa"
    exit()

ipa_path = sys.argv[1]
ipa_name = sys.argv[2]

if os.path.isfile(ipa_path):
    print "file is founded"
else:
    print "file not found"
    exit()
# 上傳文件的文件名(這個可隨便取,但一定要以 ipa 結尾)
file_name = ipa_name
# ipa 文件路徑
ipa_file_path = ipa_path
print ipa_file_path


# 請求字典編碼
def _encode_multipart(params_dict):
    boundary = '----------%s' % hex(int(time.time() * 1000))
    data = []
    for k, v in params_dict.items():
        data.append('--%s' % boundary)
        if hasattr(v, 'read'):
            filename = getattr(v, 'name', '')
            content = v.read()
            decoded_content = content.decode('ISO-8859-1')
            data.append('Content-Disposition: form-data; name="%s"; filename="aa.ipa"' % k)
            data.append('Content-Type: application/octet-stream\r\n')
            data.append(decoded_content)
        else:
            data.append('Content-Disposition: form-data; name="%s"\r\n' % k)
            data.append(v if isinstance(v, str) else v.decode('utf-8'))
    data.append('--%s--\r\n' % boundary)
    return '\r\n'.join(data), boundary


# 處理 蒲公英 上傳結果
def handle_resule(result):
    print 'upload success'
    print result
    json_result = json.loads(result)
    if json_result['code'] is 0:
        send_Email(json_result)


# 發送郵件
def send_Email(json_result):
    appName = json_result['data']['buildName']
    appKey = json_result['data']['buildKey']
    appVersion = json_result['data']['buildVersion']
    appBuildVersion = json_result['data']['buildVersionNo']
    appShortcutUrl = json_result['data']['buildShortcutUrl']
    # 郵件接受者
    mail_receiver = ['']
    # 根據不同郵箱配置 host,user,和pwd
    mail_host = ''
    mail_user = ''
    mail_pwd = ''
    mail_to = ','.join(mail_receiver)
    msg = MIMEMultipart()
    environsString = '<h3>本次打包相關信息</h3><p>'
    environsString += '<p>公司內網下載地址: http://10.100.16.252:8008/examples/' + file_name + '</p>'
    environsString += '<p>你也可從蒲公英網站在線安裝 : ' + 'http://www.pgyer.com/' + str(
        appShortcutUrl) + '   密碼 : ' + installPassword + '</p>'
    environsString += '<li><a href="itms-services://?action=download-manifest&url=https://ssl.pgyer.com/app/plist/' + str(
        appKey) + '">點我直接安裝</a></li>'
    message = environsString
    body = MIMEText(message, _subtype='html', _charset='utf-8')
    msg.attach(body)
    msg['To'] = mail_to
    msg['from'] = mail_user
    msg['subject'] = '最新打包文件'

    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user, mail_pwd)
        s.sendmail(mail_user, mail_receiver, msg.as_string())
        s.close()
        print 'send email success'
    except Exception, e:
        print e

#############################################################
def upload_to_pgy():
    # 請求參數字典
    params = {
        'uKey': uKey,
        '_api_key': _api_key,
        'file': open(ipa_file_path, 'rb'),
        'buildInstallType': '2'
    }
    print params
    coded_params, boundary = _encode_multipart(params)
    req = urllib2.Request(url, coded_params.encode('ISO-8859-1'))
    req.add_header('Content-Type', 'multipart/form-data; boundary=%s' % boundary)
    try:
        resp = urllib2.urlopen(req)
        body = resp.read().decode('utf-8')
        handle_resule(body)
    except urllib2.HTTPError as e:
        print(e.fp.read())
        #如果上傳失敗就重新上傳
        upload_to_pgy()


if __name__ == "__main__":
    upload_to_pgy()

本頁面支持繁體中文友好顯示:利用python將iOS安裝包上傳到蒲公英的腳本

如果覺得我的文章對您有用,請隨意打賞。如果有其他問題請聯繫博主QQ(909491009)或者下方留言!

發表評論

電子郵件地址不會被公開。 必填項已用*標註