:feat: 添加免安装即点即玩小游戏任务

- 新增小游戏玩家任务处理逻辑
- 增加小游戏任务的识别和执行
- 添加小游戏任务奖励的领取功能
- 优化了任务执行流程,提高任务处理效率
This commit is contained in:
echo 2024-10-30 10:41:35 +08:00
parent 649d239cdf
commit 72e1461427

View File

@ -33,6 +33,7 @@ class HaoYouKuaiBao:
def __init__(self, cookie):
self.moreManorToDo_tasks = []
self.recommend_task_list = []
self.small_game_task_list = []
self.cookie = cookie
self.headers = {
"Origin": "https://huodong3.i3839.com",
@ -44,7 +45,9 @@ class HaoYouKuaiBao:
verify=False,
headers=self.headers
)
self.user_name = self.__user_info()["user"]
__user_info = self.__user_info()
self.user_name = __user_info.get("user")
self.device = cookie.split("|")[4]
def __user_info(self):
"""
@ -53,14 +56,17 @@ class HaoYouKuaiBao:
"""
try:
u_response = self.client.post(
url="/n/hykb/qdjh/ajax.php",
content=f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
url="/n/hykb/cornfarm/ajax.php",
content=f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}"
).json()
if u_response["key"] == "ok":
if u_response["key"] == "ok" and u_response["loginStatus"] == "100":
return {
"user": u_response["config"]["name"],
"uid": u_response["config"]["uid"]
"uid": u_response["config"]["uid"],
"device_id": u_response["config"]["deviceid"]
}
else:
print("好游快爆-获取用户信息出现错误:{}".format(u_response))
except Exception as e:
print("好游快爆-获取用户信息出现错误:{}".format(e))
@ -72,7 +78,7 @@ class HaoYouKuaiBao:
try:
l_response = self.client.post(
url="/n/hykb/cornfarm/ajax.php",
content=f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
# fn_print("="*10 + f"【{self.user_name}】登录成功" + "="*10)
return l_response
@ -88,7 +94,7 @@ class HaoYouKuaiBao:
try:
w_response = self.client.post(
url="/n/hykb/cornfarm/ajax_sign.php",
content=f"ac=Sign&verison=1.5.7.005&OpenAutoSign=&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=Sign&verison=1.5.7.005&OpenAutoSign=&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if w_response["key"] == "ok":
fn_print("={}=, 浇水成功💧💧💧".format(self.user_name))
@ -112,7 +118,7 @@ class HaoYouKuaiBao:
try:
h_response = self.client.post(
url="/n/hykb/cornfarm/ajax_plant.php",
content=f"ac=Harvest&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=Harvest&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if h_response["key"] == "ok":
fn_print("={}=, 收获成功🌽🌽🌽".format(self.user_name))
@ -132,7 +138,7 @@ class HaoYouKuaiBao:
try:
p_response = self.client.post(
url="/n/hykb/cornfarm/ajax_plant.php",
content=f"ac=Plant&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=Plant&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if p_response["key"] == "ok":
fn_print("={}=, 播种成功🌾🌾🌾".format(self.user_name))
@ -156,7 +162,7 @@ class HaoYouKuaiBao:
try:
s_response = self.client.post(
url="https://shop.3839.com/index.php?c=Index&a=initCard",
content=f"pid=1660&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"pid=1660&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if s_response['code'] == 200:
return s_response['data']['store_id'], s_response['data']['product_name']
@ -173,7 +179,7 @@ class HaoYouKuaiBao:
goods_id, goods_name = await self.get_goods()
cbs_response = self.client.post(
url="/n/hykb/bmhstore2/inc/virtual/ajaxVirtual.php",
content=f"ac=checkExchange&gid={goods_id}&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=checkExchange&gid={goods_id}&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if cbs_response['key'] != "200" and cbs_response['msg'] != "验证通过":
fn_print(f"={self.user_name}=, ❌购买种子出现错误:{cbs_response}")
@ -182,7 +188,7 @@ class HaoYouKuaiBao:
# 购买种子
bs_response = self.client.post(
url="/n/hykb/bmhstore2/inc/virtual/ajaxVirtual.php",
content=f"ac=exchange&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&goodsid={goods_id}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=exchange&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&goodsid={goods_id}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if bs_response['key'] == 200:
fn_print(f"={self.user_name}=, 购买种子成功,还剩下🍿爆米花{bs_response['bmh']}")
@ -215,6 +221,14 @@ class HaoYouKuaiBao:
"reward_num": re.search(r"可得+(.+)", reward_param).group(1)
}
)
elif "免安装、即点即玩" in task_item.select("div.task-info")[0].get_text():
self.small_game_task_list.append(
{
"bmh_task_id": re.search(r"daily_dd_(.+)", id_param).group(1),
"bmh_task_title": title_param,
"reward_num": re.search(r"可得+(.+)", reward_param).group(1)
}
)
async def get_moreManorToDo_task_ids(self):
"""
@ -247,7 +261,7 @@ class HaoYouKuaiBao:
try:
daily_share_response = self.client.post(
url="/n/hykb/cornfarm/ajax_daily.php",
content=f"ac=DailyShare&id={recommend_task['bmh_task_id']}&onlyc=0&r=0.{random.randint(100000000000000, 8999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
content=f"ac=DailyShare&id={recommend_task['bmh_task_id']}&onlyc=0&r=0.{random.randint(100000000000000, 8999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if daily_share_response["key"] != "2002":
return False
@ -255,7 +269,7 @@ class HaoYouKuaiBao:
daily_share_callback_response = self.client.post(
url="/n/hykb/cornfarm/ajax_daily.php",
content=f"ac=DailyShareCallback&id={recommend_task['bmh_task_id']}&mode=qq&source=ds&r=0.{random.randint(100000000000000, 8999999999999999)}"
f"&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
f"&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if daily_share_callback_response["key"] == "ok" and daily_share_callback_response["info"] == "可以领奖":
fn_print(f"={self.user_name}=, 任务-{recommend_task['bmh_task_title']}- 可以领奖了🎉🎉🎉")
@ -270,6 +284,48 @@ class HaoYouKuaiBao:
except Exception as e:
fn_print(f"={self.user_name}=, 调度任务异常:", e)
async def do_small_game_task(self, recommend_task):
"""
免安装即点即玩的小游戏任务
:param recommend_task:
:return:
"""
try:
daily_small_game_response = self.client.post(
url="/n/hykb/cornfarm/ajax_daily.php",
content=f"ac=DailySmallGame&id={recommend_task['bmh_task_id']}&r=0.{random.randint(100000000000000, 8999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if daily_small_game_response["key"] == "ok":
fn_print(f"={self.user_name}=, 小游戏任务🎮🎮🎮-{recommend_task['bmh_task_title']}- 可以领奖了🎉🎉🎉")
return True
else:
fn_print(
f"={self.user_name}=, 小游戏任务🎮🎮🎮-{recommend_task['bmh_task_title']}- ❌游玩小游戏任务失败:{daily_small_game_response}")
return False
except Exception as e:
fn_print(f"={self.user_name}=, 小游戏任务调度任务异常:", e)
async def receive_small_game_reward(self, recommend_task):
"""
领取免安装即点即玩的小游戏任务奖励
:param recommend_task:
:return:
"""
try:
recevie_small_game_reward_response = self.client.post(
url="/n/hykb/cornfarm/ajax_daily.php",
content=f"ac=DailySmallGameLing&id={recommend_task['bmh_task_id']}&VersionCode=342&smdeviceid=BIb2%2B05P0FzEEGiSf%2Fg59Gok28Sb6y1tyhmR8RlC2X0FUtOGCbu3ONvgIEoA2hae0BrOCLXtqoWe1TgeVHU0L7A%3D%3D&verison=1.5.7.507&r=0.{random.randint(100000000000000, 8999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device={self.device}"
).json()
if recevie_small_game_reward_response["key"] == "ok":
fn_print(f"={self.user_name}=, 小游戏任务🎮🎮🎮-{recommend_task['bmh_task_title']}- ✅领取任务奖励成功!")
elif recevie_small_game_reward_response["key"] == "2001":
fn_print(f"={self.user_name}=, 小游戏任务🎮🎮🎮-{recommend_task['bmh_task_title']}- 已经领过奖励了!")
else:
fn_print(
f"={self.user_name}=, 小游戏任务🎮🎮🎮-{recommend_task['bmh_task_title']}- ❌领取任务奖励失败:{recevie_small_game_reward_response}")
except Exception as e:
fn_print(f"={self.user_name}=, 小游戏任务领取奖励异常:", e)
async def receive_commendDaily_reward(self, recommend_task):
"""
领取每日必做推荐任务奖励
@ -280,7 +336,7 @@ class HaoYouKuaiBao:
recevie_daily_reward_response = self.client.post(
url="/n/hykb/cornfarm/ajax_daily.php",
content=f"ac=DailyShareLing&smdeviceid=BTeK4FWZx3plsETCF1uY6S1h2uEajvI1AicKa4Lqz3U7Tt5wKKDZZqVmVr7WpkcEuSQKyiDA3d64bErE%2FsaJp3Q%3D%3D&verison=1.5.7.507&id={recommend_task['bmh_task_id']}&r=0.{random.randint(100000000000000, 8999999999999999)}&scookie={self.cookie}"
f"&device=kbA25014349F11473F467DC6FF5C89E9D6"
f"&device={self.device}"
).json()
if recevie_daily_reward_response["key"] == "ok":
fn_print(f"={self.user_name}=, 任务-{recommend_task['bmh_task_title']}- ✅领取任务奖励成功!")
@ -300,6 +356,15 @@ class HaoYouKuaiBao:
await self.do_tasks_every_day(recommend_task) # 调度任务
await self.receive_commendDaily_reward(recommend_task) # 领取任务奖励
async def process_small_game_task(self, recommend_task):
"""
处理免安装即点即玩的小游戏任务
:param recommend_task:
:return:
"""
await self.do_small_game_task(recommend_task)
await self.receive_small_game_reward(recommend_task)
async def run_task(self):
"""
执行任务
@ -310,6 +375,9 @@ class HaoYouKuaiBao:
for recommend_task in self.recommend_task_list:
if not await self.process_doItRecommendDaily_task(recommend_task):
continue
for small_game_task in self.small_game_task_list:
if not await self.process_small_game_task(small_game_task):
continue
async def run(self):
data = await self.login()