mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-08 00:46:57 +08:00
feat 网络测试支持加速代理以及GitHub Token
fix 测试耗时大于1秒时,时间差计算错误
This commit is contained in:
+40
-14
@@ -1,6 +1,7 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import io
|
import io
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
import tempfile
|
import tempfile
|
||||||
from collections import deque
|
from collections import deque
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -446,30 +447,55 @@ def ruletest(title: str,
|
|||||||
|
|
||||||
|
|
||||||
@router.get("/nettest", summary="测试网络连通性")
|
@router.get("/nettest", summary="测试网络连通性")
|
||||||
def nettest(url: str,
|
def nettest(
|
||||||
proxy: bool,
|
url: str,
|
||||||
_: schemas.TokenPayload = Depends(verify_token)):
|
proxy: bool,
|
||||||
|
include: Optional[str] = None,
|
||||||
|
_: schemas.TokenPayload = Depends(verify_token),
|
||||||
|
):
|
||||||
"""
|
"""
|
||||||
测试网络连通性
|
测试网络连通性
|
||||||
"""
|
"""
|
||||||
# 记录开始的毫秒数
|
# 记录开始的毫秒数
|
||||||
start_time = datetime.now()
|
start_time = datetime.now()
|
||||||
|
headers = None
|
||||||
|
if "github" in url or "{GITHUB_PROXY}" in url:
|
||||||
|
# 这是github的连通性测试
|
||||||
|
url = url.replace(
|
||||||
|
"{GITHUB_PROXY}", UrlUtils.standardize_base_url(settings.GITHUB_PROXY or "")
|
||||||
|
)
|
||||||
|
headers = settings.GITHUB_HEADERS
|
||||||
url = url.replace("{TMDBAPIKEY}", settings.TMDB_API_KEY)
|
url = url.replace("{TMDBAPIKEY}", settings.TMDB_API_KEY)
|
||||||
result = RequestUtils(proxies=settings.PROXY if proxy else None,
|
url = url.replace(
|
||||||
ua=settings.USER_AGENT).get_res(url)
|
"{PIP_PROXY}",
|
||||||
|
UrlUtils.standardize_base_url(settings.PIP_PROXY or "https://pypi.org/simple/"),
|
||||||
|
)
|
||||||
|
result = RequestUtils(
|
||||||
|
proxies=settings.PROXY if proxy else None,
|
||||||
|
headers=headers,
|
||||||
|
timeout=10,
|
||||||
|
ua=settings.USER_AGENT,
|
||||||
|
).get_res(url)
|
||||||
# 计时结束的毫秒数
|
# 计时结束的毫秒数
|
||||||
end_time = datetime.now()
|
end_time = datetime.now()
|
||||||
|
time = round((end_time - start_time).total_seconds() * 1000)
|
||||||
# 计算相关秒数
|
# 计算相关秒数
|
||||||
if result and result.status_code == 200:
|
if result is None:
|
||||||
return schemas.Response(success=True, data={
|
return schemas.Response(success=False, message="无法连接", data={"time": time})
|
||||||
"time": round((end_time - start_time).microseconds / 1000)
|
elif result.status_code == 200:
|
||||||
})
|
if include and not re.search(r"%s" % include, result.text, re.IGNORECASE):
|
||||||
elif result:
|
# 通常是被加速代理跳转到其它页面了
|
||||||
return schemas.Response(success=False, message=f"错误码:{result.status_code}", data={
|
logger.error(f"{url} 的响应内容不匹配包含规则 {include}")
|
||||||
"time": round((end_time - start_time).microseconds / 1000)
|
return schemas.Response(
|
||||||
})
|
success=False,
|
||||||
|
message=f"无效响应,不匹配 {include}",
|
||||||
|
data={"time": time},
|
||||||
|
)
|
||||||
|
return schemas.Response(success=True, data={"time": time})
|
||||||
else:
|
else:
|
||||||
return schemas.Response(success=False, message="网络连接失败!")
|
return schemas.Response(
|
||||||
|
success=False, message=f"错误码:{result.status_code}", data={"time": time}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@router.get("/modulelist", summary="查询已加载的模块ID列表", response_model=schemas.Response)
|
@router.get("/modulelist", summary="查询已加载的模块ID列表", response_model=schemas.Response)
|
||||||
|
|||||||
Reference in New Issue
Block a user