Files
Yangmao_Script/Points_Based/JKHZ_QD.py
T
2026-07-30 18:22:37 +08:00

86 lines
2.7 KiB
Python

# const $ = new Env("接口盒子签到");
# cron: 55 6 * * *
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import json
import time
import requests
from datetime import datetime
# ========== 配置区 ==========
SOURCE = 'env' # 从环境变量 HZ_API 读取(换行分割)
LOG_FILE = 'sign.log'
# ============================
def get_accounts():
env = os.environ.get('HZ_API')
if not env:
print("❌ 未设置环境变量 HZ_API")
sys.exit(1)
accounts = []
for line in env.splitlines():
line = line.strip()
if not line or line.startswith('#'):
continue
if '#' in line:
uid, ukey = line.split('#', 1)
accounts.append((uid.strip(), ukey.strip()))
else:
print(f"⚠️ 跳过无效行:{line}")
if not accounts:
print("❌ HZ_API 中未找到有效账号")
sys.exit(1)
return accounts
def sign_in(uid, ukey):
# ----- 修改点:更换为正式接口地址 -----
url = "https://cn.apihz.cn/api/xitong/function.php"
params = {"id": uid, "key": ukey, "type": 1}
try:
resp = requests.get(url, params=params, timeout=10)
resp.encoding = 'utf-8'
data = resp.json()
code = data.get('code')
if code == 200:
return True, data
else:
return False, data
except Exception as e:
return False, {"error": str(e)}
def log_message(msg, also_print=True):
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
full = f"[{timestamp}] {msg}"
if also_print:
print(full)
with open(LOG_FILE, 'a', encoding='utf-8') as f:
f.write(full + '\n')
def main():
start_time = time.time()
log_message("========== 开始签到 ==========")
accounts = get_accounts()
log_message(f"共加载 {len(accounts)} 个账号")
success = fail = 0
for idx, (uid, ukey) in enumerate(accounts, 1):
display = uid[-4:] if len(uid) > 4 else uid
log_message(f"账号 {idx} (ID: ***{display}) 签到中...")
ok, data = sign_in(uid, ukey)
if ok:
success += 1
log_message(f"✅ 账号 {idx} 签到成功!响应:{json.dumps(data, ensure_ascii=False)}")
else:
fail += 1
msg = data.get('msg', str(data)) if isinstance(data, dict) else str(data)
log_message(f"❌ 账号 {idx} 签到失败:{msg}")
time.sleep(0.5)
elapsed = time.time() - start_time
log_message(f"签到完成:成功 {success},失败 {fail},耗时 {elapsed:.2f} 秒")
log_message("========== 结束 ==========\n")
if __name__ == "__main__":
main()