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
+15
View File
@@ -4,7 +4,9 @@ from app.chain import ChainBase
from app.chain.bangumi import BangumiChain from app.chain.bangumi import BangumiChain
from app.chain.douban import DoubanChain from app.chain.douban import DoubanChain
from app.chain.tmdb import TmdbChain from app.chain.tmdb import TmdbChain
from app.log import logger
from app.schemas import MediaType from app.schemas import MediaType
from app.utils.common import log_execution_time
from app.utils.singleton import Singleton from app.utils.singleton import Singleton
@@ -19,6 +21,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
self.doubanchain = DoubanChain() self.doubanchain = DoubanChain()
self.bangumichain = BangumiChain() self.bangumichain = BangumiChain()
@log_execution_time(logger=logger)
def tmdb_movies(self, sort_by: str = "popularity.desc", with_genres: str = "", def tmdb_movies(self, sort_by: str = "popularity.desc", with_genres: str = "",
with_original_language: str = "", page: int = 1) -> Any: with_original_language: str = "", page: int = 1) -> Any:
""" """
@@ -31,6 +34,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
page=page) page=page)
return [movie.to_dict() for movie in movies] if movies else [] 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 = "", def tmdb_tvs(self, sort_by: str = "popularity.desc", with_genres: str = "",
with_original_language: str = "", page: int = 1) -> Any: with_original_language: str = "", page: int = 1) -> Any:
""" """
@@ -43,6 +47,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
page=page) page=page)
return [tv.to_dict() for tv in tvs] if tvs else [] return [tv.to_dict() for tv in tvs] if tvs else []
@log_execution_time(logger=logger)
def tmdb_trending(self, page: int = 1) -> Any: def tmdb_trending(self, page: int = 1) -> Any:
""" """
TMDB流行趋势 TMDB流行趋势
@@ -50,6 +55,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
infos = self.tmdbchain.tmdb_trending(page=page) infos = self.tmdbchain.tmdb_trending(page=page)
return [info.to_dict() for info in infos] if infos else [] 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: def bangumi_calendar(self, page: int = 1, count: int = 30) -> Any:
""" """
Bangumi每日放送 Bangumi每日放送
@@ -57,6 +63,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
medias = self.bangumichain.calendar() medias = self.bangumichain.calendar()
return [media.to_dict() for media in medias[(page - 1) * count: page * count]] if medias else [] 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: 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) movies = self.doubanchain.movie_showing(page=page, count=count)
return [media.to_dict() for media in movies] if movies else [] 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: 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) sort=sort, tags=tags, page=page, count=count)
return [media.to_dict() for media in movies] if movies else [] 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: 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) sort=sort, tags=tags, page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else [] 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: def movie_top250(self, page: int = 1, count: int = 30) -> Any:
""" """
豆瓣电影TOP250 豆瓣电影TOP250
@@ -87,6 +97,7 @@ class RecommendChain(ChainBase, metaclass=Singleton):
movies = self.doubanchain.movie_top250(page=page, count=count) movies = self.doubanchain.movie_top250(page=page, count=count)
return [media.to_dict() for media in movies] if movies else [] 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: 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) tvs = self.doubanchain.tv_weekly_chinese(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else [] 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: 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) tvs = self.doubanchain.tv_weekly_global(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else [] 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: 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) tvs = self.doubanchain.tv_animation(page=page, count=count)
return [media.to_dict() for media in tvs] if tvs else [] 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: 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) movies = self.doubanchain.movie_hot(page=page, count=count)
return [media.to_dict() for media in movies] if movies else [] 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: def tv_hot(self, page: int = 1, count: int = 30) -> Any:
""" """
豆瓣热门电视剧 豆瓣热门电视剧