1010from hoshino .typing import CQEvent
1111from pixivpy3 import AppPixivAPI
1212from .config import PROXY_URL , MAX_DISPLAY_WORKS , IMAGE_QUALITY , CHECK_INTERVAL_HOURS , ENABLE_FOLLOWING_SUBSCRIPTION , \
13- ENABLE_PIXEL_NOISE , UGOIRA_IMAGE_MODE , UGOIRA_IMAGE_SIZE_LIMIT
13+ ENABLE_PIXEL_NOISE , UGOIRA_IMAGE_MODE , UGOIRA_IMAGE_SIZE_LIMIT , UGORIA_MAX_FRAMES
1414import aiohttp
1515import zipfile
1616import io
@@ -434,7 +434,7 @@ async def get_illust_follow(self, start_time: datetime, interval_hours: float) -
434434
435435 @staticmethod
436436 async def download_image_as_base64 (url : str ) -> str :
437- """下载图片并转换为base64编码(可选进行轻微像素修改) """
437+ """下载图片并转换为base64编码, 根据ENABLE_PIXEL_NOISE配置项决定是否进行像素修改 """
438438 try :
439439 headers = {
440440 'Referer' : 'https://www.pixiv.net/' ,
@@ -476,7 +476,7 @@ async def download_image_as_base64(url: str) -> str:
476476 @staticmethod
477477 def get_image_urls (illust : dict ) -> List [str ]:
478478 """
479- 获取作品的所有图片URL,
479+ 获取作品的所有图片URL
480480 """
481481 urls : List [str ] = []
482482 page_count = illust .get ('page_count' , 1 )
@@ -510,11 +510,10 @@ def get_image_url(image_urls: dict) -> str:
510510 urls .append (url )
511511 return urls
512512
513- # 新方法:下载Ugoira并合成GIF base64
514513 # 下载Ugoira并合成GIF base64
515514 @staticmethod
516515 async def _download_ugoira_zip (zip_url : str ) -> bytes :
517- """辅助方法: 下载Ugoira的ZIP文件"""
516+ """下载Ugoira的ZIP文件"""
518517 headers = {
519518 'Referer' : 'https://www.pixiv.net/' ,
520519 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
@@ -533,15 +532,14 @@ async def _download_ugoira_zip(zip_url: str) -> bytes:
533532 @staticmethod
534533 def _process_ugoira_zip_to_gif (zip_data : bytes , frames_info : list ) -> bytes :
535534 """辅助方法:解压ZIP并合成GIF"""
536- MAX_FRAMES = 600
537535
538536 try :
539537 with io .BytesIO (zip_data ) as zip_buffer :
540538 with zipfile .ZipFile (zip_buffer ) as zip_file :
541539 # 获取并排序帧文件
542540 frame_files = sorted (
543541 [f for f in zip_file .namelist () if f .endswith (('.jpg' , '.png' ))]
544- )[:MAX_FRAMES ]
542+ )[:UGORIA_MAX_FRAMES ]
545543
546544 if not frame_files :
547545 return b""
@@ -571,6 +569,7 @@ def _process_ugoira_zip_to_gif(zip_data: bytes, frames_info: list) -> bytes:
571569
572570 # 合成GIF
573571 gif_buffer = io .BytesIO ()
572+ # webp在手机端可能显示为静态图片, 默认情况下请选择GIF格式, 但是GIF的体积通常较大
574573 if UGOIRA_IMAGE_MODE .upper () == 'WEBP' :
575574 images [0 ].save (
576575 gif_buffer ,
@@ -602,7 +601,7 @@ def _process_ugoira_zip_to_gif(zip_data: bytes, frames_info: list) -> bytes:
602601 return b""
603602
604603 async def download_ugoira_as_gif_base64 (self , illust ) -> str :
605- """主方法: 下载Ugoira ZIP,合成GIF,转为base64"""
604+ """下载Ugoira ZIP,合成GIF,转为base64"""
606605 illust_id = illust .get ('id' )
607606 if not illust_id :
608607 return ""
@@ -779,7 +778,8 @@ async def list_subscriptions(bot, ev: CQEvent):
779778 if not subscriptions :
780779 await bot .send (ev , "当前群没有订阅任何画师" )
781780 return
782- # todo
781+
782+ # todo 这里会大量调用api, 需要优化
783783 # 构建列表:为每个 user_id 获取名字
784784 sub_list = []
785785 for user_id in subscriptions :
0 commit comments