mirror of
https://github.com/3288588344/toulu.git
synced 2025-12-16 15:00:14 +08:00
182 lines
6.9 KiB
Python
182 lines
6.9 KiB
Python
#入口:小程序KSOEUR女装
|
||
#抓包域名smp-api.iyouke.com下Authorization值,多账号换行分割
|
||
#by:哆啦A梦
|
||
|
||
|
||
import os
|
||
import requests
|
||
from datetime import datetime
|
||
|
||
# 获取公告信息
|
||
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" + "=" * 45)
|
||
print("📢 公告信息")
|
||
print("=" * 45)
|
||
print(response.text)
|
||
print("=" * 45 + "\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" + "=" * 45)
|
||
print("📢 公告信息")
|
||
print("=" * 45)
|
||
print(response.text)
|
||
print("=" * 45 + "\n")
|
||
print("公告获取成功,开始执行任务...\n")
|
||
else:
|
||
print(f"⚠️ 获取公告失败,状态码: {response.status_code}")
|
||
except requests.exceptions.RequestException as e:
|
||
print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。")
|
||
|
||
|
||
# 查询账号信息和积分,并处理返回值
|
||
def get_account_info_and_points(authorization):
|
||
# 查询账号信息
|
||
user_info_url = "https://smp-api.iyouke.com/dtapi/p/user/userInfo"
|
||
user_info_headers = {
|
||
"Host": "smp-api.iyouke.com",
|
||
"Authorization": authorization,
|
||
"Appid": "wx00796053aa93af0c",
|
||
"Version": "2.9.40",
|
||
"EnvVersion": "release",
|
||
"Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007",
|
||
"Content-Type": "application/json; charset=utf-8",
|
||
"Accept-Encoding": "gzip, deflate, br"
|
||
}
|
||
try:
|
||
user_info_response = requests.get(user_info_url, headers=user_info_headers)
|
||
if user_info_response.status_code == 200:
|
||
user_info = user_info_response.json()
|
||
|
||
else:
|
||
print(f"查询账号信息失败,状态码:{user_info_response.status_code}")
|
||
print(f"返回内容:{user_info_response.text}")
|
||
return None
|
||
except Exception as e:
|
||
print(f"查询账号信息时发生错误:{e}")
|
||
print(f"返回内容:{user_info_response.text}") if 'user_info_response' in locals() else print("无法获取返回内容")
|
||
return None
|
||
|
||
# 查询积分
|
||
points_url = "https://smp-api.iyouke.com/dtapi/points/user/centerInfo"
|
||
points_headers = {
|
||
"Host": "smp-api.iyouke.com",
|
||
"Authorization": authorization,
|
||
"Appid": "wx00796053aa93af0c",
|
||
"Version": "2.9.40",
|
||
"EnvVersion": "release",
|
||
"Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007",
|
||
"Content-Type": "application/json; charset=utf-8",
|
||
"Accept-Encoding": "gzip, deflate, br"
|
||
}
|
||
try:
|
||
points_response = requests.get(points_url, headers=points_headers)
|
||
if points_response.status_code == 200:
|
||
points_info = points_response.json()
|
||
|
||
else:
|
||
print(f"查询积分失败,状态码:{points_response.status_code}")
|
||
print(f"返回内容:{points_response.text}")
|
||
points_info = None
|
||
except Exception as e:
|
||
print(f"查询积分时发生错误:{e}")
|
||
print(f"返回内容:{points_response.text}") if 'points_response' in locals() else print("无法获取返回内容")
|
||
points_info = None
|
||
|
||
# 处理并打印账号和积分信息
|
||
mobile = user_info.get("userMobile", "")
|
||
nick_name = user_info.get("nickName", "")
|
||
print(f"账号:{mobile}(昵称:{nick_name})")
|
||
if points_info and points_info.get("success"):
|
||
points_balance = points_info.get("data", {}).get("pointsBalance", 0)
|
||
print(f"当前积分:{points_balance}")
|
||
else:
|
||
print("无法获取积分信息")
|
||
|
||
return {
|
||
"mobile": mobile,
|
||
"nick_name": nick_name,
|
||
"points_balance": points_info.get("data", {}).get("pointsBalance", "查询失败") if points_info else "查询失败"
|
||
}
|
||
|
||
|
||
# 签到功能
|
||
def check_in(authorization):
|
||
current_date = datetime.now().strftime("%Y-%m-%d")
|
||
formatted_date = current_date.replace('-', '%2F')
|
||
url = f"https://smp-api.iyouke.com/dtapi/pointsSign/user/sign?date={formatted_date}"
|
||
headers = {
|
||
"Host": "smp-api.iyouke.com",
|
||
"Authorization": authorization,
|
||
"Appid": "wx00796053aa93af0c",
|
||
"Version": "2.9.40",
|
||
"EnvVersion": "release",
|
||
"Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007",
|
||
"Content-Type": "application/json; charset=utf-8",
|
||
"Referer": "https://servicewechat.com/wx00796053aa93af0c/52/page-frame.html",
|
||
"Accept-Encoding": "gzip, deflate, br"
|
||
}
|
||
try:
|
||
response = requests.get(url, headers=headers)
|
||
if response.status_code == 200:
|
||
|
||
return response.json()
|
||
else:
|
||
print(f"签到失败,状态码:{response.status_code}")
|
||
print(f"返回内容:{response.text}")
|
||
return None
|
||
except Exception as e:
|
||
print(f"签到时发生错误:{e}")
|
||
print(f"返回内容:{response.text}") if 'response' in locals() else print("无法获取返回内容")
|
||
return None
|
||
|
||
|
||
# 主程序
|
||
if __name__ == "__main__":
|
||
# 获取公告
|
||
get_proclamation()
|
||
|
||
# 从环境变量获取 authorization 值,支持多账号(换行分割)
|
||
tokens = os.getenv("KSOEUR", "").split("\n")
|
||
if not tokens or all(not token.strip() for token in tokens):
|
||
print("❌ 未找到环境变量 KSOEUR 或其值为空,任务终止。")
|
||
exit(1)
|
||
|
||
# 遍历每个账号执行任务
|
||
for token in tokens:
|
||
token = token.strip()
|
||
if not token:
|
||
continue
|
||
|
||
print(f"\n{'=' * 45}")
|
||
print(f"正在执行任务中")
|
||
print(f"{'=' * 45}\n")
|
||
|
||
account_data = get_account_info_and_points(token)
|
||
if account_data:
|
||
# 签到
|
||
check_in_result = check_in(token)
|
||
if check_in_result and check_in_result.get("success"):
|
||
print(f"签到成功,获得奖励:{check_in_result.get('data', {}).get('signReward', 0)}")
|
||
else:
|
||
if check_in_result and check_in_result.get("errorMsg"):
|
||
print(f"签到失败,原因:{check_in_result.get('errorMsg')}")
|
||
else:
|
||
print("签到失败")
|
||
else:
|
||
print("跳过该账号。")
|
||
|
||
print(f"\n{'-' * 45}\n")
|
||
|
||
print("所有任务执行完成!")
|