From d0b1348c965e5d42e6c66be0bc2a5081a3aef2a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 29 Mar 2025 11:28:26 +0800 Subject: [PATCH] fix some warnings --- app/modules/trimemedia/__init__.py | 2 +- app/modules/trimemedia/api.py | 82 ++++++++++++++++------------ app/modules/trimemedia/trimemedia.py | 42 +++++++------- 3 files changed, 68 insertions(+), 58 deletions(-) diff --git a/app/modules/trimemedia/__init__.py b/app/modules/trimemedia/__init__.py index 99670e7b..a19ee4bc 100644 --- a/app/modules/trimemedia/__init__.py +++ b/app/modules/trimemedia/__init__.py @@ -73,7 +73,7 @@ class TrimeMediaModule(_ModuleBase, _MediaServerBase[TrimeMedia]): for name, server in self.get_instances().items(): if not server.is_configured(): return False, f"飞牛影视配置不完整:{name}" - if server.is_inactive() and server.reconnect() != True: + if server.is_inactive() and not server.reconnect(): return False, f"无法连接飞牛影视:{name}" return True, "" diff --git a/app/modules/trimemedia/api.py b/app/modules/trimemedia/api.py index 42c47df4..5afeb83d 100644 --- a/app/modules/trimemedia/api.py +++ b/app/modules/trimemedia/api.py @@ -4,7 +4,7 @@ import random import time from dataclasses import dataclass from enum import Enum -from typing import Optional, Union, List +from typing import List, Optional, Union from app.core.config import settings from app.log import logger @@ -19,27 +19,27 @@ class User: class Category(Enum): - Movie = "Movie" + MOVIE = "Movie" TV = "TV" - Mix = "Mix" - Others = "Others" + MIX = "Mix" + OTHERS = "Others" @classmethod def _missing_(cls, value): - return cls.Others + return cls.OTHERS class Type(Enum): - Movie = "Movie" + MOVIE = "Movie" TV = "TV" - Season = "Season" - Episode = "Episode" - Video = "Video" - Directory = "Directory" + SEASON = "Season" + EPISODE = "Episode" + VIDEO = "Video" + DIRECTORY = "Directory" @classmethod def _missing_(cls, value): - return cls.Video + return cls.VIDEO @dataclass @@ -131,14 +131,14 @@ class Api: :return: 成功返回token 否则返回None """ if ( - res := self.__request_api( - "/login", - data={ - "username": username, - "password": password, - "app_name": "trimemedia-web", - }, - ) + res := self.__request_api( + "/login", + data={ + "username": username, + "password": password, + "app_name": "trimemedia-web", + }, + ) ) and res.success: self._token = res.data.get("token") return self._token @@ -250,7 +250,7 @@ class Api: 扫描指定媒体库 """ if ( - res := self.__request_api(f"/mdb/scan/{mdb.guid}", data={}) + res := self.__request_api(f"/mdb/scan/{mdb.guid}", data={}) ) and res.success: if res.data: return True @@ -272,22 +272,22 @@ class Api: return item def item_list( - self, - guid: Optional[str] = None, - type=None, - exclude_grouped_video=True, - page=1, - page_size=22, - sort_by="create_time", - sort="DESC", + self, + guid: Optional[str] = None, + types=None, + exclude_grouped_video=True, + page=1, + page_size=22, + sort_by="create_time", + sort="DESC", ) -> Optional[list[Item]]: """ 媒体列表 """ - if type is None: - type = [Type.Movie, Type.TV, Type.Directory, Type.Video] + if types is None: + types = [Type.MOVIE, Type.TV, Type.DIRECTORY, Type.VIDEO] post = { - "tags": {"type": type} if type else {}, + "tags": {"type": types} if types else {}, "sort_type": sort, "sort_column": sort_by, "page": page, @@ -307,25 +307,31 @@ class Api: 搜索影片、演员 """ if ( - res := self.__request_api("/search/list", params={"q": keywords}) + res := self.__request_api("/search/list", params={"q": keywords}) ) and res.success: return [self.__build_item(info) for info in res.data] return None def item(self, guid: str) -> Optional[Item]: - """ """ + """ + 查询媒体详情 + """ if (res := self.__request_api(f"/item/{guid}")) and res.success: return self.__build_item(res.data) return None def season_list(self, tv_guid: str) -> Optional[list[Item]]: - """ """ + """ + 查询季列表 + """ if (res := self.__request_api(f"/season/list/{tv_guid}")) and res.success: return [self.__build_item(info) for info in res.data] return None def episode_list(self, season_guid: str) -> Optional[list[Item]]: - """ """ + """ + 查询剧集列表 + """ if (res := self.__request_api(f"/episode/list/{season_guid}")) and res.success: return [self.__build_item(info) for info in res.data] return None @@ -366,7 +372,11 @@ class Api: return f"nonce={nonce}×tamp={ts}&sign={sign}" def __request_api( - self, api: str, method: str = None, params: dict = None, data: dict = None + self, + api: str, + method: Optional[str] = None, + params: Optional[dict] = None, + data: Optional[dict] = None, ): """ 请求飞牛影视API diff --git a/app/modules/trimemedia/trimemedia.py b/app/modules/trimemedia/trimemedia.py index 8a21d7d8..8014eb2c 100644 --- a/app/modules/trimemedia/trimemedia.py +++ b/app/modules/trimemedia/trimemedia.py @@ -26,7 +26,7 @@ class TrimeMedia: username: Optional[str] = None, password: Optional[str] = None, play_host: Optional[str] = None, - sync_libraries: list = None, + sync_libraries: Optional[list] = None, **kwargs, ): if not host or not username or not password: @@ -87,11 +87,11 @@ class TrimeMedia: for library in self._libraries.values(): if hidden and self.__is_library_blocked(library.guid): continue - if library.category == fnapi.Category.Movie: + if library.category == fnapi.Category.MOVIE: library_type = MediaType.MOVIE.value elif library.category == fnapi.Category.TV: library_type = MediaType.TV.value - elif library.category == fnapi.Category.Others: + elif library.category == fnapi.Category.OTHERS: # 忽略这个库 continue else: @@ -170,7 +170,7 @@ class TrimeMedia: movies = [] items = self._api.search_list(keywords=title) or [] for item in items: - if item.type != fnapi.Type.Movie: + if item.type != fnapi.Type.MOVIE: continue if ( (not tmdb_id or tmdb_id == item.tmdb_id) @@ -361,11 +361,11 @@ class TrimeMedia: """ 拼装播放链接 """ - if item.type == fnapi.Type.Episode: + if item.type == fnapi.Type.EPISODE: return f"{host}/v/tv/episode/{item.guid}" - elif item.type == fnapi.Type.Season: + elif item.type == fnapi.Type.SEASON: return f"{host}/v/tv/season/{item.guid}" - elif item.type == fnapi.Type.Movie: + elif item.type == fnapi.Type.MOVIE: return f"{host}/v/movie/{item.guid}" elif item.type == fnapi.Type.TV: return f"{host}/v/tv/{item.guid}" @@ -379,22 +379,22 @@ class TrimeMedia: """ :params use_backdrop: 是否优先使用Backdrop类型的图片 """ - if item.type == fnapi.Type.Episode: + if item.type == fnapi.Type.EPISODE: title = item.tv_title subtitle = f"S{item.season_number}:{item.episode_number} - {item.title}" else: title = item.title - subtitle = "电影" if item.type == fnapi.Type.Movie else "视频" - type = ( + subtitle = "电影" if item.type == fnapi.Type.MOVIE else "视频" + types = ( MediaType.MOVIE.value - if item.type in [fnapi.Type.Movie, fnapi.Type.Video] + if item.type in [fnapi.Type.MOVIE, fnapi.Type.VIDEO] else MediaType.TV.value ) return schemas.MediaServerPlayItem( id=item.guid, title=title, subtitle=subtitle, - type=type, + type=types, image=f"{self._api.host}{item.poster}", link=self.__build_play_url(self._playhost or self._api.host, item), percent=( @@ -421,22 +421,22 @@ class TrimeMedia: """ if not self.is_authenticated(): return None - if (SIZE := limit) is None: - SIZE = -1 + if (page_size := limit) is None: + page_size = -1 items = ( self._api.item_list( guid=parent, page=start_index + 1, - page_size=SIZE, - type=[fnapi.Type.Movie, fnapi.Type.TV, fnapi.Type.Directory], + page_size=page_size, + types=[fnapi.Type.MOVIE, fnapi.Type.TV, fnapi.Type.DIRECTORY], ) or [] ) for item in items: - if item.type == fnapi.Type.Directory: + if item.type == fnapi.Type.DIRECTORY: for items in self.get_items(parent=item.guid): yield items - elif item.type in [fnapi.Type.Movie, fnapi.Type.TV]: + elif item.type in [fnapi.Type.MOVIE, fnapi.Type.TV]: yield self.__build_media_server_item(item) return None @@ -482,7 +482,7 @@ class TrimeMedia: self._api.item_list( page=1, page_size=max(100, num * 5), - type=[fnapi.Type.Movie, fnapi.Type.TV], + types=[fnapi.Type.MOVIE, fnapi.Type.TV], ) or [] ) @@ -505,7 +505,7 @@ class TrimeMedia: self._api.item_list( page=1, page_size=max(100, num * 5), - type=[fnapi.Type.Movie, fnapi.Type.TV], + types=[fnapi.Type.MOVIE, fnapi.Type.TV], ) or [] ) @@ -534,7 +534,7 @@ class TrimeMedia: def __is_library_blocked(self, library_guid: str): if library := self._libraries.get(library_guid): - if library.category == fnapi.Category.Others: + if library.category == fnapi.Category.OTHERS: # 忽略这个库 return True return (