Update TongchengTravel.py

This commit is contained in:
hlt1995 authored and GitHub committed 2026-06-12 10:14:57 +08:00
1 parent 5049e4e917
commit 9074f08b56
1 file changed
+25 -43
+25 -43
View File
@@ -4,15 +4,15 @@
"""
开启抓包,进入app 进入'领福利'界面,点击签到,查看https://app.17u.cn/welfarecenter/index/signIndex请求头
提取变量: apptoken、device
变量格式: phone#apptoken#device,多个账号用@隔开
变量格式: phone#apptoken#device,多个账号用&或@隔开
"""
import asyncio
import os
import time
import httpx
import asyncio
from datetime import datetime
import httpx
# ==================== Bark 推送配置 ====================
# 添加自定义参数,也可以留空
@@ -32,15 +32,20 @@ os.environ["PUSH_SWITCH"] = PUSH_SWITCH
def fn_print(message):
print(message)
def get_env(env_name, separator="&"):
def get_env(env_name, separator="@"):
env_value = os.getenv(env_name)
if not env_value:
return []
return env_value.split(separator)
if "@" in env_value:
return env_value.split("@")
elif "&" in env_value:
return env_value.split("&")
else:
return [env_value]
notify_message = "\n"
tc_cookies = get_env("tc_cookie", "@")
tc_cookies = get_env("tc_cookie")
class Tclx:
@@ -64,11 +69,15 @@ class Tclx:
'user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 17_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 TcTravel/11.0.0 tctype/wk',
'referer': 'https://m.17u.cn/',
'device': self.device,
'denc': 'br',
'sv': '3',
'secver': '4',
'aenc': 'br',
'Os-Type': '1',
'sec-fetch-dest': 'empty'
}
self.account_result = ""
self.sign_success = False # 新增:记录签到是否成功
self.token_invalid = False # 新增:记录token是否失效
self.token_invalid = False # 标记token是否失效
def account_print(self, message):
"""只打印到控制台,不收集到通知中"""
@@ -79,6 +88,7 @@ class Tclx:
return datetime.now().strftime('%Y-%m-%d')
async def sign_in(self):
"""仅用于验证 token 有效性及获取里程,不执行签到操作"""
try:
response = await self.client.post(
url="/index/signIndex",
@@ -88,18 +98,18 @@ class Tclx:
data = response.json()
if data['code'] != 2200:
self.account_print("token失效了,请更新")
self.token_invalid = True # 标记token失效
self.token_invalid = True
return None
else:
today_sign = data['data']['todaySign']
mileage = data['data']['mileageBalance']['mileage']
self.account_print(f"今日{'已' if today_sign else '未'}签到,当前剩余里程{mileage}!")
return today_sign
self.account_print(f"Token验证成功,当前里程{mileage}")
return data['data']['todaySign']
except Exception as e:
self.account_print(f"签到请求异常!{e}")
return None
async def do_sign_in(self):
"""原本的签到函数,本次不再调用"""
today_date = await self.get_today_date()
try:
response = await self.client.post(
@@ -216,14 +226,10 @@ class Tclx:
self.account_print("获取积分信息失败了")
return None
else:
cycle_sign_num = data['data']['cycleSighNum']
continuous_history = data['data']['continuousHistory']
mileage = data['data']['mileageBalance']['mileage']
today_mileage = data['data']['mileageBalance']['todayMileage']
self.account_print(f"本月签到{cycle_sign_num}天,连续签到{continuous_history}天,今日共获取{today_mileage}里程,当前剩余里程{mileage}")
self.account_print(f"当前剩余里程{mileage},今日获取{today_mileage}里程")
return {
'cycle_sign_num': cycle_sign_num,
'mileage': mileage,
'today_mileage': today_mileage
}
@@ -232,24 +238,12 @@ class Tclx:
return None
async def run(self):
# 初始化账号结果
self.account_result = f"📱 账号:{self.phone}\n"
# 首先检查签到状态
today_sign = await self.sign_in()
if today_sign is None:
# token失效的情况
self.account_result += "❌ token失效,请更新\n\n"
return
if today_sign:
self.account_print("今日已签到,开始获取任务列表")
self.sign_success = True
else:
self.account_print("今日未签到,开始执行签到")
self.sign_success = await self.do_sign_in()
# 获取任务列表并执行任务
tasks = await self.get_task_list()
if tasks:
for task in tasks:
@@ -263,22 +257,11 @@ class Tclx:
if await self.finsh_task(task_id):
await self.receive_reward(task_id)
# 获取最终的里程信息并构建结果
mileage_info = await self.get_mileage_info()
if mileage_info:
if self.sign_success:
status_icon = "✨️"
result_text = f"{status_icon} 签到成功,本月签到【{mileage_info['cycle_sign_num']}】天"
else:
status_icon = "❗️"
result_text = f"{status_icon} 签到暂不可用,请前往APP手动签到!\n🈷️ 本月签到【{mileage_info['cycle_sign_num']}】天"
self.account_result = f"📱 账号:{self.phone}\n{result_text}\n🎁 当前里程: 【{mileage_info['mileage']}】(+{mileage_info['today_mileage']})\n\n"
self.account_result = f"📱 账号:{self.phone}\n🎁 当前里程: 【{mileage_info['mileage']}】(+{mileage_info['today_mileage']})\n\n"
else:
if self.sign_success:
self.account_result += "✅ 签到成功(但获取里程信息失败)\n\n"
else:
self.account_result += "❌ 签到失败且获取里程信息失败\n\n"
self.account_result = f"📱 账号:{self.phone}\n❌ 获取里程信息失败\n\n"
async def main():
@@ -306,7 +289,6 @@ async def main():
if __name__ == '__main__':
has_token_invalid = asyncio.run(main())
# 推送通知
if PUSH_SWITCH == '1' or has_token_invalid:
try:
from notify import send