Collect authenticated Qinglong scripts batch

This commit is contained in:
Hermes Agent
2026-05-24 03:53:42 +00:00
parent 0d80b33d25
commit 28d62fef03
86 changed files with 18420 additions and 5 deletions

View File

@@ -0,0 +1,694 @@
# Source: https://github.com/back-101/zyqinglong/blob/main/%E6%BB%B4%E6%BB%B4%E5%87%BA%E8%A1%8C.py
# Raw: https://raw.githubusercontent.com/back-101/zyqinglong/main/滴滴出行.py
# Repo: back-101/zyqinglong
# Path: 滴滴出行.py
# UploadedAt: 2025-11-29T06:56:58Z
# SHA256: e0d2a0c873bdcaa9f9bb7f078021468bed339ad22e6e04b4db7003797176362b
# Category: web版/抓包
# Evidence: web/H5关键词 + cookie/token/header
# -*- coding=UTF-8 -*-
# @Project QL_TimingScript
# @fileName 滴滴出行.py
# @author Echo
# @EditTime 2024/11/27
# const $ = new Env('滴滴出行')
# cron: "0 8,14,17 * * *"
"""
DD_TOKENS 滴滴出行进入福利页面抓token值
自行配经纬度和城市id
"""
import asyncio
import datetime
import httpx
from fn_print import fn_print
from get_env import get_env
from sendNotify import send_notification_message_collection
MONTH_SIGNAL = False # 月月领券
dd_tokens = get_env("DD_TOKENS", "&")
class DiDi:
LAT = "30.707130422009786" # 纬度
LNG = "104.09652654810503" # 经度
CITY_ID = 17 # 城市id
def __init__(self, token, city_id=CITY_ID, lat=LAT, lng=LNG):
self.user_phone = None
self.client = httpx.AsyncClient(verify=False)
self.token = token
self.city_id = city_id
self.lat = lat
self.lng = lng
self.today = datetime.datetime.now().strftime("%Y-%m-%d")
self.tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
self.activity_id_today = 0
self.task_id_today = 0
self.status_today = 0
self.activity_id_tomorrow = 0
self.status_tomorrow = 0
self.count_tomorrow = 0
async def get_user_info(self):
"""
获取用户信息
:return:
"""
get_user_info_response = await self.client.get(
url=f"https://common.diditaxi.com.cn/passenger/getprofile?token={self.token}"
)
get_user_info_data = get_user_info_response.json()
self.user_phone = get_user_info_data.get("phone")
async def get_welfare_payments(self):
"""
获取福利金
:return:
"""
get_weibo_payments_response = await self.client.get(
url="https://rewards.xiaojukeji.com/loyalty_credit/bonus/getWelfareUsage4Wallet",
params={
"token": self.token,
"city_id": self.city_id
}
)
if get_weibo_payments_response.status_code == 200:
get_info_data = get_weibo_payments_response.json()
if "token error" in get_info_data.get("errmsg") and get_info_data.get("errno") == 20001:
fn_print("token已过期请重新获取token")
send_notification_message_collection(
"滴滴出行通知 - {}".format(datetime.datetime.now().strftime("%Y/%m/%d")))
exit()
return get_info_data['data']['balance']
else:
fn_print(f"===获取用户福利金请求异常, {get_weibo_payments_response.text}===")
async def sign_in(self):
"""
签到
:return:
"""
sign_in_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/action/dailySign",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": '{}'
}
)
if sign_in_response.status_code == 200:
sign_in_data = sign_in_response.json()
fn_print(sign_in_data)
if sign_in_data["errno"] == 0:
subsidy_amount = sign_in_data["data"]["subsidy_state"]["subsidy_amount"]
fn_print(f"用户【{0}】, ===今日签到成功,获得{subsidy_amount}福利金🪙🪙🪙===")
return
elif sign_in_data["errno"] == 40009:
fn_print(f"用户【{0}】, ===今日福利金已签到,无需重复签到!===")
return
else:
fn_print(f"用户【{0}】, ===签到失败, {sign_in_data}===")
else:
fn_print(f"===签到请求异常, {sign_in_response}===")
async def get_carve_up_action_id(self):
"""
获取瓜分活动的ID
:return:
"""
get_carve_up_action_id_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/home/init/v2",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": '{}'
}
)
if get_carve_up_action_id_response.status_code == 200:
get_carve_up_action_id_data = get_carve_up_action_id_response.json()
if get_carve_up_action_id_data.get("errno") == 0:
divide_data = get_carve_up_action_id_data["data"]["divide_data"]["divide"]
today_data = divide_data.get(self.today)
self.activity_id_today, self.task_id_today, self.status_today = today_data["activity_id"], today_data[
"task_id"], today_data["status"]
tomorrow_data = divide_data.get(self.tomorrow)
self.activity_id_tomorrow, self.status_tomorrow, self.count_tomorrow = tomorrow_data["activity_id"], \
tomorrow_data["status"], tomorrow_data["button"]["count"]
return True
else:
fn_print(f"===获取瓜分活动ID请求异常, {get_carve_up_action_id_response.text}===")
async def apply_carve_up_action(self):
"""
报名明天的瓜分福利金
:return:
"""
apply_carve_up_action_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/action/joinDivide",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": '{}',
"activity_id": self.activity_id_tomorrow,
"count": self.count_tomorrow,
"type": "ut_bonus"
}
)
if apply_carve_up_action_response.status_code == 200:
apply_carve_up_action_data = apply_carve_up_action_response.json()
if apply_carve_up_action_data.get("errno") == 0:
if apply_carve_up_action_data.get("data", {}).get("result"):
fn_print(f"用户【{self.user_phone}】, ===报名明日瓜分福利金成功🎉===")
return
elif apply_carve_up_action_data.get("errno") == 1003:
fn_print(f"用户【{self.user_phone}】, ===今日瓜分福利金已报名,无需重复报名!===")
return
else:
fn_print(f"用户【{self.user_phone}】, ===报名明日瓜分福利金失败, {apply_carve_up_action_data}===")
return
else:
fn_print(f"===报名明日瓜分福利金请求异常, {apply_carve_up_action_response.text}===")
async def complete_carve_up_action(self):
"""
完成今天的瓜分福利金14点前完成
:return:
"""
complete_carve_up_action_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/action/divideReward",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": '{}',
"activity_id": self.activity_id_today,
"task_id": self.task_id_today
}
)
if complete_carve_up_action_response.status_code == 200:
complete_carve_up_action_data = complete_carve_up_action_response.json()
if complete_carve_up_action_data.get("errno") == 0:
if complete_carve_up_action_data.get("data", {}).get("result"):
fn_print(f"用户【{self.user_phone}】, ===完成今日打卡瓜分福利金成功🎉===")
return
elif complete_carve_up_action_data.get("errno") == 1003:
fn_print(f"用户【{self.user_phone}】, ===今日瓜分福利金已完成,无需重复完成!===")
return
else:
fn_print(f"用户【{self.user_phone}】, ===完成今日瓜分福利金失败, {complete_carve_up_action_data}===")
return
else:
fn_print(f"===完成今日瓜分福利金请求异常, {complete_carve_up_action_response.text}===")
async def inquire_benefits_details(self):
"""
查询权益详情
:return:
"""
benefits_details_response = await self.client.get(
url="https://member.xiaojukeji.com/dmember/h5/privilegeLists",
params={
"token": self.token,
"city_id": self.city_id
}
)
if benefits_details_response.status_code == 200:
benefits_details_data = benefits_details_response.json()
if benefits_details_data.get("errno") == 0:
privileges_list = benefits_details_data.get('data', {}).get('privileges', []) # 我的权益列表
return privileges_list
else:
fn_print(f"===查询权益详情请求异常, {benefits_details_response.text}===")
async def receive_level_gift_week(self):
"""
领取周周领券活动的优惠券
:return:
"""
privileges_list = await self.inquire_benefits_details()
for privilege in privileges_list:
if privilege.get('name') not in ['周周领券'] or privilege.get('level_gift') is None:
continue
coupons_list = privilege.get('level_gift', {}).get('coupons', [])
for coupon in coupons_list:
status = coupon.get("status") # 0: 未领取 1: 已使用 2: 未使用
if status != 0:
continue
batch_id = coupon.get("batch_id")
fn_print(f"用户【“{self.user_phone}】, ===开始领取{coupon.get('remark')}{coupon.get('coupon_title')}===")
receive_level_gift_response = await self.client.get(
url=f"https://member.xiaojukeji.com/dmember/h5/receiveLevelGift?xbiz=&prod_key=wyc-vip-level&xpsid=&dchn=&xoid=&xenv=passenger&xspm_from=&xpsid_root=&xpsid_from=&xpsid_share=&token={self.token}&batch_id={batch_id}&env={{}}&gift_type=1&city_id={self.city_id}"
)
if receive_level_gift_response.status_code == 200:
receive_level_gift_data = receive_level_gift_response.json()
if receive_level_gift_data.get("errno") == 0:
fn_print(f"用户【“{self.user_phone}】, ===领取成功🎉===")
continue
else:
fn_print(f"用户【“{self.user_phone}】, ===领取失败, {receive_level_gift_data}===")
else:
fn_print(f"===领取周周领券请求异常, {receive_level_gift_response.text}===")
async def receive_level_gift_month(self):
"""
领取月月领券活动的优惠券
:return:
"""
if not MONTH_SIGNAL:
fn_print(f"用户【“{self.user_phone}】, ===月月领券活动未开启===")
return
privileges_list = await self.inquire_benefits_details()
for privilege in privileges_list:
if privilege.get('name') not in ['月月领券'] or privilege.get('level_gift') is None:
continue
coupons_list = privilege.get('level_gift', {}).get('coupons', [])
for coupon in coupons_list:
status = coupon.get("status") # 0: 未领取 1: 已使用 2: 未使用
if status != 0:
continue
batch_id = coupon.get("batch_id")
fn_print(f"用户【“{self.user_phone}】, ===开始领取{coupon.get('remark')}{coupon.get('coupon_title')}===")
receive_level_gift_response = await self.client.get(
url=f"https://member.xiaojukeji.com/dmember/h5/receiveLevelGift?xbiz=&prod_key=wyc-vip-level&xpsid=&dchn=&xoid=&xenv=passenger&xspm_from=&xpsid_root=&xpsid_from=&xpsid_share=&token={self.token}&batch_id={batch_id}&env={{}}&gift_type=1&city_id={self.city_id}"
)
if receive_level_gift_response.status_code == 200:
receive_level_gift_data = receive_level_gift_response.json()
if receive_level_gift_data.get("errno") == 0:
fn_print(f"用户【“{self.user_phone}】, ===领取成功🎉===")
continue
else:
fn_print(f"用户【“{self.user_phone}】, ===领取失败, {receive_level_gift_data}===")
else:
fn_print(f"===领取月月领券请求异常, {receive_level_gift_response.text}===")
async def swell_coupon(self):
"""
膨胀周周领券活动的优惠券
:return:
"""
privileges_list = await self.inquire_benefits_details()
for privilege in privileges_list:
if privilege.get("name") in ["周周领券", "月月领券"]:
if privilege.get('level_gift') is None:
continue
coupons_list = privilege.get('level_gift', {}).get('coupons', [])
for coupon in coupons_list:
swell_status = coupon.get('swell_status') # 0代表不能膨胀1代表能膨胀,2代表已膨胀、
if swell_status == 1:
fn_print(
f"用户【“{self.user_phone}】, ===开始膨胀{coupon.get('remark')}{coupon.get('coupon_title')}===")
batch_id = coupon.get("batch_id")
coupon_id = coupon.get("coupon_id")
swell_coupon_response = await self.client.post(
url=f"https://member.xiaojukeji.com/dmember/h5/swell_coupon?city_id={self.city_id}",
json={
"token": self.token,
"batch_id": batch_id,
"coupon_id": coupon_id,
"city_id": self.city_id
}
)
if swell_coupon_response.status_code == 200:
swell_coupon_data = swell_coupon_response.json()
if swell_coupon_data.get("errno") == 0:
if swell_coupon_data.get("data", {}).get("is_swell"):
fn_print(f"用户【“{self.user_phone}】, ===膨胀成功🎉===")
continue
else:
fn_print(f"用户【“{self.user_phone}】, ===膨胀失败, {swell_coupon_data}===")
else:
fn_print(f"用户【“{self.user_phone}】, ===膨胀失败, {swell_coupon_data}===")
else:
fn_print(f"===膨胀周周领券请求异常, {swell_coupon_response.text}===")
async def receive_travel_insurance(self):
"""
领取行程意外险
:return:
"""
privileges_list = await self.inquire_benefits_details()
for privilege in privileges_list:
if privilege.get('name') == "行程意外险":
need_received = privilege.get('need_received')
if need_received == 1: # 0为未领取1为已领取
fn_print(f"用户【“{self.user_phone}】, ===已经领取过了行程意外险===")
return
elif need_received == 0:
fn_print(f"用户【“{self.user_phone}】, ===开始领取行程意外险===")
receive_travel_insurance_response = await self.client.post(
url="https://member.xiaojukeji.com/dmember/h5/bindPrivilege",
json={"token": self.token, "type": 3}
)
if receive_travel_insurance_response.status_code == 200:
receive_travel_insurance_data = receive_travel_insurance_response.json()
if receive_travel_insurance_data.get("errno") == 0:
fn_print(f"用户【“{self.user_phone}】, ===领取行程意外险成功🎉===")
else:
fn_print(
f"用户【“{self.user_phone}】, ===领取行程意外险失败, {receive_travel_insurance_data}===")
else:
fn_print(f"===领取行程意外险请求异常, {receive_travel_insurance_response.text}===")
async def receive_memberday_discount_multi(self):
"""
领取周三折上折权益
:return:
"""
privileges_list = await self.inquire_benefits_details()
for privilege in privileges_list:
if privilege.get('name') == "周三折上折":
need_received = privilege.get('need_received')
if need_received == 1: # 0为未领取1为已领取
fn_print(f"用户【“{self.user_phone}】, ===已经领取过了周三折上折===")
return
elif need_received == 0:
fn_print(f"用户【“{self.user_phone}】, ===开始领取周三折上折===")
receive_memberday_discount_multi_response = await self.client.post(
url="https://member.xiaojukeji.com/dmember/h5/receiveMemberDayDiscount",
json={"token": self.token, "privilege_type": 1}
)
if receive_memberday_discount_multi_response.status_code == 200:
receive_memberday_discount_multi_data = receive_memberday_discount_multi_response.json()
if receive_memberday_discount_multi_data.get("errno") == 0:
fn_print(f"用户【“{self.user_phone}】, ===领取周三折上折成功🎉===")
return
else:
fn_print(
f"用户【“{self.user_phone}】, ===领取周三折上折失败, {receive_memberday_discount_multi_data}===")
else:
fn_print(f"===领取周三折上折请求异常, {receive_memberday_discount_multi_response.text}===")
async def receive_wyc_order_finish(self):
"""
领取气泡奖励完单返福利金
:return:
"""
get_bubble_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/home/getBubble",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": "{}"
}
)
get_bubble_data = get_bubble_response.json()
bubble_list = get_bubble_data.get('data', {}).get('bubble_list', [])
for bubble in bubble_list:
if bubble.get('pre_content') == "完单返":
cycle_id = bubble.get('cycle_id')
reward_count = bubble.get('reward_count')
receive_wyc_order_finish_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/welfare/api/action/clickBubble",
json={
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"platform": "na",
"env": "{}",
"cycle_id": cycle_id,
"bubble_type": "wyc_order_finish"
}
)
if receive_wyc_order_finish_response.status_code == 200:
receive_wyc_order_finish_data = receive_wyc_order_finish_response.json()
if receive_wyc_order_finish_data.get("errno") == 0:
fn_print(
f"用户【“{self.user_phone}】, ===领取气泡奖励完单返福利金成功🎉, 获得{reward_count}福利金!===")
return
else:
fn_print(
f"用户【“{self.user_phone}】, ===领取气泡奖励完单返福利金失败, {receive_wyc_order_finish_data}===")
else:
fn_print(f"===领取气泡奖励完单返福利金请求异常, {receive_wyc_order_finish_response.text}===")
async def claim_coupon_check_in(self):
"""
领取天天神券签到
:return:
"""
claim_coupon_check_in_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/janitor/api/action/sign/do",
headers={'Didi-Ticket': self.token}
)
if claim_coupon_check_in_response.status_code == 200:
claim_coupon_check_in_data = claim_coupon_check_in_response.json()
if claim_coupon_check_in_data.get("errno") == 0:
current_progress = claim_coupon_check_in_data.get("data").get("current_progress")
total_progress = claim_coupon_check_in_data.get("data").get("total_progress")
fn_print(
f"用户【“{self.user_phone}】, ===领取天天神券签到成功🎉签到进度:{current_progress}/{total_progress}===")
return
else:
fn_print(f"用户【“{self.user_phone}】, ===领取天天神券签到失败, {claim_coupon_check_in_data}===")
else:
fn_print(f"===领取天天神券签到请求异常, {claim_coupon_check_in_response.text}===")
async def claim_coupon_lottery(self):
"""
天天神券抽奖
:return:
"""
get_draw_times_response = await self.client.post(
url="https://api.didi.cn/webx/chapter/product/init",
headers={'Didi-Ticket': self.token},
json={
"dchn": "dKlklLa",
"args": {
"runtime_args":
{
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"env": {},
"platform": "na",
"Didi-Ticket": self.token,
}
}
}
)
if get_draw_times_response.status_code == 200:
get_draw_times_data = get_draw_times_response.json()
lottery_chance = get_draw_times_data.get('data').get('conf').get('strategy_data').get('data').get(
'lottery_chance')
act_id = get_draw_times_data.get('data').get('conf').get('ext').get('act_conf').get('act_id')
for _ in range(lottery_chance):
lucky_draw_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/janitor/api/action/lottery/doLottery",
headers={'Didi-Ticket': self.token},
json={
"act_id": act_id
}
)
lucky_draw_data = lucky_draw_response.json()
if lucky_draw_data.get("errno") == 0:
fn_print(
f"用户【“{self.user_phone}】, ===抽奖成功🎉, 获得{lucky_draw_data.get('data').get('prize_data')[0].get('name')}===")
await asyncio.sleep(5)
continue
else:
fn_print(f"用户【“{self.user_phone}】, ===天天神券抽奖失败, {lucky_draw_data}===")
return
else:
fn_print(f"===天天神券获取抽奖次数请求异常, {get_draw_times_response.text}===")
async def run_scratch(self):
"""
运行刮刮乐
:return:
"""
if await self.get_carve_up_action_id():
fn_print(f"用户【“{self.user_phone}】, ===开始完成今日瓜分活动===")
if self.status_today == 2:
await self.complete_carve_up_action()
elif self.status_today == 3:
fn_print(f"用户【“{self.user_phone}】, ===今日瓜分活动已完成,无需重复完成!===")
elif self.status_today == 4:
fn_print(f"用户【“{self.user_phone}】, ===今日已领取瓜分活动奖励!===")
else:
fn_print(f"用户【“{self.user_phone}】, ===今日瓜分活动完成失败!肯昨日未报名!===")
fn_print(f"用户【“{self.user_phone}】, ===开始报名明日瓜分活动===")
if self.status_tomorrow == 1:
await self.apply_carve_up_action()
elif self.status_tomorrow == 2:
fn_print(f"用户【“{self.user_phone}】, ===明日瓜分活动已报名,无需重复报名!===")
else:
fn_print(f"用户【“{self.user_phone}】, ===明日瓜分活动报名失败!===")
async def today_pick(self):
"""
每日精选
:return:
"""
get_batch_config_response = await self.client.post(
url="https://api.didi.cn/webx/chapter/page/batch/config",
headers={'Didi-Ticket': self.token},
json={
"dchn": "PxJanq9",
"args": [
{"dchn": "kkXgpzO",
"prod_key": "ut-limited-seckill",
"runtime_args":
{
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"env": {},
"Didi-Ticket": self.token,
}
},
{"dchn": "gL3E8qZ",
"prod_key": "ut-support-coupon",
"runtime_args": {
"token": self.token,
"lat": self.lat,
"lng": self.lng,
"env": {},
"Didi-Ticket": self.token}
}
]
}
)
if get_batch_config_response.status_code == 200:
get_batch_config_data = get_batch_config_response.json()
activity_list = get_batch_config_data.get("data").get("conf")
for activity in activity_list:
if activity.get("dchn") == "gL3E8qZ":
fn_print(f"用户【“{self.user_phone}】, ===开始领取每日精选===")
coupons_list = activity.get("strategy_data").get("data").get("daily_coupon").get("coupons")
coupons_status_name_dict = {
'1': '可领取',
'2': '已经领取',
'4': '已抢光',
'6': '待前置条件完成'
}
for coupon_index, coupon in enumerate(coupons_list):
coupons_name = coupon.get("name")
coupons_status = coupon.get("status") # 1为可领取 2为已经领取 4为抽奖抢券
fn_print(f"==={coupon_index + 1}.券名:{coupons_name} "
f"状态:{coupons_status_name_dict.get(str(coupons_status))}===")
if coupons_status == 1:
fn_print(f"===开始领取券:{coupons_name}===")
activity_id = coupon.get("activity_id")
if coupons_name == "打车5元券":
fn_print(f"用户【{self.user_phone}】, ===【打车5元券】为分享助力才能领券不支持自动领券===")
continue
if activity_id == "10010":
fn_print(
f"用户【{self.user_phone}】, ===该券为明天在目的地栏搜“领券”必得1张快车优惠券不支持自动领取===")
continue
group_id = coupon.get("group_id")
coupon_conf_id = coupon.get("coupon_conf_id")
group_date = coupon.get("group_date")
bind_coupon_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/janitor/api/action/coupon/bind",
headers={'Didi-Ticket': self.token},
json={
'group_date': group_date,
"activity_id": activity_id,
"group_id": group_id,
"coupon_conf_id": coupon_conf_id
}
)
bind_coupon_data = bind_coupon_response.json()
if bind_coupon_data.get("errno") == 0:
fn_print(f"用户【{self.user_phone}】, ===领取成功🎉===")
await asyncio.sleep(0.5)
continue
else:
fn_print(f"用户【{self.user_phone}】, ===领取失败,{bind_coupon_data}===")
return
if activity.get("dchn") == "kkXgpzO":
fn_print(f"用户【“{self.user_phone}】, ===开始领取限时抢===")
seckill_list = activity.get("strategy_data").get("data").get("seckill") # 秒杀列表
seckill_status_name_dict = {
'1': '正在热抢',
'2': '即将开始',
'3': '已经开抢'
}
coupons_status_name_dict = {
'1': '可领取',
'2': '已经领取',
'4': '抽奖抢券',
'5': '未到时间'
}
for seckill in seckill_list:
seckill_name = seckill.get("start_at")
seckill_status = int(seckill.get("status")) # 1为正在热抢 2为即将开始 3为已经开抢
fn_print(f"☆☆场次:{seckill_name} 状态:{seckill_status_name_dict[str(seckill_status)]}")
if seckill_status in [1, 3]:
coupons_list = seckill.get("coupons")
for coupon_index, coupon in enumerate(coupons_list):
coupons_name = coupon.get("name")
coupons_status = coupon.get("status") # 1为可领取 2为已经领取 4为抽奖抢券
fn_print(f"==={coupon_index + 1}.券名:{coupons_name} "
f"状态:{coupons_status_name_dict.get(str(coupons_status))}===")
if coupons_status == 1:
fn_print(f"===开始领取券:{coupons_name}===")
activity_id = coupon.get("activity_id")
group_id = coupon.get("group_id")
coupon_conf_id = coupon.get("coupon_conf_id")
group_date = coupon.get("group_date")
bind_coupon_response = await self.client.post(
url="https://ut.xiaojukeji.com/ut/janitor/api/action/coupon/bind",
headers={'Didi-Ticket': self.token},
json={
"activity_id": activity_id,
"group_id": group_id,
'group_date': group_date,
"coupon_conf_id": coupon_conf_id
}
)
bind_coupon_data = bind_coupon_response.json()
if bind_coupon_data.get("errno") == 0:
fn_print(f"用户【{self.user_phone}】, ===领取成功🎉===")
await asyncio.sleep(0.5)
continue
else:
fn_print(f"用户【{self.user_phone}】, ===领取失败,{bind_coupon_data}===")
return
else:
fn_print(f"===每日精选请求异常, {get_batch_config_response.text}===")
async def run(self):
await self.get_user_info()
fn_print(f"用户【{self.user_phone}】, ===当前福利金数量为:{await self.get_welfare_payments()}===")
task = [
self.today_pick(),
self.sign_in(),
self.run_scratch(),
self.receive_level_gift_week(),
self.receive_level_gift_month(),
self.swell_coupon(),
self.receive_travel_insurance(),
self.receive_memberday_discount_multi(),
self.receive_wyc_order_finish(),
self.claim_coupon_check_in(),
self.claim_coupon_lottery()
]
await asyncio.gather(*task)
fn_print(f"用户【{self.user_phone}】, ===当前福利金数量为:{await self.get_welfare_payments()}===")
async def main():
task = []
for token in dd_tokens:
dd = DiDi(token)
task.append(dd.run())
await asyncio.gather(*task)
if __name__ == '__main__':
asyncio.run(main())
send_notification_message_collection("滴滴出行通知 - {}".format(datetime.datetime.now().strftime("%Y/%m/%d")))