upload.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. import json
  5. import requests
  6. import xml.etree.ElementTree as ETree
  7. from qiniu import CdnManager
  8. from qiniu import Auth, put_file
  9. default_encoding = 'utf-8'
  10. if sys.getdefaultencoding() != default_encoding:
  11. reload(sys)
  12. sys.setdefaultencoding(default_encoding)
  13. # 七牛云
  14. remote_url = "http://qndownload.shotshock.shop"
  15. accessKey = "SneSBtnWLdStBhCx0O_QogNkXoRlKNOiv1--XMBB"
  16. secretKey = "GXMg-ENcp2UKYQWdeaf43tk_06NnMoA4OVFxdkYw"
  17. bucket_name = 'twongupdates'
  18. # 安卓包文件地址
  19. apk_path = "./cordova/platforms/android/app/build/outputs/apk/release/app-release.apk"
  20. # cordova 配置文件地址
  21. cordova_xml = "./cordova/config.xml"
  22. # cordova 版本号替换文本
  23. replace = 'widget id="com.shotshock.twong" version="'
  24. # android
  25. manifest = "./cordova/platforms/android/app/src/main/AndroidManifest.xml"
  26. android_repl = ""
  27. # 设置 cordova 配置中的 APP 版本号
  28. def apk_version(version):
  29. conf = ETree.parse(cordova_xml)
  30. root = conf.getroot()
  31. apk_ver = root.get("version")
  32. print("local version: " + apk_ver)
  33. conf = open(cordova_xml, "r")
  34. text = conf.read()
  35. conf.flush()
  36. conf.close()
  37. text = text.replace(replace + apk_ver, replace + version)
  38. new = open(cordova_xml, "w")
  39. new.write(text)
  40. new.flush()
  41. new.close()
  42. # 获取远程的版本号
  43. def get_version():
  44. res = requests.get(remote_url + "/version")
  45. version = json.loads(res.text)
  46. print("remote version: " + version["version"])
  47. return version
  48. # 生成新的版本号
  49. def new_version(version):
  50. olds = version.split('.')
  51. new_2 = int(olds[2])
  52. new_1 = int(olds[1])
  53. new_0 = int(olds[0])
  54. if new_2 + 1 > 9:
  55. if new_1 + 1 > 9:
  56. new_0 = new_0 + 1
  57. new_1 = 0
  58. new_2 = 0
  59. else:
  60. new_1 = new_1 + 1
  61. new_2 = 0
  62. else:
  63. new_2 = new_2 + 1
  64. new = str(new_0) + "." + str(new_1) + "." + str(new_2)
  65. print("new version: " + new)
  66. return new
  67. # 上传七牛云
  68. def upload(local_file, remote_file):
  69. auth = Auth(accessKey, secretKey)
  70. token = auth.upload_token(bucket_name, remote_file, 3600)
  71. ret, info = put_file(token, remote_file, local_file)
  72. if ret['key'] != remote_file:
  73. print(remote_file + " upload failed !")
  74. print(info)
  75. return False
  76. else:
  77. print(remote_file + " upload ok !")
  78. cdn_manager = CdnManager(auth)
  79. urls = [remote_url + "/" + remote_file]
  80. ret = cdn_manager.refresh_urls(urls)[0]
  81. if ret["code"] == 200:
  82. print("refresh success !")
  83. else:
  84. print("refresh failed !\n", ret)
  85. return True
  86. if __name__ == "__main__":
  87. ver = get_version()
  88. ver_new = ver["version"]
  89. ver_new = new_version(ver_new)
  90. apk_version(ver_new)
  91. os.system("sh ./build.sh app")
  92. if not upload(apk_path, "twong-" + ver_new + ".apk"):
  93. exit(-1)
  94. ver["version"] = ver_new
  95. ver["download"] = remote_url + "/twong-" + ver_new + ".apk"
  96. verFile = open("version.json", "w")
  97. json.dump(ver, verFile)
  98. verFile.close()
  99. if not upload("version.json", "version"):
  100. exit(-1)