fix requests
This commit is contained in:
@ -20,7 +20,7 @@ class BangumiModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
测试模块连接性
|
测试模块连接性
|
||||||
"""
|
"""
|
||||||
ret = RequestUtils().get_res("https://api.bgm.tv/")
|
with RequestUtils().get_res("https://api.bgm.tv/") as ret:
|
||||||
if ret and ret.status_code == 200:
|
if ret and ret.status_code == 200:
|
||||||
return True, ""
|
return True, ""
|
||||||
elif ret:
|
elif ret:
|
||||||
|
@ -30,13 +30,13 @@ class DoubanModule(_ModuleBase):
|
|||||||
self.cache = DoubanCache()
|
self.cache = DoubanCache()
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
pass
|
self.doubanapi.close()
|
||||||
|
|
||||||
def test(self) -> Tuple[bool, str]:
|
def test(self) -> Tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
测试模块连接性
|
测试模块连接性
|
||||||
"""
|
"""
|
||||||
ret = RequestUtils().get_res("https://movie.douban.com/")
|
with RequestUtils().get_res("https://movie.douban.com/") as ret:
|
||||||
if ret and ret.status_code == 200:
|
if ret and ret.status_code == 200:
|
||||||
return True, ""
|
return True, ""
|
||||||
elif ret:
|
elif ret:
|
||||||
|
@ -210,7 +210,7 @@ class DoubanApi(metaclass=Singleton):
|
|||||||
},
|
},
|
||||||
data={
|
data={
|
||||||
"apikey": "0ab215a8b1977939201640fa14c66bab",
|
"apikey": "0ab215a8b1977939201640fa14c66bab",
|
||||||
},
|
}
|
||||||
)
|
)
|
||||||
"""
|
"""
|
||||||
req_url = self._api_url + url
|
req_url = self._api_url + url
|
||||||
@ -481,6 +481,6 @@ class DoubanApi(metaclass=Singleton):
|
|||||||
"""
|
"""
|
||||||
self.__invoke.cache_clear()
|
self.__invoke.cache_clear()
|
||||||
|
|
||||||
def __del__(self):
|
def close(self):
|
||||||
if self._session:
|
if self._session:
|
||||||
self._session.close()
|
self._session.close()
|
||||||
|
@ -193,7 +193,7 @@ class DoubanScraper:
|
|||||||
url = url.replace("/format/webp", "/format/jpg")
|
url = url.replace("/format/webp", "/format/jpg")
|
||||||
file_path.with_suffix(".jpg")
|
file_path.with_suffix(".jpg")
|
||||||
logger.info(f"正在下载{file_path.stem}图片:{url} ...")
|
logger.info(f"正在下载{file_path.stem}图片:{url} ...")
|
||||||
r = RequestUtils().get_res(url=url)
|
with RequestUtils().get_res(url=url) as r:
|
||||||
if r:
|
if r:
|
||||||
if self._transfer_type in ['rclone_move', 'rclone_copy']:
|
if self._transfer_type in ['rclone_move', 'rclone_copy']:
|
||||||
self.__save_remove_file(file_path, r.content)
|
self.__save_remove_file(file_path, r.content)
|
||||||
|
@ -56,7 +56,7 @@ class Emby:
|
|||||||
return []
|
return []
|
||||||
req_url = "%semby/Library/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey)
|
req_url = "%semby/Library/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json()
|
return res.json()
|
||||||
else:
|
else:
|
||||||
@ -74,7 +74,7 @@ class Emby:
|
|||||||
return []
|
return []
|
||||||
req_url = "%semby/Library/VirtualFolders/Query?api_key=%s" % (self._host, self._apikey)
|
req_url = "%semby/Library/VirtualFolders/Query?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
library_items = res.json().get("Items")
|
library_items = res.json().get("Items")
|
||||||
librarys = []
|
librarys = []
|
||||||
@ -113,7 +113,7 @@ class Emby:
|
|||||||
user = self.user
|
user = self.user
|
||||||
req_url = f"{self._host}emby/Users/{user}/Views?api_key={self._apikey}"
|
req_url = f"{self._host}emby/Users/{user}/Views?api_key={self._apikey}"
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json().get("Items")
|
return res.json().get("Items")
|
||||||
else:
|
else:
|
||||||
@ -164,7 +164,7 @@ class Emby:
|
|||||||
return None
|
return None
|
||||||
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
users = res.json()
|
users = res.json()
|
||||||
# 先查询是否有与当前用户名称匹配的
|
# 先查询是否有与当前用户名称匹配的
|
||||||
@ -227,7 +227,7 @@ class Emby:
|
|||||||
return None
|
return None
|
||||||
req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json().get("Id")
|
return res.json().get("Id")
|
||||||
else:
|
else:
|
||||||
@ -245,7 +245,7 @@ class Emby:
|
|||||||
return 0
|
return 0
|
||||||
req_url = "%semby/Users/Query?api_key=%s" % (self._host, self._apikey)
|
req_url = "%semby/Users/Query?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json().get("TotalRecordCount")
|
return res.json().get("TotalRecordCount")
|
||||||
else:
|
else:
|
||||||
@ -264,7 +264,7 @@ class Emby:
|
|||||||
return schemas.Statistic()
|
return schemas.Statistic()
|
||||||
req_url = "%semby/Items/Counts?api_key=%s" % (self._host, self._apikey)
|
req_url = "%semby/Items/Counts?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json()
|
result = res.json()
|
||||||
return schemas.Statistic(
|
return schemas.Statistic(
|
||||||
@ -299,7 +299,7 @@ class Emby:
|
|||||||
"&api_key=%s") % (
|
"&api_key=%s") % (
|
||||||
self._host, name, self._apikey)
|
self._host, name, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
res_items = res.json().get("Items")
|
res_items = res.json().get("Items")
|
||||||
if res_items:
|
if res_items:
|
||||||
@ -329,7 +329,7 @@ class Emby:
|
|||||||
"&Recursive=true&SearchTerm=%s&Limit=10&IncludeSearchTypes=false&api_key=%s" % (
|
"&Recursive=true&SearchTerm=%s&Limit=10&IncludeSearchTypes=false&api_key=%s" % (
|
||||||
self._host, title, self._apikey)
|
self._host, title, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
res_items = res.json().get("Items")
|
res_items = res.json().get("Items")
|
||||||
if res_items:
|
if res_items:
|
||||||
@ -401,7 +401,7 @@ class Emby:
|
|||||||
try:
|
try:
|
||||||
req_url = "%semby/Shows/%s/Episodes?Season=%s&IsMissing=false&api_key=%s" % (
|
req_url = "%semby/Shows/%s/Episodes?Season=%s&IsMissing=false&api_key=%s" % (
|
||||||
self._host, item_id, season, self._apikey)
|
self._host, item_id, season, self._apikey)
|
||||||
res_json = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res_json:
|
||||||
if res_json:
|
if res_json:
|
||||||
tv_item = res_json.json()
|
tv_item = res_json.json()
|
||||||
res_items = tv_item.get("Items")
|
res_items = tv_item.get("Items")
|
||||||
@ -464,7 +464,7 @@ class Emby:
|
|||||||
|
|
||||||
req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type)
|
req_url = "%sItems/%s/Images/%s" % (self._playhost, item_id, image_type)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code != 404:
|
if res and res.status_code != 404:
|
||||||
logger.info("影片图片链接:{}".format(res.url))
|
logger.info("影片图片链接:{}".format(res.url))
|
||||||
return res.url
|
return res.url
|
||||||
@ -483,7 +483,7 @@ class Emby:
|
|||||||
return False
|
return False
|
||||||
req_url = "%semby/Items/%s/Refresh?Recursive=true&api_key=%s" % (self._host, item_id, self._apikey)
|
req_url = "%semby/Items/%s/Refresh?Recursive=true&api_key=%s" % (self._host, item_id, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().post_res(req_url)
|
with RequestUtils().post_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@ -501,7 +501,7 @@ class Emby:
|
|||||||
return False
|
return False
|
||||||
req_url = "%semby/Library/Refresh?api_key=%s" % (self._host, self._apikey)
|
req_url = "%semby/Library/Refresh?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().post_res(req_url)
|
with RequestUtils().post_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@ -580,7 +580,7 @@ class Emby:
|
|||||||
return None
|
return None
|
||||||
req_url = "%semby/Users/%s/Items/%s?api_key=%s" % (self._host, self.user, itemid, self._apikey)
|
req_url = "%semby/Users/%s/Items/%s?api_key=%s" % (self._host, self.user, itemid, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code == 200:
|
if res and res.status_code == 200:
|
||||||
item = res.json()
|
item = res.json()
|
||||||
tmdbid = item.get("ProviderIds", {}).get("Tmdb")
|
tmdbid = item.get("ProviderIds", {}).get("Tmdb")
|
||||||
@ -611,7 +611,7 @@ class Emby:
|
|||||||
yield None
|
yield None
|
||||||
req_url = "%semby/Users/%s/Items?ParentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey)
|
req_url = "%semby/Users/%s/Items?ParentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code == 200:
|
if res and res.status_code == 200:
|
||||||
results = res.json().get("Items") or []
|
results = res.json().get("Items") or []
|
||||||
for result in results:
|
for result in results:
|
||||||
@ -1033,7 +1033,7 @@ class Emby:
|
|||||||
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
||||||
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json().get("Items") or []
|
result = res.json().get("Items") or []
|
||||||
ret_resume = []
|
ret_resume = []
|
||||||
@ -1096,7 +1096,7 @@ class Emby:
|
|||||||
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
||||||
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json() or []
|
result = res.json() or []
|
||||||
ret_latest = []
|
ret_latest = []
|
||||||
|
@ -321,7 +321,7 @@ class FanartModule(_ModuleBase):
|
|||||||
"""
|
"""
|
||||||
测试模块连接性
|
测试模块连接性
|
||||||
"""
|
"""
|
||||||
ret = RequestUtils().get_res("https://webservice.fanart.tv")
|
with RequestUtils().get_res("https://webservice.fanart.tv") as ret:
|
||||||
if ret and ret.status_code == 200:
|
if ret and ret.status_code == 200:
|
||||||
return True, ""
|
return True, ""
|
||||||
elif ret:
|
elif ret:
|
||||||
|
@ -52,7 +52,7 @@ class Jellyfin:
|
|||||||
return []
|
return []
|
||||||
req_url = "%sLibrary/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sLibrary/SelectableMediaFolders?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json()
|
return res.json()
|
||||||
else:
|
else:
|
||||||
@ -70,7 +70,7 @@ class Jellyfin:
|
|||||||
return []
|
return []
|
||||||
req_url = "%sLibrary/VirtualFolders?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sLibrary/VirtualFolders?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
library_items = res.json()
|
library_items = res.json()
|
||||||
librarys = []
|
librarys = []
|
||||||
@ -109,7 +109,7 @@ class Jellyfin:
|
|||||||
user = self.user
|
user = self.user
|
||||||
req_url = f"{self._host}Users/{user}/Views?api_key={self._apikey}"
|
req_url = f"{self._host}Users/{user}/Views?api_key={self._apikey}"
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json().get("Items")
|
return res.json().get("Items")
|
||||||
else:
|
else:
|
||||||
@ -163,7 +163,7 @@ class Jellyfin:
|
|||||||
return 0
|
return 0
|
||||||
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return len(res.json())
|
return len(res.json())
|
||||||
else:
|
else:
|
||||||
@ -181,7 +181,7 @@ class Jellyfin:
|
|||||||
return None
|
return None
|
||||||
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sUsers?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
users = res.json()
|
users = res.json()
|
||||||
# 先查询是否有与当前用户名称匹配的
|
# 先查询是否有与当前用户名称匹配的
|
||||||
@ -244,7 +244,7 @@ class Jellyfin:
|
|||||||
return None
|
return None
|
||||||
req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sSystem/Info?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json().get("Id")
|
return res.json().get("Id")
|
||||||
else:
|
else:
|
||||||
@ -262,7 +262,7 @@ class Jellyfin:
|
|||||||
return schemas.Statistic()
|
return schemas.Statistic()
|
||||||
req_url = "%sItems/Counts?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sItems/Counts?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json()
|
result = res.json()
|
||||||
return schemas.Statistic(
|
return schemas.Statistic(
|
||||||
@ -287,7 +287,7 @@ class Jellyfin:
|
|||||||
"api_key=%s&searchTerm=%s&IncludeItemTypes=Series&Limit=10&Recursive=true") % (
|
"api_key=%s&searchTerm=%s&IncludeItemTypes=Series&Limit=10&Recursive=true") % (
|
||||||
self._host, self.user, self._apikey, name)
|
self._host, self.user, self._apikey, name)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
res_items = res.json().get("Items")
|
res_items = res.json().get("Items")
|
||||||
if res_items:
|
if res_items:
|
||||||
@ -317,7 +317,7 @@ class Jellyfin:
|
|||||||
"api_key=%s&searchTerm=%s&IncludeItemTypes=Movie&Limit=10&Recursive=true") % (
|
"api_key=%s&searchTerm=%s&IncludeItemTypes=Movie&Limit=10&Recursive=true") % (
|
||||||
self._host, self.user, self._apikey, title)
|
self._host, self.user, self._apikey, title)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
res_items = res.json().get("Items")
|
res_items = res.json().get("Items")
|
||||||
if res_items:
|
if res_items:
|
||||||
@ -387,7 +387,7 @@ class Jellyfin:
|
|||||||
try:
|
try:
|
||||||
req_url = "%sShows/%s/Episodes?season=%s&&userId=%s&isMissing=false&api_key=%s" % (
|
req_url = "%sShows/%s/Episodes?season=%s&&userId=%s&isMissing=false&api_key=%s" % (
|
||||||
self._host, item_id, season, self.user, self._apikey)
|
self._host, item_id, season, self.user, self._apikey)
|
||||||
res_json = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res_json:
|
||||||
if res_json:
|
if res_json:
|
||||||
tv_info = res_json.json()
|
tv_info = res_json.json()
|
||||||
res_items = tv_info.get("Items")
|
res_items = tv_info.get("Items")
|
||||||
@ -458,7 +458,7 @@ class Jellyfin:
|
|||||||
_host = self._playhost
|
_host = self._playhost
|
||||||
req_url = "%sItems/%s/Images/%s" % (_host, item_id, image_type)
|
req_url = "%sItems/%s/Images/%s" % (_host, item_id, image_type)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code != 404:
|
if res and res.status_code != 404:
|
||||||
logger.info("影片图片链接:{}".format(res.url))
|
logger.info("影片图片链接:{}".format(res.url))
|
||||||
return res.url
|
return res.url
|
||||||
@ -479,7 +479,7 @@ class Jellyfin:
|
|||||||
"""
|
"""
|
||||||
req_url = "%sItems/%s/Ancestors?api_key=%s" % (self._host, item_id, self._apikey)
|
req_url = "%sItems/%s/Ancestors?api_key=%s" % (self._host, item_id, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return res.json()[index].get(key)
|
return res.json()[index].get(key)
|
||||||
else:
|
else:
|
||||||
@ -497,7 +497,7 @@ class Jellyfin:
|
|||||||
return False
|
return False
|
||||||
req_url = "%sLibrary/Refresh?api_key=%s" % (self._host, self._apikey)
|
req_url = "%sLibrary/Refresh?api_key=%s" % (self._host, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().post_res(req_url)
|
with RequestUtils().post_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
@ -632,7 +632,7 @@ class Jellyfin:
|
|||||||
req_url = "%sUsers/%s/Items/%s?api_key=%s" % (
|
req_url = "%sUsers/%s/Items/%s?api_key=%s" % (
|
||||||
self._host, self.user, itemid, self._apikey)
|
self._host, self.user, itemid, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code == 200:
|
if res and res.status_code == 200:
|
||||||
item = res.json()
|
item = res.json()
|
||||||
tmdbid = item.get("ProviderIds", {}).get("Tmdb")
|
tmdbid = item.get("ProviderIds", {}).get("Tmdb")
|
||||||
@ -663,7 +663,7 @@ class Jellyfin:
|
|||||||
yield None
|
yield None
|
||||||
req_url = "%sUsers/%s/Items?parentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey)
|
req_url = "%sUsers/%s/Items?parentId=%s&api_key=%s" % (self._host, self.user, parent, self._apikey)
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res and res.status_code == 200:
|
if res and res.status_code == 200:
|
||||||
results = res.json().get("Items") or []
|
results = res.json().get("Items") or []
|
||||||
for result in results:
|
for result in results:
|
||||||
@ -761,7 +761,7 @@ class Jellyfin:
|
|||||||
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
req_url = (f"{self._host}Users/{user}/Items/Resume?"
|
||||||
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json().get("Items") or []
|
result = res.json().get("Items") or []
|
||||||
ret_resume = []
|
ret_resume = []
|
||||||
@ -784,7 +784,7 @@ class Jellyfin:
|
|||||||
else:
|
else:
|
||||||
image = self.__get_local_image_by_id(item.get("Id"))
|
image = self.__get_local_image_by_id(item.get("Id"))
|
||||||
# 小部分剧集无[xxx-S01E01-thumb.jpg]图片
|
# 小部分剧集无[xxx-S01E01-thumb.jpg]图片
|
||||||
image_res = RequestUtils().get_res(image)
|
with RequestUtils().get_res(image) as image_res:
|
||||||
if not image_res or image_res.status_code == 404:
|
if not image_res or image_res.status_code == 404:
|
||||||
image = self.generate_image_link(item.get("Id"), "Backdrop", False)
|
image = self.generate_image_link(item.get("Id"), "Backdrop", False)
|
||||||
if item_type == MediaType.MOVIE.value:
|
if item_type == MediaType.MOVIE.value:
|
||||||
@ -822,7 +822,7 @@ class Jellyfin:
|
|||||||
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
req_url = (f"{self._host}Users/{user}/Items/Latest?"
|
||||||
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
f"Limit=100&MediaTypes=Video&api_key={self._apikey}&Fields=ProductionYear,Path")
|
||||||
try:
|
try:
|
||||||
res = RequestUtils().get_res(req_url)
|
with RequestUtils().get_res(req_url) as res:
|
||||||
if res:
|
if res:
|
||||||
result = res.json() or []
|
result = res.json() or []
|
||||||
ret_latest = []
|
ret_latest = []
|
||||||
|
@ -41,31 +41,31 @@ class Slack:
|
|||||||
# 注册消息响应
|
# 注册消息响应
|
||||||
@slack_app.event("message")
|
@slack_app.event("message")
|
||||||
def slack_message(message):
|
def slack_message(message):
|
||||||
local_res = requests.post(self._ds_url, json=message, timeout=10)
|
with requests.post(self._ds_url, json=message, timeout=10) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (message, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (message, local_res.text))
|
||||||
|
|
||||||
@slack_app.action(re.compile(r"actionId-\d+"))
|
@slack_app.action(re.compile(r"actionId-\d+"))
|
||||||
def slack_action(ack, body):
|
def slack_action(ack, body):
|
||||||
ack()
|
ack()
|
||||||
local_res = requests.post(self._ds_url, json=body, timeout=60)
|
with requests.post(self._ds_url, json=body, timeout=60) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
||||||
|
|
||||||
@slack_app.event("app_mention")
|
@slack_app.event("app_mention")
|
||||||
def slack_mention(say, body):
|
def slack_mention(say, body):
|
||||||
say(f"收到,请稍等... <@{body.get('event', {}).get('user')}>")
|
say(f"收到,请稍等... <@{body.get('event', {}).get('user')}>")
|
||||||
local_res = requests.post(self._ds_url, json=body, timeout=10)
|
with requests.post(self._ds_url, json=body, timeout=10) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
||||||
|
|
||||||
@slack_app.shortcut(re.compile(r"/*"))
|
@slack_app.shortcut(re.compile(r"/*"))
|
||||||
def slack_shortcut(ack, body):
|
def slack_shortcut(ack, body):
|
||||||
ack()
|
ack()
|
||||||
local_res = requests.post(self._ds_url, json=body, timeout=10)
|
with requests.post(self._ds_url, json=body, timeout=10) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
||||||
|
|
||||||
@slack_app.command(re.compile(r"/*"))
|
@slack_app.command(re.compile(r"/*"))
|
||||||
def slack_command(ack, body):
|
def slack_command(ack, body):
|
||||||
ack()
|
ack()
|
||||||
local_res = requests.post(self._ds_url, json=body, timeout=10)
|
with requests.post(self._ds_url, json=body, timeout=10) as local_res:
|
||||||
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
logger.debug("message: %s processed, response is: %s" % (body, local_res.text))
|
||||||
|
|
||||||
# 启动服务
|
# 启动服务
|
||||||
|
@ -12,7 +12,7 @@ from app.modules import _ModuleBase
|
|||||||
from app.modules.themoviedb.category import CategoryHelper
|
from app.modules.themoviedb.category import CategoryHelper
|
||||||
from app.modules.themoviedb.scraper import TmdbScraper
|
from app.modules.themoviedb.scraper import TmdbScraper
|
||||||
from app.modules.themoviedb.tmdb_cache import TmdbCache
|
from app.modules.themoviedb.tmdb_cache import TmdbCache
|
||||||
from app.modules.themoviedb.tmdbapi import TmdbHelper
|
from app.modules.themoviedb.tmdbapi import TmdbApi
|
||||||
from app.schemas.types import MediaType, MediaImageType
|
from app.schemas.types import MediaType, MediaImageType
|
||||||
from app.utils.http import RequestUtils
|
from app.utils.http import RequestUtils
|
||||||
from app.utils.system import SystemUtils
|
from app.utils.system import SystemUtils
|
||||||
@ -26,7 +26,7 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
# 元数据缓存
|
# 元数据缓存
|
||||||
cache: TmdbCache = None
|
cache: TmdbCache = None
|
||||||
# TMDB
|
# TMDB
|
||||||
tmdb: TmdbHelper = None
|
tmdb: TmdbApi = None
|
||||||
# 二级分类
|
# 二级分类
|
||||||
category: CategoryHelper = None
|
category: CategoryHelper = None
|
||||||
# 刮削器
|
# 刮削器
|
||||||
@ -34,12 +34,13 @@ class TheMovieDbModule(_ModuleBase):
|
|||||||
|
|
||||||
def init_module(self) -> None:
|
def init_module(self) -> None:
|
||||||
self.cache = TmdbCache()
|
self.cache = TmdbCache()
|
||||||
self.tmdb = TmdbHelper()
|
self.tmdb = TmdbApi()
|
||||||
self.category = CategoryHelper()
|
self.category = CategoryHelper()
|
||||||
self.scraper = TmdbScraper(self.tmdb)
|
self.scraper = TmdbScraper(self.tmdb)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
self.cache.save()
|
self.cache.save()
|
||||||
|
self.tmdb.close()
|
||||||
|
|
||||||
def test(self) -> Tuple[bool, str]:
|
def test(self) -> Tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
|
@ -15,7 +15,7 @@ from .tmdbv3api import TMDb, Search, Movie, TV, Season, Episode, Discover, Trend
|
|||||||
from .tmdbv3api.exceptions import TMDbException
|
from .tmdbv3api.exceptions import TMDbException
|
||||||
|
|
||||||
|
|
||||||
class TmdbHelper:
|
class TmdbApi:
|
||||||
"""
|
"""
|
||||||
TMDB识别匹配
|
TMDB识别匹配
|
||||||
"""
|
"""
|
||||||
@ -1271,3 +1271,9 @@ class TmdbHelper:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(str(e))
|
print(str(e))
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
"""
|
||||||
|
关闭连接
|
||||||
|
"""
|
||||||
|
self.tmdb.close()
|
||||||
|
@ -222,6 +222,6 @@ class TMDb(object):
|
|||||||
return json.get(key)
|
return json.get(key)
|
||||||
return json
|
return json
|
||||||
|
|
||||||
def __del__(self):
|
def close(self):
|
||||||
if self._session:
|
if self._session:
|
||||||
self._session.close()
|
self._session.close()
|
||||||
|
@ -17,7 +17,7 @@ class TheTvDbModule(_ModuleBase):
|
|||||||
proxies=settings.PROXY)
|
proxies=settings.PROXY)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
pass
|
self.tvdb.close()
|
||||||
|
|
||||||
def test(self) -> Tuple[bool, str]:
|
def test(self) -> Tuple[bool, str]:
|
||||||
"""
|
"""
|
||||||
|
@ -733,6 +733,10 @@ class Tvdb:
|
|||||||
}
|
}
|
||||||
self.proxies = proxies
|
self.proxies = proxies
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
if self.session:
|
||||||
|
self.session.close()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _getTempDir():
|
def _getTempDir():
|
||||||
"""Returns the [system temp dir]/tvdb_api-u501 (or
|
"""Returns the [system temp dir]/tvdb_api-u501 (or
|
||||||
@ -764,9 +768,9 @@ class Tvdb:
|
|||||||
if not self.__authorized:
|
if not self.__authorized:
|
||||||
# only authorize of we haven't before and we
|
# only authorize of we haven't before and we
|
||||||
# don't have the url in the cache
|
# don't have the url in the cache
|
||||||
fake_session_for_key = requests.Session()
|
|
||||||
fake_session_for_key.headers['Accept-Language'] = language
|
|
||||||
cache_key = None
|
cache_key = None
|
||||||
|
with requests.Session() as fake_session_for_key:
|
||||||
|
fake_session_for_key.headers['Accept-Language'] = language
|
||||||
try:
|
try:
|
||||||
# in case the session class has no cache object, fail gracefully
|
# in case the session class has no cache object, fail gracefully
|
||||||
cache_key = self.session.cache.create_key(
|
cache_key = self.session.cache.create_key(
|
||||||
|
@ -71,7 +71,7 @@ class WeChat:
|
|||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
token_url = self._token_url % (self._corpid, self._appsecret)
|
token_url = self._token_url % (self._corpid, self._appsecret)
|
||||||
res = RequestUtils().get_res(token_url)
|
with RequestUtils().get_res(token_url) as res:
|
||||||
if res:
|
if res:
|
||||||
ret_json = res.json()
|
ret_json = res.json()
|
||||||
if ret_json.get('errcode') == 0:
|
if ret_json.get('errcode') == 0:
|
||||||
|
@ -40,7 +40,7 @@ class WebUtils:
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
r = RequestUtils().get_res(f"https://api.mir6.com/api/ip?ip={ip}&type=json")
|
with RequestUtils().get_res(f"https://api.mir6.com/api/ip?ip={ip}&type=json") as r:
|
||||||
if r:
|
if r:
|
||||||
return r.json().get("data", {}).get("location") or ''
|
return r.json().get("data", {}).get("location") or ''
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
@ -65,7 +65,7 @@ class WebUtils:
|
|||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
r = RequestUtils().get_res(f"https://whois.pconline.com.cn/ipJson.jsp?json=true&ip={ip}")
|
with RequestUtils().get_res(f"https://whois.pconline.com.cn/ipJson.jsp?json=true&ip={ip}") as r:
|
||||||
if r:
|
if r:
|
||||||
return r.json().get("addr") or ''
|
return r.json().get("addr") or ''
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
Reference in New Issue
Block a user