Compare commits

..

5 Commits
1.0.6 ... 1.0.9

Author SHA1 Message Date
ikun
e38af1675c fix: 修改QQ群链接 2024-08-15 19:53:41 +08:00
ikun
50194cf7de 更新 main.py 2024-08-14 19:00:27 +08:00
ikun
7063f2f5dc rm: 移除jsdelivr的CDN服务 2024-08-13 10:25:28 +08:00
ikun
2c6b3bebe1 fix: Github API请求数量为0时不返回错误
史中史代码,看不懂与我无关
2024-08-12 19:18:56 +08:00
ikun
5c74940702 feat: 加了几个加速镜像 2024-08-12 15:08:54 +08:00

65
main.py
View File

@@ -13,6 +13,7 @@ import time
import sys
import psutil
import asyncio
from aiohttp import ClientSession, ClientError
from pathlib import Path
# 初始化日志记录器
@@ -68,12 +69,10 @@ print('\033[1;32;40m | |_| | | | \\ | | |___ | | \\ \\ | |___ / /' + '\033
print('\033[1;32;40m \\_____/ |_| \\_| |_____| |_| \\_\\ |_____| /_/' + '\033[0m')
log.info('作者ikun0014')
log.info('本项目基于wxy1343/ManifestAutoUpdate进行修改采用GPL V3许可证')
log.info('版本1.0.6')
log.info('版本1.0.9')
log.info('项目仓库https://github.com/ikunshare/Onekey')
log.debug('官网ikunshare.com')
log.warning('倒卖本工具的臭傻逼https://space.bilibili.com/3546655638948756')
log.warning('注意据传Steam新版本对部分解锁工具进行了检测但目前未发现问题如果你被封号可以issue反馈')
log.warning('本项目完全免费如果你在淘宝QQ群内通过购买方式获得赶紧回去骂商家死全家\n交流群组:\n点击链接加入群聊【ikun分享】https://qm.qq.com/q/D9Uiva3RVS\nhttps://t.me/ikunshare_group')
log.warning('本项目完全开源免费如果你在淘宝QQ群内通过购买方式获得赶紧回去骂商家死全家\n交流群组:\n点击链接加入群聊【𝗶𝗸𝘂𝗻分享】https://qm.qq.com/q/d7sWovfAGI\nhttps://t.me/ikunshare_group')
# 通过注册表获取Steam安装路径
@@ -101,13 +100,14 @@ def stack_error(exception):
# 下载清单
async def get(sha, path):
url_list = [
f'https://gcore.jsdelivr.net/gh/{repo}@{sha}/{path}',
f'https://fastly.jsdelivr.net/gh/{repo}@{sha}/{path}',
f'https://cdn.jsdelivr.net/gh/{repo}@{sha}/{path}',
f'https://raw.dgithub.xyz/{repo}/{sha}/{path}'
f'https://raw.dgithub.xyz/{repo}/{sha}/{path}',
f'https://gh.api.99988866.xyz/https://raw.githubusercontent.com/{repo}/{sha}/{path}',
f'https://mirror.ghproxy.com/https://raw.githubusercontent.com/{repo}/{sha}/{path}',
f'https://raw.githubusercontent.com/{repo}/{sha}/{path}',
f'https://gh.jiasu.in/https://raw.githubusercontent.com/{repo}/{sha}/{path}'
]
retry = 3
async with aiohttp.ClientSession() as session:
async with ClientSession() as session:
while retry:
for url in url_list:
try:
@@ -116,7 +116,7 @@ async def get(sha, path):
return await r.read()
else:
log.error(f' 🔄 获取失败: {path} - 状态码: {r.status}')
except aiohttp.ClientError:
except ClientError():
log.error(f' 🔄 获取失败: {path} - 连接错误')
retry -= 1
log.warning(f' 🔄 重试剩余次数: {retry} - {path}')
@@ -225,24 +225,6 @@ async def greenluma_add(depot_id_list):
return True
# 检测Github Api请求数量
async def check_github_api_limit(headers):
url = 'https://api.github.com/rate_limit'
async with aiohttp.ClientSession() as session:
async with session.get(url, headers=headers, ssl=False) as r:
r_json = await r.json()
remain_limit = r_json['rate']['remaining']
use_limit = r_json['rate']['used']
reset_time = r_json['rate']['reset']
f_reset_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(reset_time))
log.info(f' 🔄 已用Github请求数{use_limit}')
log.info(f' 🔄 剩余Github请求数{remain_limit}')
if r.status == 429:
log.info(f' 🔄 你的Github Api请求数已超限请尝试增加Persoal Token')
log.info(f' 🔄 请求数重置时间:{f_reset_time}')
return True
# 检查进程是否运行
def check_process_running(process_name):
for process in psutil.process_iter(['name']):
@@ -253,16 +235,35 @@ def check_process_running(process_name):
# 主函数
async def main(app_id):
app_id_list = list(filter(str.isdecimal, app_id.strip().split('-')))
app_id = app_id_list[0]
if not app_id == None:
app_id_list = list(filter(str.isdecimal, app_id.strip().split('-')))
app_id = app_id_list[0]
github_token = config.get("Github_Persoal_Token", "")
headers = {'Authorization': f'Bearer {github_token}'} if github_token else None
await check_github_api_limit(headers)
url = 'https://api.github.com/rate_limit'
async with ClientSession() as session:
async with session.get(url, headers=headers, ssl=False) as r:
r_json = await r.json()
remain_limit = r_json['rate']['remaining']
use_limit = r_json['rate']['used']
reset_time = r_json['rate']['reset']
f_reset_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(reset_time))
log.info(f' 🔄 已用Github请求数{use_limit}')
log.info(f' 🔄 剩余Github请求数{remain_limit}')
if r.status == 403:
log.info(f' 🔄 你的Github Api请求数已超限请尝试增加Persoal Token')
log.info(f' 🔄 请求数重置时间:{f_reset_time}')
url = f'https://api.github.com/repos/{repo}/branches/{app_id}'
async with aiohttp.ClientSession() as session:
async with ClientSession() as session:
async with session.get(url, headers=headers, ssl=False) as r:
if r.status == 403:
log.info(f' 🔄 你的Github Api请求数已超限请尝试增加Persoal Token')
log.info(f' 🔄 请求数重置时间:{reset_time}')
r_json = await r.json()
if 'commit' in r_json:
sha = r_json['commit']['sha']