bhyg-decomp/utility.py
2024-07-01 00:27:51 +08:00

196 lines
7.5 KiB
Python

# Copyright (c) 2023-2024 ZianTT, FriendshipEnder
import inquirer
import requests
from loguru import logger
from utils import prompt, save, load
from i18n import *
from globals import *
def utility(config):
import base64
def add_buyer(headers):
name = input(i18n_gt()["buyer_name"])
id_type = prompt([inquirer.List("id_type", message=i18n_gt()["id_type"],
choices=[i18n_gt()["id_idcard"],
i18n_gt()["id_passport"],
i18n_gt()["id_Hong_Kong"],
i18n_gt()["id_Taiwan"]],
default=i18n_gt()["id_idcard"]),
])
personal_id = input(i18n_gt()["in_id_serial_number"])
tel = input(i18n_gt()["in_phone_number"])
data = {
"name": name,
"tel": tel,
"id_type": id_type["id_type"].split(".")[0],
"personal_id": personal_id,
"is_default": "0",
"src": "ticket"
}
logger.debug(data)
response = requests.post("https://show.bilibili.com/api/ticket/buyer/create", headers=headers, data=data)
if response.json()["errno"] == 0:
logger.info(i18n_gt()["join_success"])
else:
logger.error(f"{response.json()['errno']}: {response.json()['msg']}")
return add_buyer(headers)
def modify_ua():
ua = input(i18n_gt()["modify_ua"])
config["ua"] = ua
def modify_gaia_vtoken():
gaia_vtoken = input(i18n_gt()["modify_gaia_vtoken"])
config["gaia_vtoken"] = gaia_vtoken
def hunter_mode():
config["hunter"] = 0
logger.info(i18n_gt()["hunter_mode_on"])
def hunter_mode_off():
if "hunter" in config:
config.pop("hunter")
logger.info(i18n_gt()["hunter_mode_off"])
def share_mode(config):
import json
json.dump(config, open("share.json", "w"))
import os
os.remove("data")
logger.info(i18n_gt()["share_mode"])
logger.info(i18n_gt()["auto_quit"])
import sys
sys.exit(0)
return
def pushplus_config(config):
token = input(i18n_gt()["pushplus_token"])
if token == "":
if "pushplus" in config:
config.pop("pushplus")
logger.info(i18n_gt()["pushplus_off"])
save(config)
return
config["pushplus"] = token
logger.info(i18n_gt()["pushplus_on"])
save(config)
def webhook_config(config):
webhook = input(i18n_gt()["webhook"])
if webhook == "":
if "webhook" in config:
config.pop("webhook")
logger.info(i18n_gt()["webhook_off"])
save(config)
return
config["webhook"] = webhook
logger.info(i18n_gt()["webhook_on"])
save(config)
def save_phone(config):
phone = input(i18n_gt()["input_your_phone"])
config["phone"] = phone
logger.info(i18n_gt()["save_your_phone"])
save(config)
def use_proxy(config):
choice = prompt([inquirer.List("proxy", message=i18n_gt()["input_is_use_proxy"],
choices=[i18n_gt()["yes"], i18n_gt()["no"]], default=i18n_gt()["no"])])[
"proxy"]
if choice == i18n_gt()["yes"]:
while True:
try:
config["proxy_auth"] = input(i18n_gt()["input_proxy"]).split(" ")
assert len(config["proxy_auth"]) == 3
break
except:
logger.error(i18n_gt()["wrong_proxy_format"])
continue
config["proxy_channel"] = prompt([
inquirer.Text("proxy_channel", message=i18n_gt()["input_proxy_channel"],validate=lambda _, x: x.isdigit())
])["proxy_channel"]
config["proxy"] = True
else:
config["proxy"] = False
save(config)
def captcha_mode(config):
choice = prompt([inquirer.List("captcha", message=i18n_gt()["input_use_captcha_mode"], choices=[
i18n_gt()["local_gt"],
i18n_gt()["rrocr"],
i18n_gt()["manual"],
], default=i18n_gt()["manual"])])["captcha"]
if choice == i18n_gt()["local_gt"]:
config["captcha"] = "local_gt"
elif choice == i18n_gt()["rrocr"]:
config["captcha"] = "rrocr"
config["rrocr"] = input(i18n_gt()["input_rrocr_key"])
elif choice == i18n_gt()["manual"]:
config["captcha"] = "manual"
else:
logger.error(i18n_gt()["captcha_mode_not_supported"])
save(config)
import random
headers = {
"Cookie": config["cookie"],
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) AppleWebKit/618.1.15.10.15 (KHTML, like Gecko) Mobile/21F90 BiliApp/77900100 os/ios model/iPhone 15 mobi_app/iphone build/77900100 osVer/17.5.1 network/2 channel/AppStore c_locale/zh-Hans_CN s_locale/zh-Hans_CH disable_rcmd/0 "+str(random.randint(0, 9999)),
"Referer": "https://show.bilibili.com"
}
select = prompt([
inquirer.List(
"select",
message= i18n_gt()["select_tool" ],
choices=[ i18n_gt()["tool_add_buyer" ],
i18n_gt()["tool_modify_ua" ],
i18n_gt()["tool_modify_gaia" ],
i18n_gt()["tool_hunter_mode" ],
i18n_gt()["tool_hunter_off" ],
i18n_gt()["tool_share_mode" ],
i18n_gt()["tool_pushplus" ],
i18n_gt()["tool_phone_prefill"],
i18n_gt()["tool_proxy_setting"],
i18n_gt()["tool_capacha_mode" ],
i18n_gt()["tool_webhook" ],
i18n_gt()["back" ]],
)])
if select["select"] == i18n_gt()["tool_add_buyer" ]:
add_buyer(headers)
return utility(config)
elif select["select"] == i18n_gt()["tool_modify_ua" ]:
modify_ua()
return utility(config)
elif select["select"] == i18n_gt()["tool_modify_gaia" ]:
modify_gaia_vtoken()
return utility(config)
elif select["select"] == i18n_gt()["tool_hunter_mode" ]:
hunter_mode()
return utility(config)
elif select["select"] == i18n_gt()["tool_hunter_off" ]:
hunter_mode_off()
return utility(config)
elif select["select"] == i18n_gt()["tool_share_mode" ]:
share_mode(config)
return utility(config)
elif select["select"] == i18n_gt()["tool_pushplus" ]:
pushplus_config(config)
return utility(config)
elif select["select"] == i18n_gt()["tool_phone_prefill"]:
save_phone(config)
return utility(config)
elif select["select"] == i18n_gt()["tool_proxy_setting"]:
use_proxy(config)
return utility(config)
elif select["select"] == i18n_gt()["tool_capacha_mode" ]:
captcha_mode(config)
return utility(config)
elif select["select"] == i18n_gt()["tool_webhook" ]:
webhook_config(config)
return utility(config)
elif select["select"] == i18n_gt()["back" ]:
return
else:
logger.error(i18n_gt()["tool_not_supported"])
return utility()