Skip to content

Commit 1115055

Browse files
authored
Merge branch 'jxxghp:v2' into v2
2 parents 4ae97df + 9f73b47 commit 1115055

File tree

10 files changed

+232
-146
lines changed

10 files changed

+232
-146
lines changed

app/api/endpoints/search.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ async def search_latest(_: schemas.TokenPayload = Depends(verify_token)) -> Any:
2020
"""
2121
查询搜索结果
2222
"""
23-
torrents = await SearchChain().async_last_search_results()
23+
torrents = await SearchChain().async_last_search_results() or []
2424
return [torrent.to_dict() for torrent in torrents]
2525

2626

app/chain/search.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,13 @@ def search_by_title(self, title: str, page: Optional[int] = 0,
8686
self.save_cache(contexts, self.__result_temp_file)
8787
return contexts
8888

89-
def last_search_results(self) -> List[Context]:
89+
def last_search_results(self) -> Optional[List[Context]]:
9090
"""
9191
获取上次搜索结果
9292
"""
9393
return self.load_cache(self.__result_temp_file)
9494

95-
async def async_last_search_results(self) -> List[Context]:
95+
async def async_last_search_results(self) -> Optional[List[Context]]:
9696
"""
9797
异步获取上次搜索结果
9898
"""

app/helper/plugin.py

Lines changed: 109 additions & 77 deletions
Large diffs are not rendered by default.

app/modules/filemanager/storages/u115.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ def access_token(self) -> Optional[str]:
9191
"refresh_time": int(time.time()),
9292
**tokens
9393
})
94+
else:
95+
return None
9496
access_token = tokens.get("access_token")
9597
if access_token:
9698
self.session.headers.update({"Authorization": f"Bearer {access_token}"})
@@ -211,6 +213,8 @@ def _request_api(self, method: str, endpoint: str,
211213

212214
# 错误日志标志
213215
no_error_log = kwargs.pop("no_error_log", False)
216+
# 重试次数
217+
retry_times = kwargs.pop("retry_limit", 5)
214218

215219
try:
216220
resp = self.session.request(
@@ -225,6 +229,8 @@ def _request_api(self, method: str, endpoint: str,
225229
logger.warn(f"【115】{method} 请求 {endpoint} 失败!")
226230
return None
227231

232+
kwargs["retry_limit"] = retry_times
233+
228234
# 处理速率限制
229235
if resp.status_code == 429:
230236
reset_time = 5 + int(resp.headers.get("X-RateLimit-Reset", 60))
@@ -243,7 +249,6 @@ def _request_api(self, method: str, endpoint: str,
243249
error_msg = ret_data.get("message")
244250
if not no_error_log:
245251
logger.warn(f"【115】{method} 请求 {endpoint} 出错:{error_msg}")
246-
retry_times = kwargs.get("retry_limit", 5)
247252
if "已达到当前访问上限" in error_msg:
248253
if retry_times <= 0:
249254
logger.error(f"【115】{method} 请求 {endpoint} 达到访问上限,重试次数用尽!")

app/modules/filemanager/transhandler.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -425,7 +425,7 @@ def __get_targetitem(_path: Path) -> FileItem:
425425
# 复制文件到新目录
426426
target_fileitem = target_oper.get_folder(target_file.parent)
427427
if target_fileitem:
428-
if source_oper.move(fileitem, Path(target_fileitem.path), target_file.name):
428+
if source_oper.copy(fileitem, Path(target_fileitem.path), target_file.name):
429429
return target_oper.get_item(target_file), ""
430430
else:
431431
return None, f"【{target_storage}{fileitem.path} 复制文件失败"

app/modules/themoviedb/tmdbapi.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,6 +747,9 @@ def match_web(self, name: str, mtype: MediaType) -> Optional[dict]:
747747
logger.info("正在从TheDbMovie网站查询:%s ..." % name)
748748
tmdb_url = self._build_tmdb_search_url(name)
749749
res = RequestUtils(timeout=5, ua=settings.NORMAL_USER_AGENT, proxies=settings.PROXY).get_res(url=tmdb_url)
750+
if res is None:
751+
logger.error("无法连接TheDbMovie")
752+
return None
750753

751754
# 响应验证
752755
response_result = self._validate_response(res)
@@ -1857,6 +1860,9 @@ async def async_match_web(self, name: str, mtype: MediaType) -> Optional[dict]:
18571860
tmdb_url = self._build_tmdb_search_url(name)
18581861
res = await AsyncRequestUtils(timeout=5, ua=settings.NORMAL_USER_AGENT, proxies=settings.PROXY).get_res(
18591862
url=tmdb_url)
1863+
if res is None:
1864+
logger.error("无法连接TheDbMovie")
1865+
return None
18601866

18611867
# 响应验证
18621868
response_result = self._validate_response(res)

app/modules/trimemedia/__init__.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def webhook_parser(
154154
"""
155155
source = args.get("source")
156156
if source:
157-
server: TrimeMedia = self.get_instance(source)
157+
server: Optional[TrimeMedia] = self.get_instance(source)
158158
if not server:
159159
return None
160160
result = server.get_webhook_message(body)
@@ -247,7 +247,7 @@ def media_statistic(
247247
媒体数量统计
248248
"""
249249
if server:
250-
server_obj: TrimeMedia = self.get_instance(server)
250+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
251251
if not server_obj:
252252
return None
253253
servers = [server_obj]
@@ -268,7 +268,7 @@ def mediaserver_librarys(
268268
"""
269269
媒体库列表
270270
"""
271-
server_obj: TrimeMedia = self.get_instance(server)
271+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
272272
if server_obj:
273273
return server_obj.get_librarys(hidden=hidden)
274274
return None
@@ -290,7 +290,7 @@ def mediaserver_items(
290290
291291
:return: 返回一个生成器对象,用于逐步获取媒体服务器中的项目
292292
"""
293-
server_obj: TrimeMedia = self.get_instance(server)
293+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
294294
if server_obj:
295295
return server_obj.get_items(library_id, start_index, limit)
296296
return None
@@ -301,7 +301,7 @@ def mediaserver_iteminfo(
301301
"""
302302
媒体库项目详情
303303
"""
304-
server_obj: TrimeMedia = self.get_instance(server)
304+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
305305
if server_obj:
306306
return server_obj.get_iteminfo(item_id)
307307
return None
@@ -312,7 +312,9 @@ def mediaserver_tv_episodes(
312312
"""
313313
获取剧集信息
314314
"""
315-
server_obj: TrimeMedia = self.get_instance(server)
315+
if not isinstance(item_id, str):
316+
return None
317+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
316318
if not server_obj:
317319
return None
318320
_, seasoninfo = server_obj.get_tv_episodes(item_id=item_id)
@@ -329,18 +331,20 @@ def mediaserver_playing(
329331
"""
330332
获取媒体服务器正在播放信息
331333
"""
332-
server_obj: TrimeMedia = self.get_instance(server)
334+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
333335
if not server_obj:
334336
return []
335-
return server_obj.get_resume(num=count)
337+
return server_obj.get_resume(num=count) or []
336338

337339
def mediaserver_play_url(
338340
self, server: str, item_id: Union[str, int]
339341
) -> Optional[str]:
340342
"""
341343
获取媒体库播放地址
342344
"""
343-
server_obj: TrimeMedia = self.get_instance(server)
345+
if not isinstance(item_id, str):
346+
return None
347+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
344348
if not server_obj:
345349
return None
346350
return server_obj.get_play_url(item_id)
@@ -354,10 +358,10 @@ def mediaserver_latest(
354358
"""
355359
获取媒体服务器最新入库条目
356360
"""
357-
server_obj: TrimeMedia = self.get_instance(server)
361+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
358362
if not server_obj:
359363
return []
360-
return server_obj.get_latest(num=count)
364+
return server_obj.get_latest(num=count) or []
361365

362366
def mediaserver_latest_images(
363367
self,
@@ -374,7 +378,7 @@ def mediaserver_latest_images(
374378
:param remote: True为外网链接, False为内网链接
375379
:return: 图片链接列表
376380
"""
377-
server_obj: TrimeMedia = self.get_instance(server)
381+
server_obj: Optional[TrimeMedia] = self.get_instance(server)
378382
if not server_obj:
379383
return []
380-
return server_obj.get_latest_backdrops(num=count, remote=remote)
384+
return server_obj.get_latest_backdrops(num=count, remote=remote) or []

0 commit comments

Comments
 (0)