mirror of
https://github.com/hlt1995/qlScripts.git
synced 2026-11-05 23:26:44 +08:00
Add files via upload
This commit is contained in:
1 parent
97ad676337
commit
ba721d28bf
5 files changed
+2046
No files matched your search
+1733
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,245 @@
|
||||
# -*- coding=UTF-8 -*-
|
||||
# @Project QL_TimingScript
|
||||
# @fileName tclx.py
|
||||
# @author Echo
|
||||
# @EditTime 2025/3/14
|
||||
# cron: 0 0 9 * * *
|
||||
# const $ = new Env('同程旅游');
|
||||
"""
|
||||
开启抓包,进入app 进入‘领福利’界面,点击签到,查看https://app.17u.cn/welfarecenter/index/signIndex请求头
|
||||
提取变量: apptoken、device
|
||||
变量格式: phone#apptoken#device,多个账号用@隔开
|
||||
"""
|
||||
import asyncio
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
import httpx
|
||||
|
||||
from fn_print import fn_print
|
||||
from get_env import get_env
|
||||
#from sendNotify import send_notification_message_collection
|
||||
|
||||
tc_cookies = get_env("tc_cookie", "@")
|
||||
|
||||
|
||||
class Tclx:
|
||||
def __init__(self, cookie):
|
||||
self.client = httpx.AsyncClient(base_url="https://app.17u.cn/welfarecenter",
|
||||
verify=False,
|
||||
timeout=60)
|
||||
self.phone = cookie.split("#")[0]
|
||||
self.apptoken = cookie.split("#")[1]
|
||||
self.device = cookie.split("#")[2]
|
||||
self.headers = {
|
||||
'accept': 'application/json, text/plain, */*',
|
||||
'phone': self.phone,
|
||||
'channel': '1',
|
||||
'apptoken': self.apptoken,
|
||||
'sec-fetch-site': 'same-site',
|
||||
'accept-language': 'zh-CN,zh-Hans;q=0.9',
|
||||
'accept-encoding': 'gzip, deflate, br',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'origin': 'https://m.17u.cn',
|
||||
'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/',
|
||||
# 'content-length': str(len(payload_str.encode('utf-8'))),
|
||||
'device': self.device,
|
||||
'sec-fetch-dest': 'empty'
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
async def get_today_date():
|
||||
return datetime.now().strftime('%Y-%m-%d')
|
||||
|
||||
async def sign_in(self):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/index/signIndex",
|
||||
headers=self.headers,
|
||||
json={}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - token失效了,请更新")
|
||||
return None
|
||||
else:
|
||||
today_sign = data['data']['todaySign']
|
||||
mileage = data['data']['mileageBalance']['mileage']
|
||||
fn_print(f"用户【{self.phone}】 - 今日{'已' if today_sign else '未'}签到,当前剩余里程{mileage}!")
|
||||
return today_sign
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 签到请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
return None
|
||||
|
||||
async def do_sign_in(self):
|
||||
today_date = await self.get_today_date()
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/index/sign",
|
||||
headers=self.headers,
|
||||
json={"type": 1, "day": today_date}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 签到失败了,尝试获取任务列表")
|
||||
return False
|
||||
else:
|
||||
fn_print(f"用户【{self.phone}】 - 签到成功!开始获取任务列表")
|
||||
return True
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 执行签到请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
return False
|
||||
|
||||
async def get_task_list(self):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/task/taskList?version=11.0.7",
|
||||
headers=self.headers,
|
||||
json={}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 获取任务列表失败了")
|
||||
return None
|
||||
else:
|
||||
tasks = []
|
||||
for task in data['data']:
|
||||
if task['state'] == 1 and task['browserTime'] != 0:
|
||||
tasks.append(
|
||||
{
|
||||
'taskCode': task['taskCode'],
|
||||
'title': task['title'],
|
||||
'browserTime': task['browserTime']
|
||||
}
|
||||
)
|
||||
return tasks
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 获取任务列表请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
return None
|
||||
|
||||
async def perform_tasks(self, task_code):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/task/start",
|
||||
headers=self.headers,
|
||||
json={"taskCode": task_code}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 执行任务【{task_code}】失败了,跳过当前任务")
|
||||
return None
|
||||
else:
|
||||
task_id = data['data']
|
||||
return task_id
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 执行任务【{task_code}】请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
return None
|
||||
|
||||
async def finsh_task(self, task_id):
|
||||
max_retry = 3 # 最大重试次数
|
||||
retry_delay = 2 # 重试间隔时间(秒)
|
||||
for attempt in range(max_retry):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/task/finish",
|
||||
headers=self.headers,
|
||||
json={"id": task_id}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] == 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 完成任务【{task_id}】成功!开始领取奖励")
|
||||
return True
|
||||
if attempt < max_retry - 1:
|
||||
fn_print(f"用户【{self.phone}】 - 完成任务【{task_id}】失败了,尝试重新提交(第{attempt + 1}次重试。。)")
|
||||
await asyncio.sleep(retry_delay * (attempt + 1))
|
||||
continue
|
||||
fn_print(f"用户【{self.phone}】 - 完成任务【{task_id}】最终失败,跳过当前任务")
|
||||
return False
|
||||
except Exception as e:
|
||||
error_msg = f"用户【{self.phone}】 - 完成任务【{task_id}】请求异常!{e}"
|
||||
if 'response' in locals():
|
||||
error_msg += f"\n{response.text}"
|
||||
fn_print(error_msg)
|
||||
if attempt == max_retry - 1:
|
||||
return False
|
||||
await asyncio.sleep(retry_delay * (attempt + 1))
|
||||
|
||||
async def receive_reward(self, task_id):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/task/receive",
|
||||
headers=self.headers,
|
||||
json={"id": task_id}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 领取签到奖励失败了, 请尝试手动领取")
|
||||
else:
|
||||
fn_print(f"用户【{self.phone}】 - 领取签到奖励成功!开始下一个任务")
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 领取签到奖励请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
|
||||
async def get_mileage_info(self):
|
||||
try:
|
||||
response = await self.client.post(
|
||||
url="/index/signIndex",
|
||||
headers=self.headers,
|
||||
json={}
|
||||
)
|
||||
data = response.json()
|
||||
if data['code'] != 2200:
|
||||
fn_print(f"用户【{self.phone}】 - 获取积分信息失败了")
|
||||
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']
|
||||
fn_print(
|
||||
f"用户【{self.phone}】 - 本月签到{cycle_sign_num}天,连续签到{continuous_history}天,今日共获取{today_mileage}里程,当前剩余里程{mileage}")
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.phone}】 - 获取积分信息请求异常!{e}")
|
||||
fn_print(response.text)
|
||||
return None
|
||||
|
||||
async def run(self):
|
||||
today_sign = await self.sign_in()
|
||||
if today_sign is None:
|
||||
return
|
||||
if today_sign:
|
||||
fn_print(f"用户【{self.phone}】 - 今日已签到,开始获取任务列表")
|
||||
else:
|
||||
if await self.do_sign_in():
|
||||
fn_print(f"用户【{self.phone}】 - 签到成功,开始获取任务列表")
|
||||
tasks = await self.get_task_list()
|
||||
if tasks:
|
||||
for task in tasks:
|
||||
task_code = task['taskCode']
|
||||
title = task['title']
|
||||
browser_time = task['browserTime']
|
||||
fn_print(f"用户【{self.phone}】 - 开始做任务【{title}】,需要浏览{browser_time}秒")
|
||||
task_id = await self.perform_tasks(task_code)
|
||||
if task_id:
|
||||
await asyncio.sleep(browser_time)
|
||||
if await self.finsh_task(task_id):
|
||||
await self.receive_reward(task_id)
|
||||
await self.get_mileage_info()
|
||||
|
||||
|
||||
async def main():
|
||||
tasks = []
|
||||
for cookie in tc_cookies:
|
||||
tclx = Tclx(cookie)
|
||||
tasks.append(tclx.run())
|
||||
await asyncio.gather(*tasks)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(main())
|
||||
send_notification_message_collection(f"同程旅行签到通知 - {datetime.now().strftime('%Y/%m/%d')}")
|
||||
@@ -0,0 +1,22 @@
|
||||
'''
|
||||
在浏览器输入https://account.xiaomi.com/登入
|
||||
然后获取cookie 找到passToken和userid即可
|
||||
变量名 xmqb1
|
||||
格式为"passToken=xxx;userId=xxx;"多账户新增环境变量
|
||||
变量名 XMQB_KEY 卡密 关注公众号【极客快乐营】发送【小米钱包】获取KEY
|
||||
|
||||
'''
|
||||
import os
|
||||
keys = os.getenv("XMQB_KEY")
|
||||
if keys == "":
|
||||
str1 = '''
|
||||
请填写KEY
|
||||
关注公众号【极客快乐营】发送【小米钱包】获取KEY
|
||||
公众号二维码:
|
||||
https://free-img.400040.xyz/4/2025/06/30/686174d049215.png
|
||||
'''
|
||||
print(str1)
|
||||
QLAPI.notify("请填写KEY", str1)
|
||||
exit()
|
||||
#!/usr/bin/env python3
|
||||
import base64,zlib as _zlib;aukcmzjb="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 truncated
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# -*- coding=UTF-8 -*-
|
||||
# @Project QL_TimingScript
|
||||
# @fileName fn_print.py
|
||||
# @author Echo
|
||||
# @EditTime 2024/9/24
|
||||
from typing import *
|
||||
|
||||
all_print_list = []
|
||||
|
||||
|
||||
def fn_print(*args, sep=' ', end='\n', **kwargs):
|
||||
global all_print_list
|
||||
output = ""
|
||||
# 构建输出字符串
|
||||
for index, arg in enumerate(args):
|
||||
if index == len(args) - 1:
|
||||
output += str(arg)
|
||||
continue
|
||||
output += str(arg) + sep
|
||||
output = output + end
|
||||
all_print_list.append(output)
|
||||
# 调用内置的 print 函数打印字符串
|
||||
print(*args, sep=sep, end=end, **kwargs)
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
# -*- coding=UTF-8 -*-
|
||||
# @Project QL_TimingScript
|
||||
# @fileName get_env.py
|
||||
# @author Echo
|
||||
# @EditTime 2024/11/26
|
||||
import os
|
||||
import re
|
||||
|
||||
from dotenv import load_dotenv, find_dotenv
|
||||
|
||||
from fn_print import fn_print
|
||||
|
||||
|
||||
def get_env(env_var, separator):
|
||||
if env_var in os.environ:
|
||||
return re.split(separator, os.environ.get(env_var))
|
||||
else:
|
||||
load_dotenv(find_dotenv())
|
||||
if env_var in os.environ:
|
||||
return re.split(separator, os.environ.get(env_var))
|
||||
else:
|
||||
fn_print(f"未找到{env_var}变量.")
|
||||
return []
|
||||
Reference in new issue
Block a user