feat(recommend): add log_execution_time decorator to RecommendChain methods

This commit is contained in:
InfinityPacer
2024-12-22 01:03:44 +08:00
parent 98247fa47a
commit de1c2c98d2

View File

@@ -4,7 +4,9 @@ from app.chain import ChainBase
from app.chain.bangumi import BangumiChain
from app.chain.douban import DoubanChain
from app.chain.tmdb import TmdbChain
from app.log import logger
from app.schemas import MediaType
from app.utils.common import log_execution_time
from app.utils.singleton import Singleton
@@ -19,6 +21,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
self.doubanchain = DoubanChain()
self.bangumichain = BangumiChain()
@log_execution_time(logger=logger)
def tmdb_movies(self, sort_by: str = "popularity.desc", with_genres: str = "",
with_original_language: str = "", page: int = 1) -> Any:
"""
@@ -31,6 +34,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
page=page)
return [movie.to_dict() for movie in movies] if movies else []
@log_execution_time(logger=logger)
def tmdb_tvs(self, sort_by: str = "popularity.desc", with_genres: str = "",
with_original_language: str = "", page: int = 1) -> Any:
"""
@@ -43,6 +47,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
page=page)
return [tv.to_dict() for tv in tvs] if tvs else []
@log_execution_time(logger=logger)
def tmdb_trending(self, page: int = 1) -> Any:
"""
TMDB流行趋势
@@ -50,6 +55,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
infos = self.tmdbchain.tmdb_trending(page=page)
return [info.to_dict() for info in infos] if infos else []
@log_execution_time(logger=logger)
def bangumi_calendar(self, page: int = 1, count: int = 30) -> Any:
"""
Bangumi每日放送
@@ -57,6 +63,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
medias = self.bangumichain.calendar()
return [media.to_dict() for media in medias[(page - 1) * count: page * count]] if medias else []
@log_execution_time(logger=logger)
def movie_showing(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣正在热映
@@ -64,6 +71,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
movies = self.doubanchain.movie_showing(page=page, count=count)
return [media.to_dict() for media in movies] if movies else []
@log_execution_time(logger=logger)
def douban_movies(self, sort: str = "R", tags: str = "", page: int = 1, count: int = 30) -> Any:
"""
豆瓣最新电影
@@ -72,6 +80,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
sort=sort, tags=tags, page=page, count=count)
return [media.to_dict() for media in movies] if movies else []
@log_execution_time(logger=logger)
def douban_tvs(self, sort: str = "R", tags: str = "", page: int = 1, count: int = 30) -> Any:
"""
豆瓣最新电视剧
@@ -80,6 +89,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
sort=sort, tags=tags, page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else []
@log_execution_time(logger=logger)
def movie_top250(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣电影TOP250
@@ -87,6 +97,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
movies = self.doubanchain.movie_top250(page=page, count=count)
return [media.to_dict() for media in movies] if movies else []
@log_execution_time(logger=logger)
def tv_weekly_chinese(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣国产剧集榜
@@ -94,6 +105,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
tvs = self.doubanchain.tv_weekly_chinese(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else []
@log_execution_time(logger=logger)
def tv_weekly_global(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣全球剧集榜
@@ -101,6 +113,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
tvs = self.doubanchain.tv_weekly_global(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else []
@log_execution_time(logger=logger)
def tv_animation(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣热门动漫
@@ -108,6 +121,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
tvs = self.doubanchain.tv_animation(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else []
@log_execution_time(logger=logger)
def movie_hot(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣热门电影
@@ -115,6 +129,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
movies = self.doubanchain.movie_hot(page=page, count=count)
return [media.to_dict() for media in movies] if movies else []
@log_execution_time(logger=logger)
def tv_hot(self, page: int = 1, count: int = 30) -> Any:
"""
豆瓣热门电视剧