mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-06-03 05:59:51 +08:00
向下兼容Python 3.8
This commit is contained in:
parent
02f3595ede
commit
8fd1ad6e8f
26
README.md
26
README.md
@ -26,16 +26,17 @@
|
|||||||
|
|
||||||
## 丨我该如何获取Cookies?[#92](https://github.com/KimigaiiWuyi/GenshinUID/issues/92)([@RemKeeper](https://github.com/RemKeeper))
|
## 丨我该如何获取Cookies?[#92](https://github.com/KimigaiiWuyi/GenshinUID/issues/92)([@RemKeeper](https://github.com/RemKeeper))
|
||||||
|
|
||||||
```
|
```js
|
||||||
var cookie = document.cookie;
|
var cookie = document.cookie;
|
||||||
var Str_Num = cookie.indexOf('_MHYUUID=');
|
var Str_Num = cookie.indexOf('_MHYUUID=');
|
||||||
cookie = '添加 ' + cookie.substring(Str_Num);
|
cookie = '添加 ' + cookie.substring(Str_Num);
|
||||||
var ask = confirm('Cookie:' + cookie + '\n\n按确认,然后粘贴发送给机器人');
|
var ask = confirm('Cookie:' + cookie + '\n\n按确认,然后粘贴发送给机器人');
|
||||||
if(ask==true)
|
if (ask == true) {
|
||||||
{copy(cookie);
|
copy(cookie);
|
||||||
msg=cookie}
|
msg = cookie
|
||||||
else
|
} else {
|
||||||
{msg='Cancel'}
|
msg = 'Cancel'
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
1. 复制上面全部代码,然后打开https://bbs.mihoyo.com/ys/
|
1. 复制上面全部代码,然后打开https://bbs.mihoyo.com/ys/
|
||||||
@ -46,11 +47,18 @@ else
|
|||||||
**警告:Cookies属于个人隐私,其效用相当于账号密码,请勿随意公开!**
|
**警告:Cookies属于个人隐私,其效用相当于账号密码,请勿随意公开!**
|
||||||
|
|
||||||
## 丨获取米游社Stoken([AutoMihoyoBBS](https://github.com/Womsxd/AutoMihoyoBBS#%E8%8E%B7%E5%8F%96%E7%B1%B3%E6%B8%B8%E7%A4%BECookie))
|
## 丨获取米游社Stoken([AutoMihoyoBBS](https://github.com/Womsxd/AutoMihoyoBBS#%E8%8E%B7%E5%8F%96%E7%B1%B3%E6%B8%B8%E7%A4%BECookie))
|
||||||
|
|
||||||
**前提**:已经添加过米游社Cookies,并且已经绑定过uid(仅用于米游社币的获取)
|
**前提**:已经添加过米游社Cookies,并且已经绑定过uid(仅用于米游社币的获取)
|
||||||
```sh
|
|
||||||
|
```js
|
||||||
var cookie = document.cookie;
|
var cookie = document.cookie;
|
||||||
var ask = confirm('Cookie:' + cookie + '\n\nDo you want to copy the cookie to the clipboard?');
|
var ask = confirm('Cookie:' + cookie + '\n\nDo you want to copy the cookie to the clipboard?');
|
||||||
if(ask==true){copy("添加 stoken" + cookie);msg=cookie}else{msg='Cancel'}
|
if (ask == true) {
|
||||||
|
copy("添加 stoken" + cookie);
|
||||||
|
msg = cookie
|
||||||
|
} else {
|
||||||
|
msg = 'Cancel'
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
1. 复制上面全部代码,然后打开http://user.mihoyo.com/
|
1. 复制上面全部代码,然后打开http://user.mihoyo.com/
|
||||||
@ -76,7 +84,7 @@ if(ask==true){copy("添加 stoken" + cookie);msg=cookie}else{msg='Cancel'}
|
|||||||
|
|
||||||
## 丨其他
|
## 丨其他
|
||||||
|
|
||||||
+ 如果对本插件有功能建议&Bug报告,欢迎提Issuse & Pr,每一条都会详细看过
|
+ 如果对本插件有功能建议&Bug报告,欢迎提Issue & Pr,每一条都会详细看过
|
||||||
+ 如果本插件对你有帮助,不要忘了点个Star~
|
+ 如果本插件对你有帮助,不要忘了点个Star~
|
||||||
+ 本项目仅供学习使用,请勿用于商业用途
|
+ 本项目仅供学习使用,请勿用于商业用途
|
||||||
+ [爱发电](https://afdian.net/@KimigaiiWuyi)
|
+ [爱发电](https://afdian.net/@KimigaiiWuyi)
|
||||||
|
@ -34,7 +34,7 @@ async def send_weapon_adv(bot: HoshinoBot, ev: CQEvent):
|
|||||||
name = str(ev.message).strip().replace(" ", "")[:-3]
|
name = str(ev.message).strip().replace(" ", "")[:-3]
|
||||||
im = await weapon_adv(name)
|
im = await weapon_adv(name)
|
||||||
await bot.send(ev, im)
|
await bot.send(ev, im)
|
||||||
except Exception as e:
|
except Exception:
|
||||||
logger.exception("获取建议失败。")
|
logger.exception("获取建议失败。")
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ import threading
|
|||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
from re import Match, findall
|
from re import Match, findall
|
||||||
from typing import Optional
|
from typing import Optional, Tuple, List
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PIL import Image, ImageDraw, ImageFilter, ImageFont
|
from PIL import Image, ImageDraw, ImageFilter, ImageFont
|
||||||
@ -67,7 +67,7 @@ class CustomizeImage:
|
|||||||
return bg_img
|
return bg_img
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_bg_color(edit_bg: Image) -> tuple[int, int, int]:
|
def get_bg_color(edit_bg: Image) -> Tuple[int, int, int]:
|
||||||
# 获取背景主色
|
# 获取背景主色
|
||||||
color = 8
|
color = 8
|
||||||
q = edit_bg.quantize(colors=color, method=2)
|
q = edit_bg.quantize(colors=color, method=2)
|
||||||
@ -85,7 +85,7 @@ class CustomizeImage:
|
|||||||
return bg_color
|
return bg_color
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_text_color(bg_color: tuple[int, int, int]) -> tuple[int, int, int]:
|
def get_text_color(bg_color: Tuple[int, int, int]) -> Tuple[int, int, int]:
|
||||||
# 通过背景主色(bg_color)确定文字主色
|
# 通过背景主色(bg_color)确定文字主色
|
||||||
r = 125
|
r = 125
|
||||||
if max(*bg_color) > 255 - r:
|
if max(*bg_color) > 255 - r:
|
||||||
@ -96,7 +96,7 @@ class CustomizeImage:
|
|||||||
return text_color
|
return text_color
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_char_color(bg_color: tuple[int, int, int]) -> tuple[int, int, int]:
|
def get_char_color(bg_color: Tuple[int, int, int]) -> Tuple[int, int, int]:
|
||||||
r = 140
|
r = 140
|
||||||
if max(*bg_color) > 255 - r:
|
if max(*bg_color) > 255 - r:
|
||||||
r *= -1
|
r *= -1
|
||||||
@ -106,7 +106,7 @@ class CustomizeImage:
|
|||||||
return char_color
|
return char_color
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_char_high_color(bg_color: tuple[int, int, int]) -> tuple[int, int, int]:
|
def get_char_high_color(bg_color: Tuple[int, int, int]) -> Tuple[int, int, int]:
|
||||||
r = 140
|
r = 140
|
||||||
d = 20
|
d = 20
|
||||||
if max(*bg_color) > 255 - r:
|
if max(*bg_color) > 255 - r:
|
||||||
@ -117,7 +117,7 @@ class CustomizeImage:
|
|||||||
return char_color
|
return char_color
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_bg_detail_color(bg_color: tuple[int, int, int]) -> tuple[int, int, int]:
|
def get_bg_detail_color(bg_color: Tuple[int, int, int]) -> Tuple[int, int, int]:
|
||||||
r = 140
|
r = 140
|
||||||
if max(*bg_color) > 255 - r:
|
if max(*bg_color) > 255 - r:
|
||||||
r *= -1
|
r *= -1
|
||||||
@ -127,7 +127,7 @@ class CustomizeImage:
|
|||||||
return bg_detail_color
|
return bg_detail_color
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_highlight_color(color: tuple[int, int, int]) -> tuple[int, int, int]:
|
def get_highlight_color(color: Tuple[int, int, int]) -> Tuple[int, int, int]:
|
||||||
red_color = color[0]
|
red_color = color[0]
|
||||||
green_color = color[1]
|
green_color = color[1]
|
||||||
blue_color = color[2]
|
blue_color = color[2]
|
||||||
@ -980,7 +980,7 @@ async def draw_abyss_pic(uid: str, nickname: str, floor_num: int, image: Optiona
|
|||||||
return resultmes
|
return resultmes
|
||||||
|
|
||||||
|
|
||||||
async def get_all_calculate_info(client: ClientSession, uid: str, char_id: list[str], ck: str, name: list):
|
async def get_all_calculate_info(client: ClientSession, uid: str, char_id: List[str], ck: str, name: list):
|
||||||
tasks = []
|
tasks = []
|
||||||
for id_, name_ in zip(char_id, name):
|
for id_, name_ in zip(char_id, name):
|
||||||
tasks.append(get_calculate_info(client, uid, id_, ck, name_))
|
tasks.append(get_calculate_info(client, uid, id_, ck, name_))
|
||||||
@ -991,9 +991,9 @@ async def get_all_calculate_info(client: ClientSession, uid: str, char_id: list[
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
async def draw_char_pic(img: Image, char_data: dict, index: int, bg_color: tuple[int, int, int],
|
async def draw_char_pic(img: Image, char_data: dict, index: int, bg_color: Tuple[int, int, int],
|
||||||
text_color: tuple[int, int, int], bg_detail_color: tuple[int, int, int],
|
text_color: Tuple[int, int, int], bg_detail_color: Tuple[int, int, int],
|
||||||
char_high_color: tuple[int, int, int], char_talent_data: dict):
|
char_high_color: Tuple[int, int, int], char_talent_data: dict):
|
||||||
char_mingzuo = 0
|
char_mingzuo = 0
|
||||||
for k in char_data['constellations']:
|
for k in char_data['constellations']:
|
||||||
if k['is_actived']:
|
if k['is_actived']:
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import time
|
|
||||||
import random
|
import random
|
||||||
import string
|
import string
|
||||||
|
import time
|
||||||
|
|
||||||
from httpx import AsyncClient
|
from httpx import AsyncClient
|
||||||
|
|
||||||
@ -8,10 +8,12 @@ from get_data import old_version_get_ds_token,random_hex
|
|||||||
|
|
||||||
# 米游社的API列表
|
# 米游社的API列表
|
||||||
bbs_Cookieurl = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}"
|
bbs_Cookieurl = "https://webapi.account.mihoyo.com/Api/cookie_accountinfo_by_loginticket?login_ticket={}"
|
||||||
bbs_Cookieurl2 = "https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket?login_ticket={}&token_types=3&uid={}"
|
bbs_Cookieurl2 = "https://api-takumi.mihoyo.com/auth/api/getMultiTokenByLoginTicket" \
|
||||||
|
"?login_ticket={}&token_types=3&uid={}"
|
||||||
bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" # 获取任务列表
|
bbs_Taskslist = "https://bbs-api.mihoyo.com/apihub/sapi/getUserMissionsState" # 获取任务列表
|
||||||
bbs_Signurl = "https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}" # post
|
bbs_Signurl = "https://bbs-api.mihoyo.com/apihub/sapi/signIn?gids={}" # post
|
||||||
bbs_Listurl = "https://bbs-api.mihoyo.com/post/api/getForumPostList?forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1"
|
bbs_Listurl = "https://bbs-api.mihoyo.com/post/api/getForumPostList?" \
|
||||||
|
"forum_id={}&is_good=false&is_hot=false&page_size=20&sort_type=1"
|
||||||
bbs_Detailurl = "https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}"
|
bbs_Detailurl = "https://bbs-api.mihoyo.com/post/api/getPostFull?post_id={}"
|
||||||
bbs_Shareurl = "https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1"
|
bbs_Shareurl = "https://bbs-api.mihoyo.com/apihub/api/getShareConf?entity_id={}&entity_type=1"
|
||||||
bbs_Likeurl = "https://bbs-api.mihoyo.com/apihub/sapi/upvotePost" # post json
|
bbs_Likeurl = "https://bbs-api.mihoyo.com/apihub/sapi/upvotePost" # post json
|
||||||
@ -48,10 +50,12 @@ mihoyobbs_List = [{
|
|||||||
"url": "https://bbs.mihoyo.com/sr/"
|
"url": "https://bbs.mihoyo.com/sr/"
|
||||||
}]
|
}]
|
||||||
|
|
||||||
|
|
||||||
def random_text(num: int) -> str:
|
def random_text(num: int) -> str:
|
||||||
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
return ''.join(random.sample(string.ascii_lowercase + string.digits, num))
|
||||||
|
|
||||||
class mihoyobbs_coin:
|
|
||||||
|
class MihoyoBBSCoin:
|
||||||
def __init__(self, cookies):
|
def __init__(self, cookies):
|
||||||
self.headers = {
|
self.headers = {
|
||||||
"DS": old_version_get_ds_token(True),
|
"DS": old_version_get_ds_token(True),
|
||||||
@ -81,24 +85,24 @@ class mihoyobbs_coin:
|
|||||||
self.Have_coins = 0
|
self.Have_coins = 0
|
||||||
|
|
||||||
async def task_run(self):
|
async def task_run(self):
|
||||||
await self.Load_Mihoyobbs_List_Use()
|
await self.load_mihoyo_bbs_list_use()
|
||||||
start = await self.Get_taskslist()
|
start = await self.get_tasks_list()
|
||||||
self.postsList = await self.get_list()
|
self.postsList = await self.get_list()
|
||||||
sign = await self.signing()
|
sign = await self.signing()
|
||||||
read = await self.read_posts()
|
read = await self.read_posts()
|
||||||
like = await self.Likeposts()
|
like = await self.like_posts()
|
||||||
share = await self.share_post()
|
share = await self.share_post()
|
||||||
im = start + "\n" + sign + "\n" + read + "\n" + like + "\n" + share
|
im = start + "\n" + sign + "\n" + read + "\n" + like + "\n" + share
|
||||||
return im
|
return im
|
||||||
|
|
||||||
async def Load_Mihoyobbs_List_Use(self):
|
async def load_mihoyo_bbs_list_use(self):
|
||||||
for i in [2, 5]:
|
for i in [2, 5]:
|
||||||
for k in mihoyobbs_List:
|
for k in mihoyobbs_List:
|
||||||
if i == int(k["id"]):
|
if i == int(k["id"]):
|
||||||
self.mihoyobbs_List_Use.append(k)
|
self.mihoyobbs_List_Use.append(k)
|
||||||
|
|
||||||
# 获取任务列表,用来判断做了哪些任务
|
# 获取任务列表,用来判断做了哪些任务
|
||||||
async def Get_taskslist(self):
|
async def get_tasks_list(self):
|
||||||
# log.info("正在获取任务列表")
|
# log.info("正在获取任务列表")
|
||||||
async with AsyncClient() as client:
|
async with AsyncClient() as client:
|
||||||
req = await client.get(url=bbs_Taskslist, headers=self.headers)
|
req = await client.get(url=bbs_Taskslist, headers=self.headers)
|
||||||
@ -175,7 +179,6 @@ class mihoyobbs_coin:
|
|||||||
return "你的Cookies已失效。"
|
return "你的Cookies已失效。"
|
||||||
return "已完成签到任务~"
|
return "已完成签到任务~"
|
||||||
|
|
||||||
|
|
||||||
# 看帖子
|
# 看帖子
|
||||||
async def read_posts(self):
|
async def read_posts(self):
|
||||||
if self.Task_do["bbs_Read_posts"]:
|
if self.Task_do["bbs_Read_posts"]:
|
||||||
@ -190,8 +193,9 @@ class mihoyobbs_coin:
|
|||||||
num_ok += 1
|
num_ok += 1
|
||||||
time.sleep(random.randint(2, 8))
|
time.sleep(random.randint(2, 8))
|
||||||
return "已完成看帖任务~共计成功{}次~".format(str(num_ok))
|
return "已完成看帖任务~共计成功{}次~".format(str(num_ok))
|
||||||
|
|
||||||
# 点赞
|
# 点赞
|
||||||
async def Likeposts(self):
|
async def like_posts(self):
|
||||||
if self.Task_do["bbs_Like_posts"]:
|
if self.Task_do["bbs_Like_posts"]:
|
||||||
return "点赞任务已经完成过了~"
|
return "点赞任务已经完成过了~"
|
||||||
else:
|
else:
|
||||||
|
@ -3,13 +3,15 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
from base64 import b64encode
|
from base64 import b64encode
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
from typing import List
|
||||||
|
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
|
|
||||||
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
|
||||||
from .get_data import *
|
# 忽略PEP8 E402 module level import not at top of file 警告
|
||||||
from .get_image import draw_event_pic
|
from .get_data import * # noqa: E402
|
||||||
import get_mihoyo_bbs_coin as coin
|
from .get_image import draw_event_pic # noqa: E402
|
||||||
|
import get_mihoyo_bbs_coin as coin # noqa: E402
|
||||||
|
|
||||||
FILE_PATH = os.path.dirname(__file__)
|
FILE_PATH = os.path.dirname(__file__)
|
||||||
FILE2_PATH = os.path.join(FILE_PATH, 'mihoyo_bbs')
|
FILE2_PATH = os.path.join(FILE_PATH, 'mihoyo_bbs')
|
||||||
@ -444,7 +446,7 @@ async def daily(mode="push", uid=None):
|
|||||||
current_expedition_num = dailydata['current_expedition_num']
|
current_expedition_num = dailydata['current_expedition_num']
|
||||||
max_expedition_num = dailydata['max_expedition_num']
|
max_expedition_num = dailydata['max_expedition_num']
|
||||||
finished_expedition_num = 0
|
finished_expedition_num = 0
|
||||||
expedition_info: list[str] = []
|
expedition_info: List[str] = []
|
||||||
for expedition in dailydata['expeditions']:
|
for expedition in dailydata['expeditions']:
|
||||||
avatar: str = expedition['avatar_side_icon'][89:-4]
|
avatar: str = expedition['avatar_side_icon'][89:-4]
|
||||||
try:
|
try:
|
||||||
@ -528,7 +530,7 @@ async def mihoyo_coin(qid, s_cookies=None):
|
|||||||
s_cookies = await get_stoken(uid)
|
s_cookies = await get_stoken(uid)
|
||||||
|
|
||||||
if s_cookies:
|
if s_cookies:
|
||||||
get_coin = coin.mihoyobbs_coin(s_cookies)
|
get_coin = coin.MihoyoBBSCoin(s_cookies)
|
||||||
im = await get_coin.task_run()
|
im = await get_coin.task_run()
|
||||||
else:
|
else:
|
||||||
im = "你还没有绑定Stoken~"
|
im = "你还没有绑定Stoken~"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user