258 lines
11 KiB
Python
258 lines
11 KiB
Python
# -*- coding=UTF-8 -*-
|
||
# @Project QL_TimingScript
|
||
# @fileName hykb.py
|
||
# @author Echo
|
||
# @EditTime 2024/9/20
|
||
import os
|
||
import random
|
||
import re
|
||
import threading
|
||
import urllib.parse
|
||
from datetime import datetime
|
||
|
||
import httpx
|
||
import requests
|
||
|
||
from sendNotify import send_notification_message
|
||
|
||
if 'Hykb_cookie' in os.environ:
|
||
Hykb_cookie = re.split("@", os.environ.get("Hykb_cookie"))
|
||
else:
|
||
Hykb_cookie = []
|
||
print("未查找到Hykb_cookie变量.")
|
||
|
||
|
||
class HaoYouKuaiBao:
|
||
"""好游快爆签到
|
||
"""
|
||
|
||
def __init__(self, cookie):
|
||
self.client = httpx.Client(
|
||
verify=False,
|
||
headers={
|
||
"Origin": "https://huodong3.i3839.com",
|
||
"Referer": "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0",
|
||
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
|
||
}
|
||
)
|
||
self.cookie = cookie
|
||
self.url = "https://huodong3.3839.com/n/hykb/{}/ajax{}.php"
|
||
self.user_name = self.user_info()["user"]
|
||
|
||
def get_index_html(self):
|
||
"""
|
||
获取首页
|
||
:return:
|
||
"""
|
||
url = "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0"
|
||
try:
|
||
response = self.client.get(url)
|
||
return response.text
|
||
except Exception as e:
|
||
print("好游快爆-获取首页出现错误:{}".format(e))
|
||
|
||
def user_info(self):
|
||
"""
|
||
获取用户信息
|
||
:return:
|
||
"""
|
||
url = self.url.format("qdjh", "")
|
||
payload = f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
|
||
try:
|
||
response = self.client.post(url, content=payload).json()
|
||
if response['key'] == 'ok':
|
||
return {
|
||
"user": response["config"]["name"],
|
||
"uuid": response["config"]["uid"]
|
||
}
|
||
except Exception as e:
|
||
print("好游快爆-获取用户信息出现错误:{}".format(e))
|
||
|
||
def plant(self) -> int:
|
||
"""播种
|
||
"""
|
||
url = self.url.format("cornfarm", "_plant")
|
||
payload = f"ac=Plant&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
|
||
try:
|
||
response = self.client.post(url, content=payload).json()
|
||
if response['key'] == 'ok':
|
||
print(f"好游快爆-用户【{self.user_name}】播种成功")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】播种成功")
|
||
return 1
|
||
else:
|
||
if response['seed'] == 0:
|
||
print(f"好游快爆-用户【{self.user_name}】种子已用完")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】种子已用完")
|
||
return -1
|
||
else:
|
||
print(f"好游快爆-用户【{self.user_name}】播种失败")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】播种失败")
|
||
return 0
|
||
except Exception as e:
|
||
print(f"好游快爆-播种出现错误:{e}")
|
||
return False
|
||
|
||
def harvest(self) -> bool:
|
||
"""收获
|
||
"""
|
||
url = self.url.format("cornfarm", "_plant")
|
||
payload = f"ac=Harvest&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
|
||
try:
|
||
response = self.client.post(url, content=payload).json()
|
||
if response['key'] == 'ok':
|
||
print(f"好游快爆-用户【{self.user_name}】收获成功")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】收获成功")
|
||
elif response['key'] == '503':
|
||
print(f"好游快爆-用户【{self.user_name}】{response['info']}")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】{response['info']}")
|
||
else:
|
||
print(f"好游快爆-用户【{self.user_name}】收获失败")
|
||
send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
f"好游快爆-用户【{self.user_name}】收获失败")
|
||
return False
|
||
except Exception as e:
|
||
print(f"好游快爆-收获出现错误:{e}")
|
||
return False
|
||
|
||
def login(self):
|
||
"""登录
|
||
"""
|
||
url = self.url.format("cornfarm", "")
|
||
payload = f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
|
||
response = self.client.post(url, content=payload)
|
||
try:
|
||
response = response.json()
|
||
return response
|
||
except Exception as e:
|
||
print("好游快爆-登录出现错误:{}".format(e))
|
||
|
||
def watering(self):
|
||
"""浇水
|
||
"""
|
||
url = self.url.format("cornfarm", "_sign")
|
||
payload = f"ac=Sign&verison=1.5.7.005&OpenAutoSign=&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6"
|
||
|
||
try:
|
||
response = self.client.post(url, content=payload).json()
|
||
if response['key'] == 'ok':
|
||
print(f"好游快爆-用户【{self.user_name}】浇水成功")
|
||
send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
content=f"好游快爆-用户【{self.user_name}】浇水成功")
|
||
return 1, response['add_baomihua']
|
||
elif response['key'] == '1001':
|
||
print(f"好游快爆-用户【{self.user_name}】今日已浇水")
|
||
send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
content=f"好游快爆-用户【{self.user_name}】今日已浇水")
|
||
return 0, 0
|
||
else:
|
||
print("好游快爆-浇水出现错误:{}".format(response))
|
||
return -1, 0
|
||
except Exception as e:
|
||
print("好游快爆-浇水出现错误:{}".format(e))
|
||
return -1, 0
|
||
|
||
def get_goods(self):
|
||
"""
|
||
获取商品id
|
||
:return:
|
||
"""
|
||
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"
|
||
)
|
||
try:
|
||
j_response = response.json()
|
||
if j_response['code'] == 200:
|
||
return j_response['data']['store_id'], j_response['data']['product_name']
|
||
except Exception as e:
|
||
print("好游快爆-获取商品id出现错误:{}".format(e))
|
||
|
||
def buy_seeds(self):
|
||
"""购买种子
|
||
"""
|
||
# 获取种子商品id
|
||
goods_id, goods_name = self.get_goods()
|
||
l_response = self.client.post(
|
||
url="https://huodong3.3839.com/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"
|
||
).json()
|
||
if l_response['key'] != "200" and l_response['msg'] != "验证通过":
|
||
print("好游快爆-购买种子出现错误:{}".format(l_response))
|
||
return False
|
||
else:
|
||
# 购买种子
|
||
response = self.client.post(
|
||
url="https://huodong3.3839.com/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"
|
||
)
|
||
try:
|
||
j_response = response.json()
|
||
if j_response['key'] == 200:
|
||
print(f"好游快爆-用户【{self.user_name}】购买了【{goods_name}】,还剩下🍿爆米花{j_response['bmh']}个")
|
||
send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"),
|
||
content=f"好游快爆-用户【{self.user_name}】购买了【{goods_name}】,还剩下🍿爆米花{j_response['bmh']}个")
|
||
return True
|
||
else:
|
||
print("好游快爆-购买种子失败:{}".format(j_response))
|
||
return False
|
||
except Exception as e:
|
||
print("好游快爆-购买种子出现错误:{}".format(e))
|
||
return False
|
||
|
||
def sgin(self):
|
||
info = ""
|
||
# 登录
|
||
data = self.login()
|
||
if data['key'] == 'ok':
|
||
print(f"用户: 【{self.user_name}】登录成功!✅")
|
||
# 优先判断是否已收获
|
||
if data['config']['csd_jdt'] == "100%":
|
||
# 收获
|
||
if self.harvest():
|
||
info = info + "收获成功\n"
|
||
else:
|
||
info = info + "收获失败\n"
|
||
|
||
# 判断是否已播种
|
||
if data['config']['grew'] == '-1':
|
||
# 播种
|
||
b = self.plant()
|
||
if b == -1:
|
||
info = info + "播种失败,没有种子\n"
|
||
# 购买种子
|
||
if self.buy_seeds():
|
||
info = info + "购买种子成功\n"
|
||
elif b == 1:
|
||
info = info + "播种成功\n"
|
||
else:
|
||
info = info + "播种失败\n"
|
||
|
||
# 浇水
|
||
data = self.watering()
|
||
if data[0] == 1:
|
||
info = info + f"浇水成功,获得{data[1]}爆米花\n"
|
||
elif data[0] == 0:
|
||
info = info + f"今日已浇水\n"
|
||
else:
|
||
info = info + f"浇水失败\n"
|
||
else:
|
||
info = info + "登录失败\n"
|
||
|
||
return info
|
||
|
||
|
||
if __name__ == '__main__':
|
||
threads = []
|
||
for cookie_ in Hykb_cookie:
|
||
hykb = HaoYouKuaiBao(cookie_)
|
||
thread = threading.Thread(target=hykb.sgin)
|
||
threads.append(thread)
|
||
thread.start()
|
||
for thread in threads:
|
||
thread.join()
|