Continue seeded Qinglong script collection

This commit is contained in:
Hermes Agent
2026-05-24 05:33:05 +00:00
parent ca1a4275e4
commit b082da3fe1
392 changed files with 131619 additions and 7 deletions

View File

@@ -0,0 +1,964 @@
# Source: https://github.com/xfmeng970526/ql/blob/main/0629dy.py
# Raw: https://raw.githubusercontent.com/xfmeng970526/ql/main/0629dy.py
# Repo: xfmeng970526/ql
# Path: 0629dy.py
# UploadedAt: 2023-09-20T12:13:28+08:00
# SHA256: 2fc2cb5baa77102116a09e10f1c96acc2713ee5d51fd44bb063ddb4c088a8d0d
# Category: 微信小程序/抓包版
# Evidence: appid/openid/session_key/encryptedData等小程序字段
# coding=utf-8
cron: * 37 0-23 * * *
new Env('104-抖音极速版');
# 06-29 脚本发布地址 https://pc.fenchuan8.com/#/index?forum=38406 qq群号115194038
# 极速版-安卓
# 抓包内容 逛街一次 抓包done/shopping_gold?mode=done
# 如果逛街多可以用逛街,没有逛街或者逛街金币少 抓开宝箱的
# 全部的url#cookie#argus#ladon
# 自己填写ua可以更改剩余水滴数量
import json
import os
import random
import re
import time
import requests
from jsonsearch import JsonSearch
if os.name == 'nt':
from dotenv import load_dotenv
try:
load_dotenv(dotenv_path='dy_cookie.env', verbose=True)
except EnvironmentError:
print(EnvironmentError)
cookies = os.getenv('android_dyjsb') # 变量名
ua = 'com.ss.android.ugc.aweme.lite/250101 (Linux; U; Android 10; zh_CN_#Hans; LIO-AN00; Build/HUAWEILIO-AN00;tt-ok/3.12.13.1)'
debug_mode = 0
remain_water_num = 50 # 剩余水滴数
exec_orchard = True # 是否执行果园默认True执行
# 任务执行时间
task_schedule = {
'origin_task': '00:00:00-23:59:00',
'orchard_task': '000:00:00-23:59:00'
}
referer = 'https://tmaservice.developer.toutiao.com/?appid=tt521124accd2b7abe&version=0.5.23'
class User:
sdk_version = '2'
passport_sdk_version = '203100'
sign_completed = None
ad_req_id = None
ad_completed = None
team_info_arr = None
shopping_completed = None
treasure_box_req_id = ''
treasure_box_amount = 0 # 开宝箱获得的金币
treasure_box_score_amount = 0 # 开宝箱看广告获得的金币
treasure_box_next_time = None
amount = 0
water_num = None
bottle_state = None
exec_shopping = False
shake_tree = False
def __init__(self, cookie1):
self.task_url = cookie1.split("#")[0]
self.cookie = cookie1.split("#")[1]
self.argus = cookie1.split("#")[2]
self.ladon = cookie1.split("#")[3]
self.params = re.findall('\?(.*?)$', self.task_url)[0]
try:
temp = self.params
if temp.rfind('mode=done&') != -1:
self.clear_mode_params = re.findall('mode=done&(.*?)$', self.params)[0]
self.exec_shopping = True
else:
self.clear_mode_params = temp
except Exception:
print('url中没有mode=done')
def find_params(self):
json_data = JsonSearch(object=self.get_info(), mode='j')
task_list_arr = json_data.search_all_value('task_list')
task_list_path_arr = json_data.search_all_path('task_list')
treasure_box_info = json_data.search_first_value('treasure_box')
task_list = []
for t in task_list_arr:
if len(t) != 0:
task_list = t
task = {
'task_list': task_list
}
json_data = JsonSearch(object=task, mode='j')
task_id_arr = json_data.search_all_value('task_id')
task_id_dict = {
'新人签到': 1332,
'签到': 203,
'逛街赚钱': 1334,
'吃饭打卡赚金币': 1095,
'浏览爆款赚金币': 1455,
'搜索赚金币': 1495,
'看广告赚金币': 111,
'看小说赚金币': 1313,
'逛商城赚金币': 130024,
'逛热销爆品赚金币': 130003,
'看视频赚金币': 1007
}
try:
if task_id_dict.get('逛街赚钱') in task_id_arr:
shopping_info = task_list[task_id_arr.index(task_id_dict.get('逛街赚钱'))]
shopping_info_desc = shopping_info.get('desc')
shopping_max_count = re.findall('/([0-9]*)', shopping_info_desc)[0]
shopping_cur_count = re.findall('([0-9]*)/', shopping_info_desc)[0]
if shopping_cur_count == shopping_max_count:
self.shopping_completed = True
else:
self.shopping_completed = False
if task_id_dict.get('签到') in task_id_arr:
sign_info = task_list[task_id_arr.index(task_id_dict.get('签到'))]
else:
sign_info = task_list[task_id_arr.index(task_id_dict.get('新人签到'))]
sign_completed = sign_info.get('completed')
ad_info = task_list[task_id_arr.index(task_id_dict.get('看广告赚金币'))]
ad_completed = ad_info.get('completed')
ad_req_id = (json.loads(ad_info.get('status_extra'))).get('req_id')
# treasure_box_cur_time = treasure_box_info.get('treasure_stats').get('cur_time')
treasure_box_next_time = treasure_box_info.get('treasure_stats').get('next_time')
self.sign_completed = sign_completed
self.ad_completed = ad_completed
self.ad_req_id = ad_req_id
self.treasure_box_next_time = treasure_box_next_time
except:
print('【find_params 异常】')
def struct_requests(self, method, url, payload, referer):
# url 为完整的url
host = re.findall('https://(.*?)/', url)[0]
proxies = {
"http": None,
"https": None,
}
if method == 'get':
headers = {
'Host': host,
'User-Agent': ua,
'Connection': 'keep-alive',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'sdk-version': self.sdk_version,
'passport-sdk-version': self.passport_sdk_version,
'Cookie': self.cookie
}
if referer is not None:
headers['referer'] = referer
response = requests.get(url=url, headers=headers, proxies=proxies)
if debug_mode == 1:
print(response.text)
return response.json()
elif method == 'post':
headers = {
'Host': host,
'User-Agent': ua,
'Connection': 'keep-alive',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate',
'sdk-version': self.sdk_version,
'passport-sdk-version': self.passport_sdk_version,
'x-argus': self.argus,
'x-ladon': self.ladon,
'Cookie': self.cookie
}
if referer is not None:
headers['referer'] = referer
if payload is not None:
headers['content-length'] = str(len(payload))
response = requests.post(url=url, headers=headers, data=payload, proxies=proxies)
else:
response = requests.post(url=url, headers=headers, proxies=proxies)
return response.json()
def get_info(self):
time.sleep(random.uniform(2, 5))
url = f"https://api5-normal-c-lf.amemv.com/luckycat/aweme/v1/task/page?" + self.params
response = self.struct_requests(method='get', url=url, payload=None, referer=None)
if debug_mode == 1:
print(response)
if response.get('err_no') == 0:
amount = response.get('data').get('income_data').get('amount1')
cash_amount = response.get('data').get('income_data').get('amount2')
total_amount = cash_amount * 100 + amount
cash_amount = ('%.2f' % (cash_amount / 100))
total_amount = ('%.2f' % (total_amount / 10000))
print(f'【查询信息】今日金币{amount},现金{cash_amount},总额{total_amount}')
if debug_mode == 1:
print(response.get("data").get("is_login"))
return response
else:
print('【查询信息】' + response.get('err_tips'))
def task(self, task_key):
temp = task_key
from_task_key = None
if task_key.rfind('#') != -1:
from_task_key = task_key[task_key.rfind('#') + 1:]
task_key = task_key[:task_key.rfind('#')]
url = f'https://api3-normal-c.amemv.com/luckycat/aweme/v1/task/{task_key}?' + self.params
task_key = temp
if task_key == 'done/sign_in':
time.sleep(random.uniform(3, 5))
payload = json.dumps({})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print(res)
if res.get('err_no') == 0:
amount = res.get('data').get('amount')
print(f"【签到】获得{amount}金币")
self.amount += amount
return 1
else:
print('【签到】' + res.get('err_tips'))
elif task_key == 'done/excitation_ad':
# 每5分钟完成一次广告任务
# 获取广告金币数量
amount = self.task('excitation_ad/detail')
time.sleep(random.uniform(15, 25))
payload = json.dumps({
"amount": str(amount),
"inspire_modal_add_modal_manage": False,
"ad_rit": "12315",
"ad_inspire": {
"score_amount": str(amount),
"experience": "-1",
"req_id": str(self.ad_req_id)
},
"task_key": "excitation_ad",
"stage_score_amount": [],
"ad_alias_position": "task",
"need_reward": True,
"experience": "-1",
"params_for_special": "luckydog_sdk",
"static_settings_version": 50,
"dynamic_settings_version": 50,
"poll_settings_version": 0,
"aggr_income_id": ""
})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
# print(res)
if debug_mode == 1:
print(res)
if res.get('err_no') == 0:
# if 'data' in res and 'amount' in res.get('data'):
amount = res.get('data').get('amount')
print(f"【看广告赚金币】第1个视频获得{amount}金币")
self.amount += amount
return 1
else:
print('【看广告赚金币】' + res.get('err_tips'))
return 0
elif task_key == 'done/treasure_task':
time.sleep(random.uniform(3, 5))
payload = json.dumps({})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print('------【开宝箱】------')
print(res)
print('------------')
if res.get('err_no') == 0:
if 'data' in res and 'amount' in res.get('data'):
self.treasure_box_amount = res.get('data').get('amount')
self.treasure_box_score_amount = res.get('data').get('excitation_ad_info').get('score_amount')
self.treasure_box_req_id = res.get('data').get('excitation_ad_info').get('req_id')
print(f"【开宝箱】获得{self.treasure_box_amount}金币")
self.amount += self.treasure_box_amount
return 1
return 0
else:
print('【开宝箱】' + res.get('err_tips'))
return 0
elif task_key == 'done/excitation_ad_treasure_box':
# 看宝箱第一个广告
time.sleep(random.uniform(20, 25))
payload = json.dumps({
"amount": str(self.treasure_box_score_amount),
"inspire_modal_add_modal_manage": False,
"cat_treasure_reward": 0,
"ad_rit": "12317",
"ad_inspire": {
"score_amount": str(self.treasure_box_score_amount),
"amount": str(self.treasure_box_amount),
"req_id": str(self.treasure_box_req_id)
},
"task_key": "excitation_ad_treasure_box",
"stage_score_amount": [],
"ad_alias_position": "box",
"need_reward": True,
"finish_action": 0,
"params_for_special": "luckydog_sdk",
"static_settings_version": 50,
"dynamic_settings_version": 50,
"poll_settings_version": 0,
"aggr_income_id": ""
})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print('------【宝箱】第1个视频------')
print(res)
print('------------')
if res.get('err_no') == 0:
amount = res.get('data').get('amount')
# print(amount)
print(f"【宝箱】第1个视频获得{amount}金币")
self.amount += amount
return 1
else:
print('【宝箱】第1个视频' + res.get('err_tips'))
return 0
elif task_key == 'done/excitation_ad/one_more#excitation_ad':
for rid in range(2):
time.sleep(random.uniform(20, 25))
payload = json.dumps({
"task_key": from_task_key,
"rit": "28038",
"creator_id": "12315000",
"one_more_round": rid,
"aggr_income_id": ""
})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print(f'------【看广告赚金币】第{2 + rid}个视频------')
print(res)
print('------------')
if res.get('err_no') == 0:
amount = res.get('data').get('amount')
# print(amount)
print(f"【看广告赚金币】第{2 + rid}个视频获得{amount}金币")
self.amount += amount
else:
print(f'【看广告赚金币】第{2 + rid}个视频:' + res.get('err_tips'))
break
elif task_key == 'done/excitation_ad/one_more#excitation_ad_treasure_box':
for rid in range(2):
time.sleep(random.uniform(20, 25))
payload = json.dumps({
"task_key": from_task_key,
"rit": "28038",
"creator_id": "12317000",
"one_more_round": rid,
"aggr_income_id": ""
})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print(f'------【宝箱】第{2 + rid}个视频------')
print(res)
print('------------')
if res.get('err_no') == 0:
amount = res.get('data').get('amount')
# print(amount)
print(f"【宝箱】第{2 + rid}个视频获得{amount}金币")
self.amount += amount
else:
print(f'【宝箱】第{2 + rid}个视频' + res.get('err_tips'))
break
elif task_key == 'done/shopping_gold':
# 逛街赚金币
time.sleep(random.uniform(30, 40))
payload = 'body=null'
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
if debug_mode == 1:
print('------【逛街赚金币】------')
print(res)
print('------------')
if res.get('err_no') == 0:
if 'data' in res and 'amount' in res.get('data'):
amount = res.get('data').get('amount')
print(f"【逛街赚金币】获得{amount}金币")
self.amount += amount
return 1
return 0
else:
print('【逛街赚金币】' + res.get('err_tips'))
return 0
elif task_key == 'walk/step_submit':
payload = json.dumps({
"step": 300,
"submit_time": int(time.time()),
"in_sp_time": 0
})
res = self.struct_requests(method='post', url=url, payload=payload, referer=None)
# print(res)
if res.get('err_no') == 0:
return 1
# else:
# print(f'【上传步数】没有返回金币数量')
# return 0
else:
print(f'【上传步数】' + res.get('err_tips'))
return 0
# ======================================== get方法 ====================================
elif task_key == 'excitation_ad/detail':
time.sleep(random.uniform(2, 5))
res = self.struct_requests(method='get', url=url, payload=None, referer=None)
if res.get('err_no') == 0:
if res.get('data').get('score_amount') is not None:
return res.get('data').get('score_amount')
else:
print(f'【获取第1个广告】没有返回金币数量')
return 0
else:
print(f'【获取第1个广告错误】' + res.get('err_tips'))
return 0
elif task_key == 'walk/page':
time.sleep(random.uniform(3, 6))
try:
time.sleep(random.uniform(2, 5))
res = self.struct_requests(method='get', url=url, payload=None, referer=None)
# print(res)
if res.get('err_no') == 0:
if 'data' in res and 'today_step' in res.get('data'):
today_step = res.get('data').get('today_step')
return today_step
else:
print(f'【获取步数】没有返回步数')
return -1
else:
print(f'【获取步数】' + res.get('err_tips'))
return -1
except Exception:
print('【walk/page】函数异常')
# =================================果园 ===============================
def game_orchard_task_list(self):
# 查询果园任务
time.sleep(random.uniform(3, 5))
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/tasks/list?' + self.clear_mode_params
try:
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
if res.get('status_code') == 0:
task_list = res.get('data').get('tasks')
task_except_list = ['领取一次组队奖励', '分享找到的水滴给好友', '邀请好友种树领水滴',
'购买优惠好物', '体验道具拍视频']
todo_task_list = []
for t in task_list:
id = t.get('id')
state = t.get('reward_item').get('state')
action = t.get('action')
name = t.get('name')
if name not in task_except_list and state == 3:
todo_task_list.append(f'{id}#{action}')
# 返回格式为 id#action的list
return todo_task_list
else:
print('【果园 查询水滴任务】' + res.get('message'))
except AttributeError:
print('get值错误')
except Exception:
print('game_orchard_task_list 异常')
def game_orchard_sign_in_reward(self):
time.sleep(random.uniform(2, 4))
try:
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/sign_in/reward?watch_ad=1&extra_ad_num=0&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
cur_water_num = res.get('data').get('kettle').get('water_num')
cur_fertilizer_lite = res.get('data').get('fertilizer').get('lite')
cur_fertilizer_normal = res.get('data').get('fertilizer').get('normal')
print(f'【果园 签到】获得{reward_num}{reward_name}')
print(f'当前水滴{cur_water_num},小化肥{cur_fertilizer_lite},大化肥{cur_fertilizer_normal}')
else:
print('【果园 签到】' + res.get('message'))
except Exception:
print('game_orchard_sign_in_reward 异常')
def game_orchard_tasks_reward(self, todo_task_list):
# 做果园水滴任务
try:
for t in todo_task_list:
t_id = re.findall('^(.*?)#', t)[0]
t_action = re.findall('#(.*?)$', t)[0]
time.sleep(random.uniform(15, 30))
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/tasks/reward?task_id={t_id}&do_action={t_action}&extra_ad_num=0&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
cur_water_num = res.get('data').get('kettle').get('water_num')
cur_fertilizer_lite = res.get('data').get('fertilizer').get('lite')
cur_fertilizer_normal = res.get('data').get('fertilizer').get('normal')
print(f'【果园 任务】获得{reward_num}{reward_name}')
print(f'当前水滴{cur_water_num},小化肥{cur_fertilizer_lite},大化肥{cur_fertilizer_normal}')
else:
print('【果园 任务】' + res.get('message'))
except Exception:
print('game_orchard_tasks_reward 异常')
def game_orchard_water_bottle_reward(self):
# 领取水瓶的水
time.sleep(random.uniform(2, 4))
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/water_bottle/reward?' + self.clear_mode_params
try:
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
cur_water_num = res.get('data').get('kettle').get('water_num')
cur_fertilizer_lite = res.get('data').get('fertilizer').get('lite')
cur_fertilizer_normal = res.get('data').get('fertilizer').get('normal')
print(f'【果园 领取水瓶的水】获得{reward_num}{reward_name}')
print(f'当前水滴{cur_water_num},小化肥{cur_fertilizer_lite},大化肥{cur_fertilizer_normal}')
else:
print('【果园 领取水瓶的水】' + res.get('message'))
except AttributeError:
print('get值错误')
except Exception:
print('【果园 领取水瓶的水】异常')
def game_orchard_tree_water(self, water_count):
# 可以查询果树所有信息
# three_water_resp.state == 4完成未领取 ==5已领取
# three_water_resp.times 浇水宝箱剩余浇水次数
# 浇水
try:
for count in range(water_count):
time.sleep(random.uniform(2, 4))
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/tree/water?' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
# 最后一次打印明日领取水瓶的水的信息
if res.get('status_code') == 0:
cur_water_num = res.get('data').get('kettle').get('water_num')
today_watered_count = res.get('data').get('today_water')
progress_current = res.get('data').get('progress').get('current')
progress_target = res.get('data').get('progress').get('target')
bottle = res.get('data').get('bottle').get('water_num')
bottle_time = res.get('data').get('bottle').get('availiable_time')
three_water_resp_status = res.get('data').get('three_water_resp').get('state')
three_water_resp_remain_times = res.get('data').get('three_water_resp').get('times')
print(f'【果园】浇水1次成功,剩余水滴{cur_water_num}')
progress = "{:.2f}".format((progress_current / progress_target) * 100)
print(f'今日共浇水{today_watered_count}次,进度{progress}%')
shake_tree_state = res.get('data').get('shake_tree_state')
if self.shake_tree and (shake_tree_state == 2 or shake_tree_state == 3):
self.game_orchard_fortune_tree_shake()
# 需要完善摇树
if three_water_resp_remain_times != 0:
print(f'再浇水{three_water_resp_remain_times}次可领取浇水宝箱奖励')
elif three_water_resp_status == 4 and three_water_resp_remain_times == 0:
print('可领取浇水宝箱奖励')
self.game_orchard_three_water_reward()
else:
print('【果园】浇水1次' + res.get('message'))
break
except Exception:
print('game_orchard_tree_water 异常')
def game_orchard_three_water_reward(self):
time.sleep(random.uniform(2, 4))
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/three_water/reward?' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
if res.get('status_code') == 0:
# 空
print('【果园 领取浇水宝箱奖励】成功')
else:
print('【果园 领取浇水宝箱奖励】' + res.get('message'))
def game_orchard_team_list(self):
# 组队领化肥
# 组队列表查询
try:
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/team/list?open=open' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
if res.get('status_code') == 0:
reward_items_list = res.get('data').get('tasks').get('reward_items')
team_info_list = res.get('data').get('team_info')
todo_team_reward_dic = {} # 去领取团队奖励的dic
todo_token_list = [] # 好友的token
for l in reward_items_list:
if l.get('state') == 4:
todo_team_reward_dic[l.get('id')] = l.get('type')
for lindex in range(len(team_info_list)):
if lindex == 0:
continue
info = team_info_list[lindex]
if len(info.get('sec_uid')) > 0:
todo_token_list.append(info.get('token'))
# 执行组队奖励领取
todo_team_reward_dic_keys = todo_team_reward_dic.keys()
for key in todo_team_reward_dic_keys:
do_action = key
reward_type = todo_team_reward_dic.get(key)
self.game_orchard_team_reward(reward_type, do_action)
if len(todo_team_reward_dic) != 0:
time.sleep(random.uniform(4, 8))
return todo_token_list
else:
print('【组队列表查询】' + res.get('message'))
except Exception:
print('game_orchard_team_list 异常')
def game_orchard_team_reward(self, reward_type, do_action):
time.sleep(random.uniform(3, 5))
try:
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/team/reward?type={reward_type}&do_action={do_action}&token=null&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
type_and_name = {
1: '水滴',
4: '小化肥'
}
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_type = int(res.get('data').get('reward_item').get('type'))
cur_water_num = res.get('data').get('kettle').get('water_num')
cur_fertilizer_lite = res.get('data').get('fertilizer').get('lite')
cur_fertilizer_normal = res.get('data').get('fertilizer').get('normal')
print(f'【果园 组队奖励领取】获得{reward_num}{type_and_name.get(reward_type)}')
print(f'当前水滴{cur_water_num},小化肥{cur_fertilizer_lite},大化肥{cur_fertilizer_normal}')
else:
print('【果园 组队奖励领取】' + res.get('message'))
except Exception:
print('game_orchard_team_reward 异常')
def game_orchard_team_find_water(self, friend_token):
time.sleep(random.uniform(3, 5))
try:
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/team/find_water?token={friend_token}&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
friend_name = res.get('data').get('nick_name')
print(f'【果园 好友果园】好友:{friend_name}')
water_list = res.get('data').get('water_list')
return water_list
else:
print('【果园 好友果园】' + res.get('message'))
except Exception:
print('game_orchard_team_find_water 异常')
def game_orchard_team_gain_water(self, water_index, water_type, friend_token):
time.sleep(random.uniform(3, 5))
try:
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/team/gain_water?water_index={water_index}&water_type={water_type}&token={friend_token}&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
print(f'【果园 去好友果园】获得{reward_num}{reward_name}')
return 1
else:
print('【果园 去好友果园】' + res.get('message'))
return 0
except Exception:
print('game_orchard_team_gain_water 异常')
def game_orchard_fortune_tree_shake(self):
time.sleep(random.uniform(2, 5))
try:
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/fortune_tree/shake?' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
print(f'【果园 摇树】获得{reward_num}{reward_name}')
else:
print('【果园 摇树】' + res.get('message'))
except Exception:
print('game_orchard_fortune_tree_shake 异常')
# 待完善
def game_orchard_three_gift_reward(self, task_id, watch_ad_type):
time.sleep(random.uniform(15, 20))
# task_id 0 早
# task_id 1 中
# task_id 2 晚
three_dift_dic = {
'1': '早餐',
'2': '午餐',
'3': '晚餐'
}
try:
url = f'https://minigame.zijieapi.com/ttgame/game_orchard/three_gift/reward?task_id={task_id}&watch_ad={watch_ad_type}&extra_ad_num=0&' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
reward_num = res.get('data').get('reward_item').get('num')
reward_name = res.get('data').get('reward_item').get('name')
cur_water_num = res.get('data').get('kettle').get('water_num')
cur_fertilizer_lite = res.get('data').get('fertilizer').get('lite')
cur_fertilizer_normal = res.get('data').get('fertilizer').get('normal')
print(f'【果园 三餐礼包{three_dift_dic.get(task_id)}】获得{reward_num}{reward_name}')
print(f'当前水滴{cur_water_num},小化肥{cur_fertilizer_lite},大化肥{cur_fertilizer_normal}')
else:
print('【果园 三餐礼包】' + res.get('message'))
except Exception:
print('game_orchard_three_gift_reward 异常')
def game_orchard_polling_info_write(self):
time.sleep(random.uniform(2, 5))
try:
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/polling_info_write?' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
if res.get('status_code') == 0:
if 'kettle' in res.get('data') and 'water_num' in res.get('data').get('kettle'):
water_num = res.get('data').get('kettle').get('water_num')
self.water_num = water_num
if 'bottle' in res.get('data') and 'state' in res.get('data').get('bottle'):
bottle_state = res.get('data').get('bottle').get('state')
# print(f'【果园】当前水瓶状态{bottle_state}')
self.bottle_state = bottle_state
else:
print('【果园 信息查询】' + res.get('message'))
except Exception:
print('game_orchard_polling_info_write 异常')
def game_orchard_three_gift_list(self):
# 三餐礼包查询
time.sleep(random.uniform(2, 5))
try:
url = 'https://minigame.zijieapi.com/ttgame/game_orchard/three_gift/list?' + self.clear_mode_params
res = self.struct_requests(method='get', url=url, payload=None, referer=referer)
# print(res)
if res.get('status_code') == 0:
if 'data' in res and 'gift_list' in res.get('data'):
three_gift_list = res.get('data').get('gift_list')
three_gift_dic = {}
for l in three_gift_list:
# 查询未领取的三餐礼包
if l.get('current_rounds') == 0:
begin = l.get('available_time').get('begin')
end = l.get('available_time').get('end')
three_gift_dic[l.get('id')] = f'{begin}#{end}'
return three_gift_dic
else:
print('【果园 三餐礼包查询】' + res.get('message'))
except Exception:
print('game_orchard_three_gift_list 异常')
def run_test(self):
# 测试
self.game_orchard_sign_in_reward()
todo_task_list = self.game_orchard_task_list()
self.game_orchard_tasks_reward(todo_task_list)
todo_token_list = self.game_orchard_team_list()
for token in todo_token_list:
friend_orchard_water_list = self.game_orchard_team_find_water(token)
todo_friend_orchard_dic = {}
for l_index in range(len(friend_orchard_water_list)):
item = friend_orchard_water_list[l_index]
if item.get('has_gain') is False:
todo_friend_orchard_dic[l_index] = friend_orchard_water_list[l_index].get('type')
# 要执行的好友 key = index, value = type
if len(todo_friend_orchard_dic) == 0:
continue
keys = todo_friend_orchard_dic.keys()
for key in keys:
water_type = todo_friend_orchard_dic.get(key)
if self.game_orchard_team_gain_water(water_index=key, water_type=water_type,
friend_token=token) == 0:
break
time.sleep(random.uniform(5, 10))
three_gift_dic = self.game_orchard_three_gift_list()
print(three_gift_dic)
three_gift_keys = three_gift_dic.keys()
for key in three_gift_keys:
# 判断当前时间
task_hour = three_gift_dic.get(key)
task_id = key
start_hour = int(re.findall('^(.*?)#', task_hour)[0])
end_hour = int(re.findall('#(.*?)$', task_hour)[0])
format_hour = int(time.strftime('%H'))
format_minute_and_second = time.strftime('%M:%S')
# 执行正常领取
if start_hour <= format_hour < end_hour:
self.game_orchard_three_gift_reward(task_id, 1)
# 执行补领
elif format_hour >= end_hour and format_minute_and_second > '00:00':
self.game_orchard_three_gift_reward(task_id, 2)
time.sleep(random.uniform(5, 10))
def game_orchard_run(self):
format_time = time.strftime('%H:%M:%S')
# ==================== 领取水滴 ======================
# 签到 时间段06:00:00-08:00:00
if '06:00:00' <= format_time <= '08:00:00':
self.game_orchard_sign_in_reward()
# 水滴任务 时间段:08:00:00-10:00:00 14:00:00-16:00:00
if '08:00:00' <= format_time <= '10:00:00' or '14:00:00' <= format_time <= '16:00:00':
todo_task_list = self.game_orchard_task_list()
self.game_orchard_tasks_reward(todo_task_list)
# 去好友果园获取水滴 07:00:00-08:00:00 16:00:00-17:00:00
if '09:00:00' <= format_time <= '10:00:00' or '16:00:00' <= format_time <= '17:00:00':
todo_token_list = self.game_orchard_team_list()
for token in todo_token_list:
friend_orchard_water_list = self.game_orchard_team_find_water(token)
todo_friend_orchard_dic = {}
for l_index in range(len(friend_orchard_water_list)):
item = friend_orchard_water_list[l_index]
if item.get('has_gain') is False:
todo_friend_orchard_dic[l_index] = friend_orchard_water_list[l_index].get('type')
# 要执行的好友 key = index, value = type
if len(todo_friend_orchard_dic) == 0:
continue
keys = todo_friend_orchard_dic.keys()
for key in keys:
water_type = todo_friend_orchard_dic.get(key)
if self.game_orchard_team_gain_water(water_index=key, water_type=water_type,
friend_token=token) == 0:
break
time.sleep(random.uniform(5, 10))
if ('07:00:00' <= format_time <= '09:00:00') or ('11:00:00' <= format_time <= '14:00:00') or (
'18:00:00' <= format_time <= '21:00:00'):
three_gift_dic = self.game_orchard_three_gift_list()
if three_gift_dic is not None:
three_gift_keys = three_gift_dic.keys()
for key in three_gift_keys:
# 判断当前时间
task_hour = three_gift_dic.get(key)
task_id = key
start_hour = int(re.findall('^(.*?)#', task_hour)[0])
end_hour = int(re.findall('#(.*?)$', task_hour)[0])
format_hour = int(time.strftime('%H'))
format_minute_and_second = time.strftime('%M:%S')
# 执行正常领取
if start_hour <= format_hour < end_hour:
self.game_orchard_three_gift_reward(task_id, 1)
# 执行补领
elif format_hour >= end_hour and format_minute_and_second > '00:00':
self.game_orchard_three_gift_reward(task_id, 2)
time.sleep(random.uniform(5, 10))
# ==================== 浇水 ======================
# 查询
self.game_orchard_polling_info_write()
# 领取水瓶的水 08:00:00-10:00:00
if '08:00:00' <= format_time <= '10:00:00':
if self.bottle_state is not None and self.bottle_state != 3:
self.game_orchard_water_bottle_reward()
water_num = self.water_num
print(f'【果园】当前水滴{water_num}')
# 剩余水 其余全部浇水
water_count = int((water_num - remain_water_num) / 10)
# 浇水
self.game_orchard_tree_water(water_count)
print(f'【果园】已设置剩余水量{remain_water_num},不再浇水')
def origin_run(self):
if self.sign_completed:
print('【签到】已完成')
else:
self.task('done/sign_in')
if self.ad_completed:
print('【看广告赚金币】已完成')
else:
if self.task('done/excitation_ad'):
self.task('done/excitation_ad/one_more#excitation_ad')
cur_time = time.time()
if cur_time < self.treasure_box_next_time:
local_time = time.localtime(self.treasure_box_next_time)
formatted_time = time.strftime('%Y-%m-%d %H:%M:%S', local_time)
print(f'【开宝箱】时间未到,在{formatted_time}开宝箱')
else:
if self.task('done/treasure_task'): # 开宝箱
if self.task('done/excitation_ad_treasure_box'): # 看宝箱广告
self.task('done/excitation_ad/one_more#excitation_ad_treasure_box')
# 逛街任务
if self.shopping_completed is None or self.exec_shopping is False:
print('【逛街赚金币】不执行')
elif self.shopping_completed:
print('【逛街赚金币】已完成')
elif self.exec_shopping and self.shopping_completed is False:
self.task('done/shopping_gold')
def run(self):
origin_task_time = task_schedule.get('origin_task')
origin_task_time_start = re.findall('^(.*?)-', origin_task_time)[0]
origin_task_time_end = re.findall('-(.*?)$', origin_task_time)[0]
format_time = time.strftime('%H:%M:%S')
if origin_task_time_start <= format_time <= origin_task_time_end:
self.find_params()
self.origin_run()
print(f'本次执行获得{self.amount}金币')
else:
print('不在普通任务执行时间')
orchard_task_time = task_schedule.get('orchard_task')
orchard_task_time_start = re.findall('^(.*?)-', orchard_task_time)[0]
orchard_task_time_end = re.findall('-(.*?)$', orchard_task_time)[0]
if exec_orchard and orchard_task_time_start <= format_time <= orchard_task_time_end:
print('等待执行果园任务')
time.sleep(random.uniform(8, 20))
self.game_orchard_run()
elif exec_orchard is False:
print('设置不执行果园任务')
else:
print('不在果园任务执行时间')
if __name__ == "__main__":
user_cookie = cookies.split('\n')
print(f"极速版共获取到{len(user_cookie)}个账号")
i = 0
for cookie in user_cookie:
print(f"=========开始第{i + 1}个账号=========")
User(cookie).run()
if i != len(user_cookie) - 1:
i += 1
wait_time = random.randint(60, 150)
print(f'等待{wait_time}s')
time.sleep(wait_time)