Files
3288588344-toulu/小天鹅.py
2025-04-23 15:34:59 +08:00

190 lines
6.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#by:哆啦A梦
#TL库:https://github.com/3288588344/toulu.git
#抓包midea.com域名中的imUserId和uid格式:imUserId#uid
#将抓到的值填在环境变量XTE中多账号换行分割
#入口:微信小程序:全心全意小天鹅
#公众号:哆啦A梦的藏宝箱
import os
import requests
import json
import random
import time
#公众号:哆啦A梦的藏宝箱
def check_environment_variable():
"""检查环境变量并解析账号信息"""
xte_env = os.environ.get("XTE")
if not xte_env:
print("错误:未设置 XTE 环境变量")
return None
accounts = []
for account_info in xte_env.split("\n"):
account_info = account_info.strip()
if not account_info:
continue
parts = account_info.split("#")
if len(parts) < 2:
print(f"错误XTE 环境变量格式不正确,应为 imUserId#uid当前值为{account_info}")
return None
imUserId = parts[0]
uid = parts[1]
accounts.append((imUserId, uid))
if not accounts:
print("错误:未找到有效的账号信息")
return None
return accounts
# 获取公告信息
def get_proclamation():
primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt"
backup_url = "https://tfapi.cn/TL/tl.json"
try:
response = requests.get(primary_url, timeout=10)
if response.status_code == 200:
print("\n" + "=" * 50)
print("📢 公告信息")
print("=" * 35)
print(response.text)
print("=" * 35 + "\n")
print("公告获取成功,开始执行任务...\n")
return
except requests.exceptions.RequestException as e:
print(f"获取公告时发生错误: {e}, 尝试备用链接...")
try:
response = requests.get(backup_url, timeout=10)
if response.status_code == 200:
print("\n" + "=" * 50)
print("📢 公告信息")
print("=" * 35)
print(response.text)
print("=" * 35 + "\n")
print("公告获取成功,开始执行任务...\n")
else:
print(f"⚠️ 获取公告失败,状态码: {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。")
def send_sign_request(imUserId, uid):
"""发送签到请求"""
url = "https://weixin.midea.com/mscp_mscp/api/cms_api/activity-center-im-service/im-svr/im/game/page/sign"
headers = {
"Connection": "keep-alive",
"Content-Type": "application/json",
"appId": "QLZZ9Fr7w2to",
"apiKey": "3660663068894a0d9fea574c2673f3c0",
"vcode": "107da4f1bb8b63c7d4ea9c5537207086",
"Origin": "https://weixin.midea.com",
"X-Requested-With": "com.tencent.mm",
"Referer": "https://weixin.midea.com/apps/h5-pro-wx-interaction-marketing/",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
}
data = {
"headParams": {
"language": "CN",
"originSystem": "MCSP",
"timeZone": "",
"userCode": "",
"tenantCode": "",
"userKey": "TEST_",
"transactionId": ""
},
"pagination": None,
"restParams": {
"gameId": 9,
"actvId": "401668349848950807",
"rootCode": "XTE",
"appCode": "XTE_SHG",
"imUserId": imUserId,
"uid": uid,
"openId": "oOqmz4uVK1_2cXwnsVHDp1vicNNY",
"unionId": "o9wX6jllxZJZxZsI0awpJS1aC8W0"
}
}
try:
response = requests.post(url, headers=headers, data=json.dumps(data))
return response
except requests.exceptions.RequestException as e:
print(f"请求异常: {e}")
return None
def process_response(index, imUserId, response):
"""处理签到响应"""
if response is None:
print(f"账号 {index}: {imUserId} - 请求失败")
return
if response.status_code != 200:
print(f"账号 {index}: {imUserId} - 请求失败,状态码: {response.status_code}")
print("响应内容:", response.text)
return
try:
response_json = response.json()
except json.JSONDecodeError:
print(f"账号 {index}: {imUserId} - 响应内容不是 JSON 格式")
print("响应内容:", response.text)
return
if response_json.get("code") != "000000":
error_msg = response_json.get("msg", "未知错误")
print(f"账号 {index}: {imUserId} - 签到失败: {error_msg}")
return
data_content = response_json.get("data")
if not data_content:
print(f"账号 {index}: {imUserId} - 响应数据中未找到 data 字段")
return
sign_result = data_content.get("result")
if sign_result:
print(f"账号 {index}: {imUserId} - 签到成功!")
prize_dto = data_content.get("prizeDto")
prize_name = prize_dto.get("name", "未知奖励") if prize_dto else "未知奖励"
print(f"获得奖励: {prize_name}")
else:
print(f"账号 {index}: {imUserId} - 今日已签到")
consecutive_days = data_content.get("consecutiveDays", "1")
print(f"连续签到天数: {consecutive_days}")
def main():
# 获取公告
get_proclamation()
# 获取账号列表
accounts = check_environment_variable()
if not accounts:
return
# 对账号进行排序并标注序号
accounts.sort()
if not accounts:
print("错误:未找到有效的账号信息")
return
# 执行签到任务
for index, (imUserId, uid) in enumerate(accounts, start=1):
print(f"正在处理账号 {index}: ")
response = send_sign_request(imUserId, uid)
process_response(index, imUserId, response)
print("-" * 50)
#公众号:哆啦A梦的藏宝箱
# 添加随机延迟
delay = random.randint(3, 10) # 随机延迟3到10秒
if index < len(accounts):
print(f"随机延迟 {delay} 秒后处理下一个账号...")
time.sleep(delay)
if __name__ == "__main__":
main()
#公众号:哆啦A梦的藏宝箱