mirror of
https://github.com/PaiGramTeam/MibooGram.git
synced 2024-11-18 13:45:01 +00:00
159 lines
4.9 KiB
Python
159 lines
4.9 KiB
Python
|
import imghdr
|
|||
|
from enum import Enum
|
|||
|
|
|||
|
|
|||
|
class ArtworkImage:
|
|||
|
|
|||
|
def __init__(self, art_id: int, page: int = 0, is_error: bool = False, data: bytes = b""):
|
|||
|
"""
|
|||
|
:param art_id: 插画ID
|
|||
|
:param page: 页数
|
|||
|
:param is_error: 插画是否有问题
|
|||
|
:param data: 插画数据
|
|||
|
"""
|
|||
|
self.art_id = art_id
|
|||
|
self.data = data
|
|||
|
self.is_error = is_error
|
|||
|
if not is_error:
|
|||
|
self.format: str = imghdr.what(None, self.data)
|
|||
|
self.page = page
|
|||
|
|
|||
|
|
|||
|
class BaseResponseData:
|
|||
|
def __init__(self, response=None, error_message: str = ""):
|
|||
|
"""
|
|||
|
:param response: 相应
|
|||
|
:param error_message: 错误信息
|
|||
|
"""
|
|||
|
if response is None:
|
|||
|
self.error: bool = True
|
|||
|
self.message: str = error_message
|
|||
|
return
|
|||
|
self.response: dict = response
|
|||
|
self.code = response["retcode"]
|
|||
|
if self.code == 0:
|
|||
|
self.error = False
|
|||
|
else:
|
|||
|
self.error = True
|
|||
|
self.message = response["message"]
|
|||
|
self.data = response["data"]
|
|||
|
|
|||
|
|
|||
|
class Stat:
|
|||
|
def __init__(self, view_num: int = 0, reply_num: int = 0, like_num: int = 0, bookmark_num: int = 0,
|
|||
|
forward_num: int = 0):
|
|||
|
self.forward_num = forward_num # 关注数
|
|||
|
self.bookmark_num = bookmark_num # 收藏数
|
|||
|
self.like_num = like_num # 喜欢数
|
|||
|
self.reply_num = reply_num # 回复数
|
|||
|
self.view_num = view_num # 观看数
|
|||
|
|
|||
|
|
|||
|
class ArtworkInfo:
|
|||
|
def __init__(self, post_id: int = 0, subject: str = "", tags=None,
|
|||
|
image_url_list=None, stat: Stat = None, uid: int = 0, created_at: int = 0):
|
|||
|
"""
|
|||
|
:param post_id: post_id
|
|||
|
:param subject: 标题
|
|||
|
:param tags: 标签
|
|||
|
:param image_url_list: 图片URL列表
|
|||
|
:param stat: 统计
|
|||
|
:param uid: 用户UID
|
|||
|
:param created_at: 创建时间
|
|||
|
"""
|
|||
|
if tags is None:
|
|||
|
self.tags = []
|
|||
|
else:
|
|||
|
self.tags = tags
|
|||
|
if image_url_list is None:
|
|||
|
self.image_url_list = []
|
|||
|
else:
|
|||
|
self.image_url_list = image_url_list
|
|||
|
self.Stat = stat
|
|||
|
self.created_at = created_at
|
|||
|
self.uid = uid
|
|||
|
self.subject = subject
|
|||
|
self.post_id = post_id
|
|||
|
|
|||
|
|
|||
|
class HyperionResponse:
|
|||
|
"""
|
|||
|
:param response: 相应
|
|||
|
:param error_message: 错误信息
|
|||
|
"""
|
|||
|
|
|||
|
def __init__(self, response=None, error_message: str = ""):
|
|||
|
if response is None:
|
|||
|
self.error: bool = True
|
|||
|
self.message: str = error_message
|
|||
|
return
|
|||
|
self.response: dict = response
|
|||
|
self.code = response["retcode"]
|
|||
|
if self.code == 0:
|
|||
|
self.error = False
|
|||
|
else:
|
|||
|
if self.code == 1102:
|
|||
|
self.message = "作品不存在"
|
|||
|
self.error = True
|
|||
|
return
|
|||
|
if response["data"] is None:
|
|||
|
self.error = True
|
|||
|
self.message: str = response["message"]
|
|||
|
if self.error:
|
|||
|
return
|
|||
|
try:
|
|||
|
self._data_post = response["data"]["post"]
|
|||
|
post = self._data_post["post"] # 投稿信息
|
|||
|
post_id = post["post_id"]
|
|||
|
subject = post["subject"] # 介绍,类似title标题
|
|||
|
created_at = post["created_at"] # 创建时间
|
|||
|
user = self._data_post["user"] # 用户数据
|
|||
|
uid = user["uid"] # 用户ID
|
|||
|
topics = self._data_post["topics"] # 存放 Tag
|
|||
|
image_list = self._data_post["image_list"] # image_list
|
|||
|
except (AttributeError, TypeError) as err:
|
|||
|
self.error: bool = True
|
|||
|
self.message: str = err
|
|||
|
return
|
|||
|
topics_list = []
|
|||
|
image_url_list = []
|
|||
|
for topic in topics:
|
|||
|
topics_list.append(topic["name"])
|
|||
|
for image in image_list:
|
|||
|
image_url_list.append(image["url"])
|
|||
|
self.post_id = post["post_id"]
|
|||
|
self.user_id = user["uid"]
|
|||
|
self.created_at = post["created_at"]
|
|||
|
stat = Stat(view_num=self._data_post["stat"]["view_num"],
|
|||
|
reply_num=self._data_post["stat"]["reply_num"],
|
|||
|
like_num=self._data_post["stat"]["like_num"],
|
|||
|
bookmark_num=self._data_post["stat"]["bookmark_num"],
|
|||
|
forward_num=self._data_post["stat"]["forward_num"],
|
|||
|
)
|
|||
|
self.results = ArtworkInfo(
|
|||
|
subject=subject,
|
|||
|
created_at=created_at,
|
|||
|
uid=uid,
|
|||
|
stat=stat,
|
|||
|
tags=topics_list,
|
|||
|
post_id=post_id,
|
|||
|
image_url_list=image_url_list
|
|||
|
)
|
|||
|
|
|||
|
def __bool__(self):
|
|||
|
"""
|
|||
|
:return: 是否错误
|
|||
|
"""
|
|||
|
return self.error
|
|||
|
|
|||
|
def __len__(self):
|
|||
|
"""
|
|||
|
:return: 插画连接数量
|
|||
|
"""
|
|||
|
return len(self.results.image_url_list)
|
|||
|
|
|||
|
|
|||
|
class ServiceEnum(Enum):
|
|||
|
HYPERION = 1
|
|||
|
HOYOLAB = 2
|