upload.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. # _*_ coding: utf-8 _*_
  2. # @Time : 2025/7/24 17:15
  3. # @Author : Hank
  4. # @Version:V 0.1
  5. # @File : mini_interface.py
  6. # @desc :
  7. import os
  8. import re
  9. import time
  10. import subprocess
  11. import sys
  12. import platform
  13. # ----------------------- 执行说明 -------------------------
  14. # 单个更新
  15. # python update.py 1 wx1234567890abcdef
  16. # 批量更新,修改update_list
  17. # python update.py 2
  18. # ----------------------- 执行说明 -------------------------
  19. update_list = []
  20. # 更新列表
  21. update_list_hank = [
  22. "wxa7a33088566e1292","wxdabfa5e02785fe9b","wxa13166979d7011c4","wx8a8aae7f462df482","wx1344c35820ac688e","wx8bd40e8ce9deb2b6",
  23. "wx9e90adce31181f7f","wx37dab28af5492d98","wx04b705205757217b","wxc4e78d0425e83571","wx9d93825db1c7dcbe","wx3fe2e6c200ec7133",
  24. "wx3800bb2ed4a326c5","wx60db1bff60cd771c","wxd40b677f35319eea","wx5a9dda0604c2ea67","wxdecb83db79aa5bc0","wx616a7e327bd9574a",
  25. "wxdcf60b8e89ff6fa0","wx54c216ec4ad011fd"
  26. ]
  27. # update_list.extend(update_list_hank)
  28. update_list_alex = [
  29. "wxa721f4474e3d548a","wxc5e6b24889027032","wxef68681d5044ca05","wx706acdc696d025ad","wx8288d587b717897e","wx54a8d0e7b33c48c8",
  30. "wx0138dee6d680c705","wx4420e2d55b0ede27","wx1eb74c589da1731f","wxf2dd3343ad28ec14","wx6dacc3c0d8cb4b9f","wx39a47cc77988c431",
  31. "wx91a45e115ece8a3e","wx6b11ce533c3aca92","wx5d607cf4fa663c72","wxbece4f28b6b71271","wxf91f09a57b8aa3ae","wxdd1bde4de9f6a6a0",
  32. "wxbf40c735c0d263a5","wx3f464072571c1fd3","wx092045bdfe26a5ee","wx6c4bb5ef1e6c1e70","wxa9fb660c0d4bd708","wxcdfd21a368ed2ced",
  33. "wxf0248772f67666ee","wx7328fabfb0a5fb8d","wxdf7e08f21084c8e2",
  34. ]
  35. # update_list.extend(update_list_alex)
  36. # print(update_list)
  37. # 配置文件路径
  38. config_file = 'config/config.js'
  39. project_file = 'project.config.json'
  40. project_path = os.getcwd()
  41. # 根据平台设置 CLI 路径
  42. system = platform.system()
  43. if system == "Windows":
  44. cli_tool_path = r"C:\Users\hank\software\微信web开发者工具\cli.bat"
  45. # windows 项目路径
  46. project_path = r"C:\Users\hank\Git\mini_read_space_front"
  47. elif system == "Darwin": # macOS
  48. cli_tool_path = "/Applications/wechatwebdevtools.app/Contents/MacOS/cli"
  49. else:
  50. print(f"[ERROR] 不支持的操作系统: {system}")
  51. sys.exit(1)
  52. def replace_in_file(file_path, pattern, replacement):
  53. with open(file_path, 'r', encoding='utf-8') as file:
  54. content = file.read()
  55. new_content, count = re.subn(pattern, replacement, content)
  56. if count > 0:
  57. with open(file_path, 'w', encoding='utf-8') as file:
  58. file.write(new_content)
  59. else:
  60. print(f"[WARN] No matches found in {file_path} for pattern: {pattern}")
  61. def upload_project(appid, version, description):
  62. print(f"[INFO] 更新 appid: {appid}")
  63. replace_in_file(config_file, r'const current_appid = "[^"]*"', f'const current_appid = "{appid}"')
  64. replace_in_file(project_file, r'"appid":\s*"[^"]*"', f'"appid": "{appid}"')
  65. # 准备上传环境,清除 NODE_OPTIONS(兼容微信开发者工具 CLI)
  66. env = os.environ.copy()
  67. env.pop("NODE_OPTIONS", None) # 删除 NODE_OPTIONS,如果存在
  68. try:
  69. subprocess.run([
  70. cli_tool_path,
  71. "upload",
  72. "--project", project_path,
  73. "-v", version,
  74. "-d", description
  75. ], check=True, env=env)
  76. print(f"[SUCCESS] 上传完成: {appid}\n")
  77. except subprocess.CalledProcessError as e:
  78. print(f"[ERROR] 上传失败: {appid}\n{e}")
  79. def main(version,description):
  80. if len(sys.argv) < 2:
  81. print("用法: python update.py <模式> [appid] <开发者账号>")
  82. print("模式 1: 单个更新,需提供 appid")
  83. print("模式 2: 批量更新,使用 update_list")
  84. print("开发者账号 1:hank")
  85. print("开发者账号 2:alex")
  86. return
  87. mode = sys.argv[1]
  88. if mode == "1":
  89. if len(sys.argv) < 3:
  90. print("请提供 appid,例如: python update.py 1 wx1234567890abcdef")
  91. return
  92. appid = sys.argv[2]
  93. upload_project(appid, version, description)
  94. elif mode == "2":
  95. account = sys.argv[2]
  96. if account == "1":
  97. update_list = update_list_hank
  98. elif account == "2":
  99. update_list = update_list_alex
  100. else:
  101. print("无效开发者账号,只能为 1 或 2")
  102. return
  103. for appid in update_list:
  104. print(f"{appid} 开始更新")
  105. upload_project(appid, version, description)
  106. time.sleep(3)
  107. print(f"{appid} 结束更新\n")
  108. else:
  109. print("无效模式,只能为 1 或 2")
  110. return
  111. if __name__ == "__main__":
  112. version = "2.1.2"
  113. description = "v2.1.2 优化一些问题"
  114. main(version,description)