72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
import requests
|
|
import time
|
|
from LuckyUser import LuckyUser
|
|
|
|
|
|
class Lottery:
|
|
ID: int = 0
|
|
isActive = False
|
|
content = ""
|
|
isFinished = False
|
|
luckyUsers = []
|
|
joinedUserCount = 0
|
|
prizeName = ""
|
|
finish:int = 0
|
|
|
|
def __init__(self, json=None):
|
|
if json:
|
|
self.parse(json)
|
|
|
|
def parse(self, json):
|
|
if "lottery_info" in json and json["lottery_info"] is not None:
|
|
self.isActive = int(json["lottery_info"]["status"]) > 0
|
|
self.ID = json["lottery_info"]["lottery_id"]
|
|
for i in json["lottery_info"]['conditions']:
|
|
if i['type'] != 3:
|
|
continue
|
|
self.content = i["content"]
|
|
self.joinedUserCount = int(json["lottery_info"]["candidate_num"])
|
|
self.prizeName = json["lottery_info"]["prize_info"]["name"]
|
|
_delta = int(json["lottery_info"]["draw_time"]) - int(json["lottery_info"]["current_time"])
|
|
self.finish = time.time()+_delta+1
|
|
elif "extra" in json and json["extra"] is not None:
|
|
if "lottery_info" in json["extra"] and json["extra"]["lottery_info"] is not None:
|
|
return self.parse(json["extra"])
|
|
|
|
def update(self):
|
|
if self.isActive:
|
|
if not self.isFinished and self.finish > time.time():
|
|
self.checkFinished()
|
|
return True
|
|
return False
|
|
|
|
def checkFinished(self):
|
|
p = requests.get("https://i.snssdk.com/videolive/lottery/check_user_right?lottery_id={}"
|
|
"&version_code=730&device_platform=android".format(
|
|
self.ID
|
|
))
|
|
d = p.json()
|
|
if d["base_resp"]["status_code"] != 0:
|
|
self.isActive = False
|
|
self.isFinished = False
|
|
return
|
|
self.isActive = int(d["lottery_info"]["status"]) > 0
|
|
self.isFinished = int(d["lottery_info"]["status"]) == 2
|
|
self.joinedUserCount = int(d["lottery_info"]["candidate_num"])
|
|
if self.isFinished:
|
|
for i in d["lottery_info"]["lucky_users"]:
|
|
self.luckyUsers.append(LuckyUser(i))
|
|
|
|
def __str__(self):
|
|
if self.isFinished:
|
|
ret = "恭喜以下中奖用户:\n"
|
|
for i in self.luckyUsers:
|
|
ret += "> {} {}\n".format(i,self.prizeName)
|
|
ret += "> 参与人数:{}".format(self.joinedUserCount)
|
|
return ret
|
|
elif self.isActive:
|
|
return "正在抽奖中。。。\n" \
|
|
"> 参与人数:{}".format(self.joinedUserCount)
|
|
else:
|
|
return "抽奖已失效"
|