From bd6d6b6882c20debd6ab813bd4d1e15ac7610baf Mon Sep 17 00:00:00 2001 From: jxxghp Date: Tue, 14 May 2024 08:30:29 +0800 Subject: [PATCH] fix --- app/chain/system.py | 32 +- app/modules/bangumi/__init__.py | 10 +- app/modules/douban/__init__.py | 10 +- app/modules/douban/apiv2.py | 14 +- app/modules/douban/scraper.py | 16 +- app/modules/emby/emby.py | 486 +++++++++++++++---------------- app/modules/fanart/__init__.py | 10 +- app/modules/jellyfin/jellyfin.py | 486 +++++++++++++++---------------- app/modules/wechat/wechat.py | 24 +- app/utils/web.py | 12 +- 10 files changed, 550 insertions(+), 550 deletions(-) diff --git a/app/chain/system.py b/app/chain/system.py index b354d7a4..41499c7b 100644 --- a/app/chain/system.py +++ b/app/chain/system.py @@ -96,14 +96,14 @@ class SystemChain(ChainBase, metaclass=Singleton): 获取后端最新版本 """ try: - with RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( - "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest") as version_res: - if version_res: - ver_json = version_res.json() - version = f"{ver_json['tag_name']}" - return version - else: - return None + version_res = RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( + "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest") + if version_res: + ver_json = version_res.json() + version = f"{ver_json['tag_name']}" + return version + else: + return None except Exception as err: logger.error(f"获取后端最新版本失败:{str(err)}") return None @@ -114,14 +114,14 @@ class SystemChain(ChainBase, metaclass=Singleton): 获取前端最新版本 """ try: - with RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( - "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest") as version_res: - if version_res: - ver_json = version_res.json() - version = f"{ver_json['tag_name']}" - return version - else: - return None + version_res = RequestUtils(proxies=settings.PROXY, headers=settings.GITHUB_HEADERS).get_res( + "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest") + if version_res: + ver_json = version_res.json() + version = f"{ver_json['tag_name']}" + return version + else: + return None except Exception as err: logger.error(f"获取前端最新版本失败:{str(err)}") return None diff --git a/app/modules/bangumi/__init__.py b/app/modules/bangumi/__init__.py index 32ab34f6..f0e14683 100644 --- a/app/modules/bangumi/__init__.py +++ b/app/modules/bangumi/__init__.py @@ -23,11 +23,11 @@ class BangumiModule(_ModuleBase): """ 测试模块连接性 """ - with RequestUtils().get_res("https://api.bgm.tv/") as ret: - if ret and ret.status_code == 200: - return True, "" - elif ret: - return False, f"无法连接Bangumi,错误码:{ret.status_code}" + ret = RequestUtils().get_res("https://api.bgm.tv/") + if ret and ret.status_code == 200: + return True, "" + elif ret: + return False, f"无法连接Bangumi,错误码:{ret.status_code}" return False, "Bangumi网络连接失败" def init_setting(self) -> Tuple[str, Union[str, bool]]: diff --git a/app/modules/douban/__init__.py b/app/modules/douban/__init__.py index 358e7eb7..c31b2eac 100644 --- a/app/modules/douban/__init__.py +++ b/app/modules/douban/__init__.py @@ -38,11 +38,11 @@ class DoubanModule(_ModuleBase): """ 测试模块连接性 """ - with RequestUtils().get_res("https://movie.douban.com/") as ret: - if ret and ret.status_code == 200: - return True, "" - elif ret: - return False, f"无法连接豆瓣,错误码:{ret.status_code}" + ret = RequestUtils().get_res("https://movie.douban.com/") + if ret and ret.status_code == 200: + return True, "" + elif ret: + return False, f"无法连接豆瓣,错误码:{ret.status_code}" return False, "豆瓣网络连接失败" def init_setting(self) -> Tuple[str, Union[str, bool]]: diff --git a/app/modules/douban/apiv2.py b/app/modules/douban/apiv2.py index c7ffa984..72e1287f 100644 --- a/app/modules/douban/apiv2.py +++ b/app/modules/douban/apiv2.py @@ -195,13 +195,13 @@ class DoubanApi(metaclass=Singleton): '_ts': ts, '_sig': self.__sign(url=req_url, ts=ts) }) - with RequestUtils( - ua=choice(self._user_agents), - session=self._session - ).get_res(url=req_url, params=params) as resp: - if resp is not None and resp.status_code == 400 and "rate_limit" in resp.text: - return resp.json() - return resp.json() if resp else {} + resp = RequestUtils( + ua=choice(self._user_agents), + session=self._session + ).get_res(url=req_url, params=params) + if resp is not None and resp.status_code == 400 and "rate_limit" in resp.text: + return resp.json() + return resp.json() if resp else {} @lru_cache(maxsize=settings.CACHE_CONF.get('douban')) def __post(self, url: str, **kwargs) -> dict: diff --git a/app/modules/douban/scraper.py b/app/modules/douban/scraper.py index 872cce2a..2fad1c79 100644 --- a/app/modules/douban/scraper.py +++ b/app/modules/douban/scraper.py @@ -193,15 +193,15 @@ class DoubanScraper: url = url.replace("/format/webp", "/format/jpg") file_path.with_suffix(".jpg") logger.info(f"正在下载{file_path.stem}图片:{url} ...") - with RequestUtils().get_res(url=url) as r: - if r: - if self._transfer_type in ['rclone_move', 'rclone_copy']: - self.__save_remove_file(file_path, r.content) - else: - file_path.write_bytes(r.content) - logger.info(f"图片已保存:{file_path}") + r = RequestUtils().get_res(url=url) + if r: + if self._transfer_type in ['rclone_move', 'rclone_copy']: + self.__save_remove_file(file_path, r.content) else: - logger.info(f"{file_path.stem}图片下载失败,请检查网络连通性") + file_path.write_bytes(r.content) + logger.info(f"图片已保存:{file_path}") + else: + logger.info(f"{file_path.stem}图片下载失败,请检查网络连通性") except Exception as err: logger.error(f"{file_path.stem}图片下载失败:{str(err)}") diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index 1e79263e..6a8fd330 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -56,12 +56,12 @@ class Emby: return [] req_url = "%semby/Library/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json() - else: - logger.error(f"Library/SelectableMediaFolders 未获取到返回数据") - return [] + res = RequestUtils().get_res(req_url) + if res: + return res.json() + else: + logger.error(f"Library/SelectableMediaFolders 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接Library/SelectableMediaFolders 出错:" + str(e)) return [] @@ -74,29 +74,29 @@ class Emby: return [] req_url = "%semby/Library/VirtualFolders/Query?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - library_items = res.json().get("Items") - librarys = [] - for library_item in library_items: - library_name = library_item.get('Name') - pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') - library_paths = [] - for path in pathInfos: - if path.get('NetworkPath'): - library_paths.append(path.get('NetworkPath')) - else: - library_paths.append(path.get('Path')) + res = RequestUtils().get_res(req_url) + if res: + library_items = res.json().get("Items") + librarys = [] + for library_item in library_items: + library_name = library_item.get('Name') + pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') + library_paths = [] + for path in pathInfos: + if path.get('NetworkPath'): + library_paths.append(path.get('NetworkPath')) + else: + library_paths.append(path.get('Path')) - if library_name and library_paths: - librarys.append({ - 'Name': library_name, - 'Path': library_paths - }) - return librarys - else: - logger.error(f"Library/VirtualFolders/Query 未获取到返回数据") - return [] + if library_name and library_paths: + librarys.append({ + 'Name': library_name, + 'Path': library_paths + }) + return librarys + else: + logger.error(f"Library/VirtualFolders/Query 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接Library/VirtualFolders/Query 出错:" + str(e)) return [] @@ -113,12 +113,12 @@ class Emby: user = self.user req_url = f"{self._host}emby/Users/{user}/Views?api_key={self._apikey}" try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json().get("Items") - else: - logger.error(f"User/Views 未获取到返回数据") - return [] + res = RequestUtils().get_res(req_url) + if res: + return res.json().get("Items") + else: + logger.error(f"User/Views 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接User/Views 出错:" + str(e)) return [] @@ -164,20 +164,20 @@ class Emby: return None req_url = "%sUsers?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - users = res.json() - # 先查询是否有与当前用户名称匹配的 - if user_name: - for user in users: - if user.get("Name") == user_name: - return user.get("Id") - # 查询管理员 + res = RequestUtils().get_res(req_url) + if res: + users = res.json() + # 先查询是否有与当前用户名称匹配的 + if user_name: for user in users: - if user.get("Policy", {}).get("IsAdministrator"): + if user.get("Name") == user_name: return user.get("Id") - else: - logger.error(f"Users 未获取到返回数据") + # 查询管理员 + for user in users: + if user.get("Policy", {}).get("IsAdministrator"): + return user.get("Id") + else: + logger.error(f"Users 未获取到返回数据") except Exception as e: logger.error(f"连接Users出错:" + str(e)) return None @@ -227,11 +227,11 @@ class Emby: return None req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json().get("Id") - else: - logger.error(f"System/Info 未获取到返回数据") + res = RequestUtils().get_res(req_url) + if res: + return res.json().get("Id") + else: + logger.error(f"System/Info 未获取到返回数据") except Exception as e: logger.error(f"连接System/Info出错:" + str(e)) @@ -245,12 +245,12 @@ class Emby: return 0 req_url = "%semby/Users/Query?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json().get("TotalRecordCount") - else: - logger.error(f"Users/Query 未获取到返回数据") - return 0 + res = RequestUtils().get_res(req_url) + if res: + return res.json().get("TotalRecordCount") + else: + logger.error(f"Users/Query 未获取到返回数据") + return 0 except Exception as e: logger.error(f"连接Users/Query出错:" + str(e)) return 0 @@ -264,17 +264,17 @@ class Emby: return schemas.Statistic() req_url = "%semby/Items/Counts?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json() - return schemas.Statistic( - movie_count=result.get("MovieCount") or 0, - tv_count=result.get("SeriesCount") or 0, - episode_count=result.get("EpisodeCount") or 0 - ) - else: - logger.error(f"Items/Counts 未获取到返回数据") - return schemas.Statistic() + res = RequestUtils().get_res(req_url) + if res: + result = res.json() + return schemas.Statistic( + movie_count=result.get("MovieCount") or 0, + tv_count=result.get("SeriesCount") or 0, + episode_count=result.get("EpisodeCount") or 0 + ) + else: + logger.error(f"Items/Counts 未获取到返回数据") + return schemas.Statistic() except Exception as e: logger.error(f"连接Items/Counts出错:" + str(e)) return schemas.Statistic() @@ -299,14 +299,14 @@ class Emby: "&api_key=%s") % ( self._host, name, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - res_items = res.json().get("Items") - if res_items: - for res_item in res_items: - if res_item.get('Name') == name and ( - not year or str(res_item.get('ProductionYear')) == str(year)): - return res_item.get('Id') + res = RequestUtils().get_res(req_url) + if res: + res_items = res.json().get("Items") + if res_items: + for res_item in res_items: + if res_item.get('Name') == name and ( + not year or str(res_item.get('ProductionYear')) == str(year)): + return res_item.get('Id') except Exception as e: logger.error(f"连接Items出错:" + str(e)) return None @@ -329,36 +329,36 @@ class Emby: "&Recursive=true&SearchTerm=%s&Limit=10&IncludeSearchTypes=false&api_key=%s" % ( self._host, title, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - res_items = res.json().get("Items") - if res_items: - ret_movies = [] - for res_item in res_items: - item_tmdbid = res_item.get("ProviderIds", {}).get("Tmdb") - mediaserver_item = schemas.MediaServerItem( - server="emby", - library=res_item.get("ParentId"), - item_id=res_item.get("Id"), - item_type=res_item.get("Type"), - title=res_item.get("Name"), - original_title=res_item.get("OriginalTitle"), - year=res_item.get("ProductionYear"), - tmdbid=int(item_tmdbid) if item_tmdbid else None, - imdbid=res_item.get("ProviderIds", {}).get("Imdb"), - tvdbid=res_item.get("ProviderIds", {}).get("Tvdb"), - path=res_item.get("Path") - ) - if tmdb_id and item_tmdbid: - if str(item_tmdbid) != str(tmdb_id): - continue - else: - ret_movies.append(mediaserver_item) - continue - if (mediaserver_item.title == title - and (not year or str(mediaserver_item.year) == str(year))): + res = RequestUtils().get_res(req_url) + if res: + res_items = res.json().get("Items") + if res_items: + ret_movies = [] + for res_item in res_items: + item_tmdbid = res_item.get("ProviderIds", {}).get("Tmdb") + mediaserver_item = schemas.MediaServerItem( + server="emby", + library=res_item.get("ParentId"), + item_id=res_item.get("Id"), + item_type=res_item.get("Type"), + title=res_item.get("Name"), + original_title=res_item.get("OriginalTitle"), + year=res_item.get("ProductionYear"), + tmdbid=int(item_tmdbid) if item_tmdbid else None, + imdbid=res_item.get("ProviderIds", {}).get("Imdb"), + tvdbid=res_item.get("ProviderIds", {}).get("Tvdb"), + path=res_item.get("Path") + ) + if tmdb_id and item_tmdbid: + if str(item_tmdbid) != str(tmdb_id): + continue + else: ret_movies.append(mediaserver_item) - return ret_movies + continue + if (mediaserver_item.title == title + and (not year or str(mediaserver_item.year) == str(year))): + ret_movies.append(mediaserver_item) + return ret_movies except Exception as e: logger.error(f"连接Items出错:" + str(e)) return None @@ -401,25 +401,25 @@ class Emby: try: req_url = "%semby/Shows/%s/Episodes?Season=%s&IsMissing=false&api_key=%s" % ( self._host, item_id, season, self._apikey) - with RequestUtils().get_res(req_url) as res_json: - if res_json: - tv_item = res_json.json() - res_items = tv_item.get("Items") - season_episodes = {} - for res_item in res_items: - season_index = res_item.get("ParentIndexNumber") - if not season_index: - continue - if season and season != season_index: - continue - episode_index = res_item.get("IndexNumber") - if not episode_index: - continue - if season_index not in season_episodes: - season_episodes[season_index] = [] - season_episodes[season_index].append(episode_index) - # 返回 - return item_id, season_episodes + res_json = RequestUtils().get_res(req_url) + if res_json: + tv_item = res_json.json() + res_items = tv_item.get("Items") + season_episodes = {} + for res_item in res_items: + season_index = res_item.get("ParentIndexNumber") + if not season_index: + continue + if season and season != season_index: + continue + episode_index = res_item.get("IndexNumber") + if not episode_index: + continue + if season_index not in season_episodes: + season_episodes[season_index] = [] + season_episodes[season_index].append(episode_index) + # 返回 + return item_id, season_episodes except Exception as e: logger.error(f"连接Shows/Id/Episodes出错:" + str(e)) return None, None @@ -463,13 +463,13 @@ class Emby: req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code != 404: - logger.info(f"影片图片链接:{res.url}") - return res.url - else: - logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) - return None + res = RequestUtils().get_res(req_url) + if res and res.status_code != 404: + logger.info(f"影片图片链接:{res.url}") + return res.url + else: + logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) + return None except Exception as e: logger.error(f"连接Items/Id/Images出错:" + str(e)) return None @@ -482,11 +482,11 @@ class Emby: return False req_url = "%semby/Items/%s/Refresh?Recursive=true&api_key=%s" % (self._host, item_id, self._apikey) try: - with RequestUtils().post_res(req_url) as res: - if res: - return True - else: - logger.info(f"刷新媒体库对象 {item_id} 失败,无法连接Emby!") + res = RequestUtils().post_res(req_url) + if res: + return True + else: + logger.info(f"刷新媒体库对象 {item_id} 失败,无法连接Emby!") except Exception as e: logger.error(f"连接Items/Id/Refresh出错:" + str(e)) return False @@ -500,11 +500,11 @@ class Emby: return False req_url = "%semby/Library/Refresh?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().post_res(req_url) as res: - if res: - return True - else: - logger.info(f"刷新媒体库失败,无法连接Emby!") + res = RequestUtils().post_res(req_url) + if res: + return True + else: + logger.info(f"刷新媒体库失败,无法连接Emby!") except Exception as e: logger.error(f"连接Library/Refresh出错:" + str(e)) return False @@ -579,23 +579,23 @@ class Emby: return None req_url = "%semby/Users/%s/Items/%s?api_key=%s" % (self._host, self.user, itemid, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code == 200: - item = res.json() - tmdbid = item.get("ProviderIds", {}).get("Tmdb") - return schemas.MediaServerItem( - server="emby", - library=item.get("ParentId"), - item_id=item.get("Id"), - item_type=item.get("Type"), - title=item.get("Name"), - original_title=item.get("OriginalTitle"), - year=item.get("ProductionYear"), - tmdbid=int(tmdbid) if tmdbid else None, - imdbid=item.get("ProviderIds", {}).get("Imdb"), - tvdbid=item.get("ProviderIds", {}).get("Tvdb"), - path=item.get("Path") - ) + res = RequestUtils().get_res(req_url) + if res and res.status_code == 200: + item = res.json() + tmdbid = item.get("ProviderIds", {}).get("Tmdb") + return schemas.MediaServerItem( + server="emby", + library=item.get("ParentId"), + item_id=item.get("Id"), + item_type=item.get("Type"), + title=item.get("Name"), + original_title=item.get("OriginalTitle"), + year=item.get("ProductionYear"), + tmdbid=int(tmdbid) if tmdbid else None, + imdbid=item.get("ProviderIds", {}).get("Imdb"), + tvdbid=item.get("ProviderIds", {}).get("Tvdb"), + path=item.get("Path") + ) except Exception as e: logger.error(f"连接Items/Id出错:" + str(e)) return None @@ -610,17 +610,17 @@ class Emby: yield None req_url = "%semby/Users/%s/Items?ParentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code == 200: - results = res.json().get("Items") or [] - for result in results: - if not result: - continue - if result.get("Type") in ["Movie", "Series"]: - yield self.get_iteminfo(result.get("Id")) - elif "Folder" in result.get("Type"): - for item in self.get_items(parent=result.get('Id')): - yield item + res = RequestUtils().get_res(req_url) + if res and res.status_code == 200: + results = res.json().get("Items") or [] + for result in results: + if not result: + continue + if result.get("Type") in ["Movie", "Series"]: + yield self.get_iteminfo(result.get("Id")) + elif "Folder" in result.get("Type"): + for item in self.get_items(parent=result.get('Id')): + yield item except Exception as e: logger.error(f"连接Users/Items出错:" + str(e)) yield None @@ -1032,52 +1032,52 @@ class Emby: req_url = (f"{self._host}Users/{user}/Items/Resume?" f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path") try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json().get("Items") or [] - ret_resume = [] - # 用户媒体库文件夹列表(排除黑名单) - library_folders = self.get_user_library_folders() - for item in result: - if len(ret_resume) == num: - break - if item.get("Type") not in ["Movie", "Episode"]: - continue - item_path = item.get("Path") - if item_path and library_folders and not any( - str(item_path).startswith(folder) for folder in library_folders): - continue - item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value - link = self.get_play_url(item.get("Id")) - if item_type == MediaType.MOVIE.value: - title = item.get("Name") - subtitle = item.get("ProductionYear") + res = RequestUtils().get_res(req_url) + if res: + result = res.json().get("Items") or [] + ret_resume = [] + # 用户媒体库文件夹列表(排除黑名单) + library_folders = self.get_user_library_folders() + for item in result: + if len(ret_resume) == num: + break + if item.get("Type") not in ["Movie", "Episode"]: + continue + item_path = item.get("Path") + if item_path and library_folders and not any( + str(item_path).startswith(folder) for folder in library_folders): + continue + item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value + link = self.get_play_url(item.get("Id")) + if item_type == MediaType.MOVIE.value: + title = item.get("Name") + subtitle = item.get("ProductionYear") + else: + title = f'{item.get("SeriesName")}' + subtitle = f'S{item.get("ParentIndexNumber")}:{item.get("IndexNumber")} - {item.get("Name")}' + if item_type == MediaType.MOVIE.value: + if item.get("BackdropImageTags"): + image = self.__get_backdrop_url(item_id=item.get("Id"), + image_tag=item.get("BackdropImageTags")[0]) else: - title = f'{item.get("SeriesName")}' - subtitle = f'S{item.get("ParentIndexNumber")}:{item.get("IndexNumber")} - {item.get("Name")}' - if item_type == MediaType.MOVIE.value: - if item.get("BackdropImageTags"): - image = self.__get_backdrop_url(item_id=item.get("Id"), - image_tag=item.get("BackdropImageTags")[0]) - else: - image = self.__get_local_image_by_id(item.get("Id")) - else: - image = self.__get_backdrop_url(item_id=item.get("SeriesId"), - image_tag=item.get("SeriesPrimaryImageTag")) - if not image: - image = self.__get_local_image_by_id(item.get("SeriesId")) - ret_resume.append(schemas.MediaServerPlayItem( - id=item.get("Id"), - title=title, - subtitle=subtitle, - type=item_type, - image=image, - link=link, - percent=item.get("UserData", {}).get("PlayedPercentage") - )) - return ret_resume - else: - logger.error(f"Users/Items/Resume 未获取到返回数据") + image = self.__get_local_image_by_id(item.get("Id")) + else: + image = self.__get_backdrop_url(item_id=item.get("SeriesId"), + image_tag=item.get("SeriesPrimaryImageTag")) + if not image: + image = self.__get_local_image_by_id(item.get("SeriesId")) + ret_resume.append(schemas.MediaServerPlayItem( + id=item.get("Id"), + title=title, + subtitle=subtitle, + type=item_type, + image=image, + link=link, + percent=item.get("UserData", {}).get("PlayedPercentage") + )) + return ret_resume + else: + logger.error(f"Users/Items/Resume 未获取到返回数据") except Exception as e: logger.error(f"连接Users/Items/Resume出错:" + str(e)) return [] @@ -1095,35 +1095,35 @@ class Emby: req_url = (f"{self._host}Users/{user}/Items/Latest?" f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path") try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json() or [] - ret_latest = [] - # 用户媒体库文件夹列表(排除黑名单) - library_folders = self.get_user_library_folders() - for item in result: - if len(ret_latest) == num: - break - if item.get("Type") not in ["Movie", "Series"]: - continue - item_path = item.get("Path") - if item_path and library_folders and not any( - str(item_path).startswith(folder) for folder in library_folders): - continue - item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value - link = self.get_play_url(item.get("Id")) - image = self.__get_local_image_by_id(item_id=item.get("Id")) - ret_latest.append(schemas.MediaServerPlayItem( - id=item.get("Id"), - title=item.get("Name"), - subtitle=item.get("ProductionYear"), - type=item_type, - image=image, - link=link - )) - return ret_latest - else: - logger.error(f"Users/Items/Latest 未获取到返回数据") + res = RequestUtils().get_res(req_url) + if res: + result = res.json() or [] + ret_latest = [] + # 用户媒体库文件夹列表(排除黑名单) + library_folders = self.get_user_library_folders() + for item in result: + if len(ret_latest) == num: + break + if item.get("Type") not in ["Movie", "Series"]: + continue + item_path = item.get("Path") + if item_path and library_folders and not any( + str(item_path).startswith(folder) for folder in library_folders): + continue + item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value + link = self.get_play_url(item.get("Id")) + image = self.__get_local_image_by_id(item_id=item.get("Id")) + ret_latest.append(schemas.MediaServerPlayItem( + id=item.get("Id"), + title=item.get("Name"), + subtitle=item.get("ProductionYear"), + type=item_type, + image=image, + link=link + )) + return ret_latest + else: + logger.error(f"Users/Items/Latest 未获取到返回数据") except Exception as e: logger.error(f"连接Users/Items/Latest出错:" + str(e)) return [] diff --git a/app/modules/fanart/__init__.py b/app/modules/fanart/__init__.py index 9a5a8273..28ba766d 100644 --- a/app/modules/fanart/__init__.py +++ b/app/modules/fanart/__init__.py @@ -321,11 +321,11 @@ class FanartModule(_ModuleBase): """ 测试模块连接性 """ - with RequestUtils().get_res("https://webservice.fanart.tv") as ret: - if ret and ret.status_code == 200: - return True, "" - elif ret: - return False, f"无法连接fanart,错误码:{ret.status_code}" + ret = RequestUtils().get_res("https://webservice.fanart.tv") + if ret and ret.status_code == 200: + return True, "" + elif ret: + return False, f"无法连接fanart,错误码:{ret.status_code}" return False, "fanart网络连接失败" def init_setting(self) -> Tuple[str, Union[str, bool]]: diff --git a/app/modules/jellyfin/jellyfin.py b/app/modules/jellyfin/jellyfin.py index f1a4d5b8..a63ea356 100644 --- a/app/modules/jellyfin/jellyfin.py +++ b/app/modules/jellyfin/jellyfin.py @@ -52,12 +52,12 @@ class Jellyfin: return [] req_url = "%sLibrary/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json() - else: - logger.error(f"Library/SelectableMediaFolders 未获取到返回数据") - return [] + res = RequestUtils().get_res(req_url) + if res: + return res.json() + else: + logger.error(f"Library/SelectableMediaFolders 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接Library/SelectableMediaFolders 出错:" + str(e)) return [] @@ -70,29 +70,29 @@ class Jellyfin: return [] req_url = "%sLibrary/VirtualFolders?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - library_items = res.json() - librarys = [] - for library_item in library_items: - library_name = library_item.get('Name') - pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') - library_paths = [] - for path in pathInfos: - if path.get('NetworkPath'): - library_paths.append(path.get('NetworkPath')) - else: - library_paths.append(path.get('Path')) + res = RequestUtils().get_res(req_url) + if res: + library_items = res.json() + librarys = [] + for library_item in library_items: + library_name = library_item.get('Name') + pathInfos = library_item.get('LibraryOptions', {}).get('PathInfos') + library_paths = [] + for path in pathInfos: + if path.get('NetworkPath'): + library_paths.append(path.get('NetworkPath')) + else: + library_paths.append(path.get('Path')) - if library_name and library_paths: - librarys.append({ - 'Name': library_name, - 'Path': library_paths - }) - return librarys - else: - logger.error(f"Library/VirtualFolders 未获取到返回数据") - return [] + if library_name and library_paths: + librarys.append({ + 'Name': library_name, + 'Path': library_paths + }) + return librarys + else: + logger.error(f"Library/VirtualFolders 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接Library/VirtualFolders 出错:" + str(e)) return [] @@ -109,12 +109,12 @@ class Jellyfin: user = self.user req_url = f"{self._host}Users/{user}/Views?api_key={self._apikey}" try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json().get("Items") - else: - logger.error(f"Users/Views 未获取到返回数据") - return [] + res = RequestUtils().get_res(req_url) + if res: + return res.json().get("Items") + else: + logger.error(f"Users/Views 未获取到返回数据") + return [] except Exception as e: logger.error(f"连接Users/Views 出错:" + str(e)) return [] @@ -163,12 +163,12 @@ class Jellyfin: return 0 req_url = "%sUsers?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return len(res.json()) - else: - logger.error(f"Users 未获取到返回数据") - return 0 + res = RequestUtils().get_res(req_url) + if res: + return len(res.json()) + else: + logger.error(f"Users 未获取到返回数据") + return 0 except Exception as e: logger.error(f"连接Users出错:" + str(e)) return 0 @@ -181,20 +181,20 @@ class Jellyfin: return None req_url = "%sUsers?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - users = res.json() - # 先查询是否有与当前用户名称匹配的 - if user_name: - for user in users: - if user.get("Name") == user_name: - return user.get("Id") - # 查询管理员 + res = RequestUtils().get_res(req_url) + if res: + users = res.json() + # 先查询是否有与当前用户名称匹配的 + if user_name: for user in users: - if user.get("Policy", {}).get("IsAdministrator"): + if user.get("Name") == user_name: return user.get("Id") - else: - logger.error(f"Users 未获取到返回数据") + # 查询管理员 + for user in users: + if user.get("Policy", {}).get("IsAdministrator"): + return user.get("Id") + else: + logger.error(f"Users 未获取到返回数据") except Exception as e: logger.error(f"连接Users出错:" + str(e)) return None @@ -244,11 +244,11 @@ class Jellyfin: return None req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json().get("Id") - else: - logger.error(f"System/Info 未获取到返回数据") + res = RequestUtils().get_res(req_url) + if res: + return res.json().get("Id") + else: + logger.error(f"System/Info 未获取到返回数据") except Exception as e: logger.error(f"连接System/Info出错:" + str(e)) return None @@ -262,17 +262,17 @@ class Jellyfin: return schemas.Statistic() req_url = "%sItems/Counts?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json() - return schemas.Statistic( - movie_count=result.get("MovieCount") or 0, - tv_count=result.get("SeriesCount") or 0, - episode_count=result.get("EpisodeCount") or 0 - ) - else: - logger.error(f"Items/Counts 未获取到返回数据") - return schemas.Statistic() + res = RequestUtils().get_res(req_url) + if res: + result = res.json() + return schemas.Statistic( + movie_count=result.get("MovieCount") or 0, + tv_count=result.get("SeriesCount") or 0, + episode_count=result.get("EpisodeCount") or 0 + ) + else: + logger.error(f"Items/Counts 未获取到返回数据") + return schemas.Statistic() except Exception as e: logger.error(f"连接Items/Counts出错:" + str(e)) return schemas.Statistic() @@ -287,14 +287,14 @@ class Jellyfin: "api_key=%s&searchTerm=%s&IncludeItemTypes=Series&Limit=10&Recursive=true") % ( self._host, self.user, self._apikey, name) try: - with RequestUtils().get_res(req_url) as res: - if res: - res_items = res.json().get("Items") - if res_items: - for res_item in res_items: - if res_item.get('Name') == name and ( - not year or str(res_item.get('ProductionYear')) == str(year)): - return res_item.get('Id') + res = RequestUtils().get_res(req_url) + if res: + res_items = res.json().get("Items") + if res_items: + for res_item in res_items: + if res_item.get('Name') == name and ( + not year or str(res_item.get('ProductionYear')) == str(year)): + return res_item.get('Id') except Exception as e: logger.error(f"连接Items出错:" + str(e)) return None @@ -317,36 +317,36 @@ class Jellyfin: "api_key=%s&searchTerm=%s&IncludeItemTypes=Movie&Limit=10&Recursive=true") % ( self._host, self.user, self._apikey, title) try: - with RequestUtils().get_res(req_url) as res: - if res: - res_items = res.json().get("Items") - if res_items: - ret_movies = [] - for item in res_items: - item_tmdbid = item.get("ProviderIds", {}).get("Tmdb") - mediaserver_item = schemas.MediaServerItem( - server="jellyfin", - library=item.get("ParentId"), - item_id=item.get("Id"), - item_type=item.get("Type"), - title=item.get("Name"), - original_title=item.get("OriginalTitle"), - year=item.get("ProductionYear"), - tmdbid=int(item_tmdbid) if item_tmdbid else None, - imdbid=item.get("ProviderIds", {}).get("Imdb"), - tvdbid=item.get("ProviderIds", {}).get("Tvdb"), - path=item.get("Path") - ) - if tmdb_id and item_tmdbid: - if str(item_tmdbid) != str(tmdb_id): - continue - else: - ret_movies.append(mediaserver_item) - continue - if mediaserver_item.title == title and ( - not year or str(mediaserver_item.year) == str(year)): + res = RequestUtils().get_res(req_url) + if res: + res_items = res.json().get("Items") + if res_items: + ret_movies = [] + for item in res_items: + item_tmdbid = item.get("ProviderIds", {}).get("Tmdb") + mediaserver_item = schemas.MediaServerItem( + server="jellyfin", + library=item.get("ParentId"), + item_id=item.get("Id"), + item_type=item.get("Type"), + title=item.get("Name"), + original_title=item.get("OriginalTitle"), + year=item.get("ProductionYear"), + tmdbid=int(item_tmdbid) if item_tmdbid else None, + imdbid=item.get("ProviderIds", {}).get("Imdb"), + tvdbid=item.get("ProviderIds", {}).get("Tvdb"), + path=item.get("Path") + ) + if tmdb_id and item_tmdbid: + if str(item_tmdbid) != str(tmdb_id): + continue + else: ret_movies.append(mediaserver_item) - return ret_movies + continue + if mediaserver_item.title == title and ( + not year or str(mediaserver_item.year) == str(year)): + ret_movies.append(mediaserver_item) + return ret_movies except Exception as e: logger.error(f"连接Items出错:" + str(e)) return None @@ -387,25 +387,25 @@ class Jellyfin: try: req_url = "%sShows/%s/Episodes?season=%s&&userId=%s&isMissing=false&api_key=%s" % ( self._host, item_id, season, self.user, self._apikey) - with RequestUtils().get_res(req_url) as res_json: - if res_json: - tv_info = res_json.json() - res_items = tv_info.get("Items") - # 返回的季集信息 - season_episodes = {} - for res_item in res_items: - season_index = res_item.get("ParentIndexNumber") - if not season_index: - continue - if season and season != season_index: - continue - episode_index = res_item.get("IndexNumber") - if not episode_index: - continue - if not season_episodes.get(season_index): - season_episodes[season_index] = [] - season_episodes[season_index].append(episode_index) - return item_id, season_episodes + res_json = RequestUtils().get_res(req_url) + if res_json: + tv_info = res_json.json() + res_items = tv_info.get("Items") + # 返回的季集信息 + season_episodes = {} + for res_item in res_items: + season_index = res_item.get("ParentIndexNumber") + if not season_index: + continue + if season and season != season_index: + continue + episode_index = res_item.get("IndexNumber") + if not episode_index: + continue + if not season_episodes.get(season_index): + season_episodes[season_index] = [] + season_episodes[season_index].append(episode_index) + return item_id, season_episodes except Exception as e: logger.error(f"连接Shows/Id/Episodes出错:" + str(e)) return None, None @@ -458,13 +458,13 @@ class Jellyfin: _host = self._playhost req_url = "%sItems/%s/Images/%s" % (_host, item_id, image_type) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code != 404: - logger.info(f"影片图片链接:{res.url}") - return res.url - else: - logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) - return None + res = RequestUtils().get_res(req_url) + if res and res.status_code != 404: + logger.info(f"影片图片链接:{res.url}") + return res.url + else: + logger.error("Items/Id/Images 未获取到返回数据或无该影片{}图片".format(image_type)) + return None except Exception as e: logger.error(f"连接Items/Id/Images出错:" + str(e)) return None @@ -479,12 +479,12 @@ class Jellyfin: """ req_url = "%sItems/%s/Ancestors?api_key=%s" % (self._host, item_id, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res: - return res.json()[index].get(key) - else: - logger.error(f"Items/Id/Ancestors 未获取到返回数据") - return None + res = RequestUtils().get_res(req_url) + if res: + return res.json()[index].get(key) + else: + logger.error(f"Items/Id/Ancestors 未获取到返回数据") + return None except Exception as e: logger.error(f"连接Items/Id/Ancestors出错:" + str(e)) return None @@ -497,11 +497,11 @@ class Jellyfin: return False req_url = "%sLibrary/Refresh?api_key=%s" % (self._host, self._apikey) try: - with RequestUtils().post_res(req_url) as res: - if res: - return True - else: - logger.info(f"刷新媒体库失败,无法连接Jellyfin!") + res = RequestUtils().post_res(req_url) + if res: + return True + else: + logger.info(f"刷新媒体库失败,无法连接Jellyfin!") except Exception as e: logger.error(f"连接Library/Refresh出错:" + str(e)) return False @@ -632,23 +632,23 @@ class Jellyfin: req_url = "%sUsers/%s/Items/%s?api_key=%s" % ( self._host, self.user, itemid, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code == 200: - item = res.json() - tmdbid = item.get("ProviderIds", {}).get("Tmdb") - return schemas.MediaServerItem( - server="jellyfin", - library=item.get("ParentId"), - item_id=item.get("Id"), - item_type=item.get("Type"), - title=item.get("Name"), - original_title=item.get("OriginalTitle"), - year=item.get("ProductionYear"), - tmdbid=int(tmdbid) if tmdbid else None, - imdbid=item.get("ProviderIds", {}).get("Imdb"), - tvdbid=item.get("ProviderIds", {}).get("Tvdb"), - path=item.get("Path") - ) + res = RequestUtils().get_res(req_url) + if res and res.status_code == 200: + item = res.json() + tmdbid = item.get("ProviderIds", {}).get("Tmdb") + return schemas.MediaServerItem( + server="jellyfin", + library=item.get("ParentId"), + item_id=item.get("Id"), + item_type=item.get("Type"), + title=item.get("Name"), + original_title=item.get("OriginalTitle"), + year=item.get("ProductionYear"), + tmdbid=int(tmdbid) if tmdbid else None, + imdbid=item.get("ProviderIds", {}).get("Imdb"), + tvdbid=item.get("ProviderIds", {}).get("Tvdb"), + path=item.get("Path") + ) except Exception as e: logger.error(f"连接Users/Items出错:" + str(e)) return None @@ -663,17 +663,17 @@ class Jellyfin: yield None req_url = "%sUsers/%s/Items?parentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey) try: - with RequestUtils().get_res(req_url) as res: - if res and res.status_code == 200: - results = res.json().get("Items") or [] - for result in results: - if not result: - continue - if result.get("Type") in ["Movie", "Series"]: - yield self.get_iteminfo(result.get("Id")) - elif "Folder" in result.get("Type"): - for item in self.get_items(result.get("Id")): - yield item + res = RequestUtils().get_res(req_url) + if res and res.status_code == 200: + results = res.json().get("Items") or [] + for result in results: + if not result: + continue + if result.get("Type") in ["Movie", "Series"]: + yield self.get_iteminfo(result.get("Id")) + elif "Folder" in result.get("Type"): + for item in self.get_items(result.get("Id")): + yield item except Exception as e: logger.error(f"连接Users/Items出错:" + str(e)) yield None @@ -761,50 +761,50 @@ class Jellyfin: req_url = (f"{self._host}Users/{user}/Items/Resume?" f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path") try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json().get("Items") or [] - ret_resume = [] - # 用户媒体库文件夹列表(排除黑名单) - library_folders = self.get_user_library_folders() - for item in result: - if len(ret_resume) == num: - break - if item.get("Type") not in ["Movie", "Episode"]: - continue - item_path = item.get("Path") - if item_path and library_folders and not any( - str(item_path).startswith(folder) for folder in library_folders): - continue - item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value - link = self.get_play_url(item.get("Id")) - if item.get("BackdropImageTags"): - image = self.__get_backdrop_url(item_id=item.get("Id"), - image_tag=item.get("BackdropImageTags")[0]) - else: - image = self.__get_local_image_by_id(item.get("Id")) - # 小部分剧集无[xxx-S01E01-thumb.jpg]图片 - with RequestUtils().get_res(image) as image_res: - if not image_res or image_res.status_code == 404: - image = self.generate_image_link(item.get("Id"), "Backdrop", False) - if item_type == MediaType.MOVIE.value: - title = item.get("Name") - subtitle = item.get("ProductionYear") - else: - title = f'{item.get("SeriesName")}' - subtitle = f'S{item.get("ParentIndexNumber")}:{item.get("IndexNumber")} - {item.get("Name")}' - ret_resume.append(schemas.MediaServerPlayItem( - id=item.get("Id"), - title=title, - subtitle=subtitle, - type=item_type, - image=image, - link=link, - percent=item.get("UserData", {}).get("PlayedPercentage") - )) - return ret_resume - else: - logger.error(f"Users/Items/Resume 未获取到返回数据") + res = RequestUtils().get_res(req_url) + if res: + result = res.json().get("Items") or [] + ret_resume = [] + # 用户媒体库文件夹列表(排除黑名单) + library_folders = self.get_user_library_folders() + for item in result: + if len(ret_resume) == num: + break + if item.get("Type") not in ["Movie", "Episode"]: + continue + item_path = item.get("Path") + if item_path and library_folders and not any( + str(item_path).startswith(folder) for folder in library_folders): + continue + item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value + link = self.get_play_url(item.get("Id")) + if item.get("BackdropImageTags"): + image = self.__get_backdrop_url(item_id=item.get("Id"), + image_tag=item.get("BackdropImageTags")[0]) + else: + image = self.__get_local_image_by_id(item.get("Id")) + # 小部分剧集无[xxx-S01E01-thumb.jpg]图片 + image_res = RequestUtils().get_res(image) + if not image_res or image_res.status_code == 404: + image = self.generate_image_link(item.get("Id"), "Backdrop", False) + if item_type == MediaType.MOVIE.value: + title = item.get("Name") + subtitle = item.get("ProductionYear") + else: + title = f'{item.get("SeriesName")}' + subtitle = f'S{item.get("ParentIndexNumber")}:{item.get("IndexNumber")} - {item.get("Name")}' + ret_resume.append(schemas.MediaServerPlayItem( + id=item.get("Id"), + title=title, + subtitle=subtitle, + type=item_type, + image=image, + link=link, + percent=item.get("UserData", {}).get("PlayedPercentage") + )) + return ret_resume + else: + logger.error(f"Users/Items/Resume 未获取到返回数据") except Exception as e: logger.error(f"连接Users/Items/Resume出错:" + str(e)) return [] @@ -822,35 +822,35 @@ class Jellyfin: req_url = (f"{self._host}Users/{user}/Items/Latest?" f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path") try: - with RequestUtils().get_res(req_url) as res: - if res: - result = res.json() or [] - ret_latest = [] - # 用户媒体库文件夹列表(排除黑名单) - library_folders = self.get_user_library_folders() - for item in result: - if len(ret_latest) == num: - break - if item.get("Type") not in ["Movie", "Series"]: - continue - item_path = item.get("Path") - if item_path and library_folders and not any( - str(item_path).startswith(folder) for folder in library_folders): - continue - item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value - link = self.get_play_url(item.get("Id")) - image = self.__get_local_image_by_id(item_id=item.get("Id")) - ret_latest.append(schemas.MediaServerPlayItem( - id=item.get("Id"), - title=item.get("Name"), - subtitle=item.get("ProductionYear"), - type=item_type, - image=image, - link=link - )) - return ret_latest - else: - logger.error(f"Users/Items/Latest 未获取到返回数据") + res = RequestUtils().get_res(req_url) + if res: + result = res.json() or [] + ret_latest = [] + # 用户媒体库文件夹列表(排除黑名单) + library_folders = self.get_user_library_folders() + for item in result: + if len(ret_latest) == num: + break + if item.get("Type") not in ["Movie", "Series"]: + continue + item_path = item.get("Path") + if item_path and library_folders and not any( + str(item_path).startswith(folder) for folder in library_folders): + continue + item_type = MediaType.MOVIE.value if item.get("Type") == "Movie" else MediaType.TV.value + link = self.get_play_url(item.get("Id")) + image = self.__get_local_image_by_id(item_id=item.get("Id")) + ret_latest.append(schemas.MediaServerPlayItem( + id=item.get("Id"), + title=item.get("Name"), + subtitle=item.get("ProductionYear"), + type=item_type, + image=image, + link=link + )) + return ret_latest + else: + logger.error(f"Users/Items/Latest 未获取到返回数据") except Exception as e: logger.error(f"连接Users/Items/Latest出错:" + str(e)) return [] diff --git a/app/modules/wechat/wechat.py b/app/modules/wechat/wechat.py index 79461c5e..275ed91f 100644 --- a/app/modules/wechat/wechat.py +++ b/app/modules/wechat/wechat.py @@ -71,18 +71,18 @@ class WeChat: return None try: token_url = self._token_url % (self._corpid, self._appsecret) - with RequestUtils().get_res(token_url) as res: - if res: - ret_json = res.json() - if ret_json.get('errcode') == 0: - self._access_token = ret_json.get('access_token') - self._expires_in = ret_json.get('expires_in') - self._access_token_time = datetime.now() - elif res is not None: - logger.error(f"获取微信access_token失败,错误码:{res.status_code},错误原因:{res.reason}") - else: - logger.error(f"获取微信access_token失败,未获取到返回信息") - raise Exception("获取微信access_token失败,网络连接失败") + res = RequestUtils().get_res(token_url) + if res: + ret_json = res.json() + if ret_json.get('errcode') == 0: + self._access_token = ret_json.get('access_token') + self._expires_in = ret_json.get('expires_in') + self._access_token_time = datetime.now() + elif res is not None: + logger.error(f"获取微信access_token失败,错误码:{res.status_code},错误原因:{res.reason}") + else: + logger.error(f"获取微信access_token失败,未获取到返回信息") + raise Exception("获取微信access_token失败,网络连接失败") except Exception as e: logger.error(f"获取微信access_token失败,错误信息:{str(e)}") return None diff --git a/app/utils/web.py b/app/utils/web.py index 96b7a125..5fa20237 100644 --- a/app/utils/web.py +++ b/app/utils/web.py @@ -40,9 +40,9 @@ class WebUtils: } """ try: - with RequestUtils().get_res(f"https://api.mir6.com/api/ip?ip={ip}&type=json") as r: - if r: - return r.json().get("data", {}).get("location") or '' + r = RequestUtils().get_res(f"https://api.mir6.com/api/ip?ip={ip}&type=json") + if r: + return r.json().get("data", {}).get("location") or '' except Exception as err: print(str(err)) return "" @@ -65,9 +65,9 @@ class WebUtils: } """ try: - with RequestUtils().get_res(f"https://whois.pconline.com.cn/ipJson.jsp?json=true&ip={ip}") as r: - if r: - return r.json().get("addr") or '' + r = RequestUtils().get_res(f"https://whois.pconline.com.cn/ipJson.jsp?json=true&ip={ip}") + if r: + return r.json().get("addr") or '' except Exception as err: print(str(err)) return ""