From 11d65e75272a2f86446065bfbbf126e66149baf3 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 19 Nov 2023 09:05:58 +0800 Subject: [PATCH] fix douban scraper --- app/chain/douban.py | 2 +- app/modules/douban/__init__.py | 22 ++++++++++++++++++---- app/modules/douban/scraper.py | 8 ++++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/app/chain/douban.py b/app/chain/douban.py index ad5b3df2..0153ee61 100644 --- a/app/chain/douban.py +++ b/app/chain/douban.py @@ -81,7 +81,7 @@ class DoubanChain(ChainBase, metaclass=Singleton): """ return self.run_module("douban_movie_credits", doubanid=doubanid, page=page) - def tv_credits(self, doubanid: int, page: int = 1) -> List[dict]: + def tv_credits(self, doubanid: str, page: int = 1) -> List[dict]: """ 根据TMDBID查询电视剧演职人员 :param doubanid: 豆瓣ID diff --git a/app/modules/douban/__init__.py b/app/modules/douban/__init__.py index 3b2d30fd..f7dc9aee 100644 --- a/app/modules/douban/__init__.py +++ b/app/modules/douban/__init__.py @@ -618,10 +618,17 @@ class DoubanModule(_ModuleBase): else: doubaninfo = self.douban_info(doubanid=mediainfo.douban_id, mtype=mediainfo.type) + if not doubaninfo: + logger(f"未获取到 {mediainfo.douban_id} 的豆瓣媒体信息,无法刮削!") + return + # 豆瓣媒体信息 + mediainfo = MediaInfo(douban_info=doubaninfo) + # 补充图片 + self.obtain_images(mediainfo) # 刮削路径 scrape_path = path / path.name self.scraper.gen_scraper_files(meta=meta, - mediainfo=MediaInfo(douban_info=doubaninfo), + mediainfo=mediainfo, file_path=scrape_path, transfer_type=transfer_type) else: @@ -649,9 +656,16 @@ class DoubanModule(_ModuleBase): else: doubaninfo = self.douban_info(doubanid=mediainfo.douban_id, mtype=mediainfo.type) + if not doubaninfo: + logger(f"未获取到 {mediainfo.douban_id} 的豆瓣媒体信息,无法刮削!") + continue + # 豆瓣媒体信息 + mediainfo = MediaInfo(douban_info=doubaninfo) + # 补充图片 + self.obtain_images(mediainfo) # 刮削 self.scraper.gen_scraper_files(meta=meta, - mediainfo=MediaInfo(douban_info=doubaninfo), + mediainfo=mediainfo, file_path=file, transfer_type=transfer_type) except Exception as e: @@ -726,14 +740,14 @@ class DoubanModule(_ModuleBase): else: return [] - def douban_movie_recommend(self, doubanid: int) -> List[dict]: + def douban_movie_recommend(self, doubanid: str) -> List[dict]: """ 根据豆瓣ID查询推荐电影 :param doubanid: 豆瓣ID """ return self.doubanapi.movie_recommendations(subject_id=doubanid) or [] - def douban_tv_recommend(self, doubanid: int) -> List[dict]: + def douban_tv_recommend(self, doubanid: str) -> List[dict]: """ 根据豆瓣ID查询推荐电视剧 :param doubanid: 豆瓣ID diff --git a/app/modules/douban/scraper.py b/app/modules/douban/scraper.py index 1a15bb76..568fdc95 100644 --- a/app/modules/douban/scraper.py +++ b/app/modules/douban/scraper.py @@ -41,6 +41,10 @@ class DoubanScraper: # 生成电影图片 self.__save_image(url=mediainfo.poster_path, file_path=file_path.with_name(f"poster{Path(mediainfo.poster_path).suffix}")) + # 背景图 + if mediainfo.backdrop_path: + self.__save_image(url=mediainfo.backdrop_path, + file_path=file_path.with_name(f"backdrop{Path(mediainfo.backdrop_path).suffix}")) # 电视剧 else: # 不存在时才处理 @@ -51,6 +55,10 @@ class DoubanScraper: # 生成根目录图片 self.__save_image(url=mediainfo.poster_path, file_path=file_path.with_name(f"poster{Path(mediainfo.poster_path).suffix}")) + # 背景图 + if mediainfo.backdrop_path: + self.__save_image(url=mediainfo.backdrop_path, + file_path=file_path.with_name(f"backdrop{Path(mediainfo.backdrop_path).suffix}")) # 季目录NFO if not file_path.with_name("season.nfo").exists(): self.__gen_tv_season_nfo_file(mediainfo=mediainfo,