From 0aad809c82c0506ecf153d320a70370e9b64a19e Mon Sep 17 00:00:00 2001 From: thsrite Date: Tue, 14 Nov 2023 16:12:02 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=A2=9E=E5=8A=A0GITHUB=5FTOKEN?= =?UTF-8?q?=EF=BC=8C=E6=8F=90=E9=AB=98API=E9=99=90=E6=B5=81=E9=98=88?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + app/api/endpoints/system.py | 8 +++++++- app/chain/system.py | 7 ++++++- app/core/config.py | 2 ++ app/helper/plugin.py | 7 ++++++- update | 9 +++++++-- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 03c580fe..e7fb64f1 100644 --- a/README.md +++ b/README.md @@ -105,6 +105,7 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 --- - **OCR_HOST:** OCR识别服务器地址,格式:`http(s)://ip:port`,用于识别站点验证码实现自动登录获取Cookie等,不配置默认使用内建服务器`https://movie-pilot.org`,可使用 [这个镜像](https://hub.docker.com/r/jxxghp/moviepilot-ocr) 自行搭建。 - **PLUGIN_MARKET:** 插件市场仓库地址,多个地址使用`,`分隔,保留最后的/,默认为官方插件仓库:`https://raw.githubusercontent.com/jxxghp/MoviePilot-Plugins/main/`。 +- **GITHUB_TOKEN:** Github token,提高请求api限流阈值 ghp_****(仅支持环境变量配置) --- - **❗MESSAGER:** 消息通知渠道,支持 `telegram`/`wechat`/`slack`/`synologychat`,开启多个渠道时使用`,`分隔。同时还需要配置对应渠道的环境变量,非对应渠道的变量可删除,推荐使用`telegram` diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 792978fa..36c48049 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -163,7 +163,13 @@ def latest_version(_: schemas.TokenPayload = Depends(verify_token)): """ 查询Github所有Release版本 """ - version_res = RequestUtils().get_res(f"https://api.github.com/repos/jxxghp/MoviePilot/releases") + headers = {} + if settings.GITHUB_TOKEN: + headers = { + "Authorization": f"Bearer {settings.GITHUB_TOKEN}" + } + version_res = RequestUtils(proxies=settings.PROXY, headers=headers).get_res( + f"https://api.github.com/repos/jxxghp/MoviePilot/releases") if version_res: ver_json = version_res.json() if ver_json: diff --git a/app/chain/system.py b/app/chain/system.py index 15162bea..512c7b88 100644 --- a/app/chain/system.py +++ b/app/chain/system.py @@ -87,7 +87,12 @@ class SystemChain(ChainBase, metaclass=Singleton): """ 获取最新版本 """ - version_res = RequestUtils(proxies=settings.PROXY).get_res( + headers = {} + if settings.GITHUB_TOKEN: + headers = { + "Authorization": f"Bearer {settings.GITHUB_TOKEN}" + } + version_res = RequestUtils(proxies=settings.PROXY, headers=headers).get_res( "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest") if version_res: ver_json = version_res.json() diff --git a/app/core/config.py b/app/core/config.py index 71202706..d3d6dbff 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -212,6 +212,8 @@ class Settings(BaseSettings): BIG_MEMORY_MODE: bool = False # 插件市场仓库地址,多个地址使用,分隔,地址以/结尾 PLUGIN_MARKET: str = "https://raw.githubusercontent.com/jxxghp/MoviePilot-Plugins/main/" + # Github token,提高请求api限流阈值 ghp_**** + GITHUB_TOKEN: str = None @property def INNER_CONFIG_PATH(self): diff --git a/app/helper/plugin.py b/app/helper/plugin.py index 4852123d..595f399c 100644 --- a/app/helper/plugin.py +++ b/app/helper/plugin.py @@ -49,7 +49,12 @@ class PluginHelper(metaclass=Singleton): 获取插件的文件列表 """ file_api = f"https://api.github.com/repos/{user}/{repo}/contents/plugins/{_p.lower()}" - r = RequestUtils(proxies=settings.PROXY).get_res(file_api) + headers = {} + if settings.GITHUB_TOKEN: + headers = { + "Authorization": f"Bearer {settings.GITHUB_TOKEN}" + } + r = RequestUtils(proxies=settings.PROXY, headers=headers).get_res(file_api) if not r or r.status_code != 200: return None, f"连接仓库失败:{r.status_code} - {r.reason}" ret = r.json() diff --git a/update b/update index d8580c89..882ee3fd 100644 --- a/update +++ b/update @@ -30,7 +30,7 @@ install_backend_and_download_resources() { download_and_unzip "https://github.com/jxxghp/MoviePilot-Resources/archive/refs/heads/main.zip" "Resources" if [ $? -eq 0 ]; then echo "资源包下载成功" - frontend_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest" | jq -r .tag_name) + frontend_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot-Frontend/releases/latest" ${CURL_HEADERS} | jq -r .tag_name) if [[ "${frontend_version}" == *v* ]]; then download_and_unzip "https://github.com/jxxghp/MoviePilot-Frontend/releases/download/${frontend_version}/dist.zip" "dist" if [ $? -eq 0 ]; then @@ -83,6 +83,11 @@ if [[ "${MOVIEPILOT_AUTO_UPDATE}" = "true" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" CURL_OPTIONS="-sL" echo "不使用代理更新程序" fi + if [ -n "${GITHUB_TOKEN}" ]; then + CURL_HEADERS="--header 'Authorization: Bearer ${GITHUB_TOKEN}'" + else + CURL_HEADERS="" + fi if [ "${MOVIEPILOT_AUTO_UPDATE}" = "dev" ]; then echo "Dev 更新模式" install_backend_and_download_resources "heads/main.zip" @@ -92,7 +97,7 @@ if [[ "${MOVIEPILOT_AUTO_UPDATE}" = "true" ]] || [[ "${MOVIEPILOT_AUTO_UPDATE}" if [[ "${old_version}" == *APP_VERSION* ]]; then current_version=v$(echo ${old_version} | sed -ne "s/APP_VERSION\s=\s'v\(.*\)'/\1/gp") echo "当前版本号:${current_version}" - new_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest" | jq -r .tag_name) + new_version=$(curl ${CURL_OPTIONS} "https://api.github.com/repos/jxxghp/MoviePilot/releases/latest" ${CURL_HEADERS} | jq -r .tag_name) if [[ "${new_version}" == *v* ]]; then release_version=${new_version} echo "最新版本号:${release_version}"