diff --git a/README.md b/README.md index 6f84e44..cc1d09e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ # xc_validation_strategy_gguf -GGUF 模型下载 + 验证任务提交流水线策略服务:批量创建 GGUF 模型下载任务(最大并发 8), -每个模型下载成功后立即提交 hygon / bi150 两个验证任务,之后保持 HTTP 服务存活供平台探活。 +本版本为纯下载策略:使用 `zhoushasha` 账号批量创建 `main.py` 中未注释的 GGUF 模型下载任务(最大并发 8),不提交验证任务;之后保持 HTTP 服务存活供平台探活。 ## 功能 -- 自动登录 ModelHub 获取 Token(失败时回退到预设 Token) +- 启动时登录 ModelHub 获取新 Token,并检查账号身份及有效期;登录失败时停止,不回退到过期 Token - 按流水线批量创建 GGUF 模型下载任务(HuggingFace 源,最大并发 8) -- 每个模型下载成功后,立即提交 hygon_k100-ai 与 Iluvatar_bi-150 两个验证任务(llamacpp 框架) +- 当前 `DOWNLOAD_ONLY=True`,不调用验证任务提交接口;验证任务由其他策略负责 - 下载成功的模型 ID 写入 `downloaded_success_models.txt` - 暴露 `/health` 和 `/status` 接口满足平台运行时契约 @@ -15,7 +14,7 @@ GGUF 模型下载 + 验证任务提交流水线策略服务:批量创建 GGUF ``` . -├── main.py # 主入口:HTTP 服务 + 下载/提交流水线 +├── main.py # 主入口:HTTP 服务 + 纯下载流程 ├── Dockerfile # 平台镜像构建配置 ├── requirements.txt # Python 依赖 └── downloaded_success_models.txt # 运行后自动生成,记录下载成功的模型 diff --git a/main.py b/main.py index 7ebfe1a..ecc26f8 100644 --- a/main.py +++ b/main.py @@ -8,11 +8,13 @@ GGUF 模型下载 + 验证任务提交流水线(部署框架与 xc_validation_ 同时暴露 /health(K8s 探活)和 /status(运行状态)。 """ +import base64 import json import os import re import signal import threading +import time from datetime import datetime from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer from typing import List, Set, Tuple @@ -29,13 +31,10 @@ SUBMIT_TEST_TASK_ENDPOINT = "/adminApi/async/task/create-contest-task" ADD_TASK_ENDPOINT = "/api/adapt/task/add" # 机制B(xc-Token 认证),hygon 验证任务改走这个 # 登录账号(下载任务仍用这个账号,不受下面 hygon 提交账号切换的影响): -# 启动时优先用账号密码换取新 token(流水线运行时间长,预设 token 可能过期) +# 每次启动都登录获取新 Token;登录失败时停止,不使用过期凭据。 USER_ACCOUNT = "zhoushasha@4paradigm.com" USER_PASSWORD = "ganshenme0" -# 通过 curl -X POST https://modelhub.org.cn/adminApi/user/login 获取后填入(登录失败时的回退) -AUTH_TOKEN = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQWNjb3VudCI6Inpob3VzaGFzaGEiLCJpZCI6MTQsInVzZXJSb2xlIjoibGVhZGVyYm9hcmQiLCJleHAiOjE3OTAxNDU2NDYsImlhdCI6MTc4OTU0MDg0Nn0.PY0e46UY9YDvl_PNvn9Zv-WyvkaTbYngScbwyw-cWMg" - # hygon_k100-ai 验证任务走机制B(xc-Token),固定用 l11223344 提交 HYGON_SUBMIT_ACCOUNT = "zhoukaile" HYGON_XC_TOKEN = "bd7c52f3b9604ef48a14dd6174513935" @@ -983,136 +982,142 @@ ALL_MODEL_IDS = [ # "mradermacher/ahinsa0.6-llama3.2-3B-GGUF", # "mradermacher/Meta-Llama-3-8B-Instruct_fictional_arc_Chinese_v1-GGUF", # "mradermacher/Mistral-7B-v0.3-sft-SPIN-human-dataset-GGUF", - "mradermacher/Fortitude-GGUF", - "mradermacher/rewrite-3B-tesla-GGUF", - "mradermacher/QvQ-1B-Preview-GGUF", - "mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF", - "mradermacher/martinLLM-phi-4b-128k-GGUF", - "mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF", - "mradermacher/Nemotron-Picaro-fp16-GGUF", - "mradermacher/ZEUS-8B-V10-GGUF", - "mradermacher/Human-gemma-2b-GGUF", - "mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", - "mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF", - "mradermacher/herbalism_v2-GGUF", - "mradermacher/CriticalThinker-llama-3.1-8B-GGUF", - "mradermacher/BilingualChildrenEmo-GGUF", - "mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF", - "mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF", - "mradermacher/OrpoLlama-3.2-3B-GGUF", - "mradermacher/maximusLLM-phi-4b-128k-GGUF", - "mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF", - "mradermacher/Espresso-AI-GGUF", - "mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF", - "mradermacher/rewrite-7B-tesla-GGUF", - "mradermacher/Tulu-MathLingo-8B-GGUF", - "mradermacher/tongyi-model-v1.5-1b-enth-GGUF", - "mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF", - "mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF", - "mradermacher/L3.1-Magnusv2-10B-GGUF", - "mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF", - "mradermacher/opencsg-starcoder2-3b-v0.1-GGUF", - "mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF", - "mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF", - "mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF", - "mradermacher/lora-phi2-alpaca-GGUF", - "mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF", - "mradermacher/zephyr-7b-beta-sr-system-do-GGUF", - "mradermacher/LynxMed-GGUF", - "mradermacher/Fortitude-1.0-342M-GGUF", - "mradermacher/GPT-2-Cu_FT-V1-GGUF", - "mradermacher/stackexchange_blender-GGUF", - "mradermacher/stackexchange_chess-GGUF", - "mradermacher/stackexchange_cstheory-GGUF", - "mradermacher/LynxMed2.0-GGUF", - "mradermacher/Llama-3.2-3b-Me-GGUF", - "mradermacher/stackexchange_cseducators-GGUF", - "mradermacher/Llama-3.1-8B-sft-SPIN-Llama-3.1-70B-Instruct-GGUF", - "mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF", - "mradermacher/stackexchange_bioinformatics-GGUF", - "mradermacher/stackexchange_astronomy-GGUF", - "mradermacher/stackexchange_chemistry-GGUF", - "mradermacher/stackexchange_cooking-GGUF", - "mradermacher/II-Tulu-8B-DPO-v3-GGUF", - "mradermacher/Text-Scrutiny-LLM-GGUF", - "mradermacher/awelitoLLM-phi-4b-128k-GGUF", - "mradermacher/tongyi-model-v2.0-1b-th-GGUF", - "mradermacher/waka-0.5b-simpo-GGUF", - "mradermacher/KRONOS-8B-V7-GGUF", - "mradermacher/stackexchange_biology-GGUF", - "mradermacher/stackexchange_cogsci-GGUF", - "mradermacher/AetherGemma-GGUF", - "mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF", - "mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF", - "mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF", - "mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF", - "mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF", - "mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF", - "mradermacher/K2S3-Mistral-7b-v1.2-GGUF", - "mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF", - "mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF", - "mradermacher/DialoGPT-medium-janeOrthros-GGUF", - "mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF", - "mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF", - "mradermacher/MT1-Gen5-BB-gemma-2-S4Av4d-9B-GGUF", + # "mradermacher/Fortitude-GGUF", + # "mradermacher/rewrite-3B-tesla-GGUF", + # "mradermacher/QvQ-1B-Preview-GGUF", + # "mradermacher/Phi-3-mini-128k-instruct-ft-v2-GGUF", + # "mradermacher/martinLLM-phi-4b-128k-GGUF", + # "mradermacher/llama-3-2-3B-wame-curi-chat2-GGUF", + # "mradermacher/Nemotron-Picaro-fp16-GGUF", + # "mradermacher/ZEUS-8B-V10-GGUF", + # "mradermacher/Human-gemma-2b-GGUF", + # "mradermacher/KAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", + # "mradermacher/Mistral-7B-v0.1-chat-ORPO-GGUF", + # "mradermacher/herbalism_v2-GGUF", + # "mradermacher/CriticalThinker-llama-3.1-8B-GGUF", + # "mradermacher/BilingualChildrenEmo-GGUF", + # "mradermacher/Mistral-7B-v0.3-sft-SPIN-self-human-dataset-GGUF", + # "mradermacher/FineLlama-3.2-3B-Instruct-ead-GGUF", + # "mradermacher/OrpoLlama-3.2-3B-GGUF", + # "mradermacher/maximusLLM-phi-4b-128k-GGUF", + # "mradermacher/Wisenut-3.1-8B-IC-SFT-GGUF", + # "mradermacher/Espresso-AI-GGUF", + # "mradermacher/Llama-3.1-8B-sft-SPIN-self-human-dataset-GGUF", + # "mradermacher/rewrite-7B-tesla-GGUF", + # "mradermacher/Tulu-MathLingo-8B-GGUF", + # "mradermacher/tongyi-model-v1.5-1b-enth-GGUF", + # "mradermacher/occiglot-7b-fr-en-instruct-hf-GGUF", + # "mradermacher/Gemma-2-9B-sft-SPIN-human-dataset-GGUF", + # "mradermacher/L3.1-Magnusv2-10B-GGUF", + # "mradermacher/Gemma-2-9B-sft-SPIN-self-GGUF", + # "mradermacher/opencsg-starcoder2-3b-v0.1-GGUF", + # "mradermacher/M7Yamshadowexperiment28_Experiment26Strangemerges_32-GGUF", + # "mradermacher/J.O.S.I.E.3-Beta4-slerp-GGUF", + # "mradermacher/MT1-Gen5-GP-gemma-2-S4S2-9B-GGUF", + # "mradermacher/lora-phi2-alpaca-GGUF", + # "mradermacher/MT1-Gen5-MU-gemma-2-S2Qv1-9B-GGUF", + # "mradermacher/zephyr-7b-beta-sr-system-do-GGUF", + # "mradermacher/LynxMed-GGUF", + # "mradermacher/Fortitude-1.0-342M-GGUF", + # "mradermacher/GPT-2-Cu_FT-V1-GGUF", + # "mradermacher/stackexchange_blender-GGUF", + # "mradermacher/stackexchange_chess-GGUF", + # "mradermacher/stackexchange_cstheory-GGUF", + # "mradermacher/LynxMed2.0-GGUF", + # "mradermacher/Llama-3.2-3b-Me-GGUF", + # "mradermacher/stackexchange_cseducators-GGUF", + # "mradermacher/Llama-3.1-8B-sft-SPIN-Llama-3.1-70B-Instruct-GGUF", + # "mradermacher/Llama-3.1-8B-sft-SPIN-gpt4o-GGUF", + # "mradermacher/stackexchange_bioinformatics-GGUF", + # "mradermacher/stackexchange_astronomy-GGUF", + # "mradermacher/stackexchange_chemistry-GGUF", + # "mradermacher/stackexchange_cooking-GGUF", + # "mradermacher/II-Tulu-8B-DPO-v3-GGUF", + # "mradermacher/Text-Scrutiny-LLM-GGUF", + # "mradermacher/awelitoLLM-phi-4b-128k-GGUF", + # "mradermacher/tongyi-model-v2.0-1b-th-GGUF", + # "mradermacher/waka-0.5b-simpo-GGUF", + # "mradermacher/KRONOS-8B-V7-GGUF", + # "mradermacher/stackexchange_biology-GGUF", + # "mradermacher/stackexchange_cogsci-GGUF", + # "mradermacher/AetherGemma-GGUF", + # "mradermacher/Gemma-2-9B-sft-SPIN-gpt4o-GGUF", + # "mradermacher/Gemma-2-9B-sft-SPIN-Gemma-2-27B-GGUF", + # "mradermacher/Gemma-The-Writer-Mighty-Sword-9B-GGUF", + # "mradermacher/Gemma-2-9B-sft-SPIN-self-human-dataset-GGUF", + # "mradermacher/MT1-Gen5-BMMIMU-gemma-2-9B-GGUF", + # "mradermacher/MT1-Gen5-IF-gemma-2-S2DMv1-9B-GGUF", + # "mradermacher/K2S3-Mistral-7b-v1.2-GGUF", + # "mradermacher/Nexus-IKM-Mistral-7B-MLX-GGUF", + # "mradermacher/YamshadowStrangemerges_32_Inex12Neural-GGUF", + # "mradermacher/DialoGPT-medium-janeOrthros-GGUF", + # "mradermacher/T3qm7xNeuralsirkrishna-7B-GGUF", + # "mradermacher/L2-7b-Base-Guanaco-Uncensored-GGUF", + # "mradermacher/MT1-Gen5-BB-gemma-2-S4Av4d-9B-GGUF", + + # "mradermacher/MT1-Gen5-IMU-gemma-2-9B-GGUF", + # "mradermacher/MT1-Gen5-MAG-gemma-2-9B-GGUF", + # "mradermacher/MiniLLM-1.1B-WithWudao-GGUF", + # "mradermacher/saul-zephyr-7b-ties-GGUF", + # "mradermacher/social-llama-7b-alpha-v2-GGUF", + # "mradermacher/MT1-Gen5-gemma-2-9B-GGUF", + # "mradermacher/YamshadowStrangemerges_32_Experiment27Experiment28-GGUF", + # "mradermacher/OpenArabic_v0.3-GGUF", + # "mradermacher/T3qT3qm7-7B-GGUF", + # "mradermacher/Skywork-o1-Open-Llama-3.1-8B-GGUF", + # "mradermacher/T3qm7xpExperiment26-7B-GGUF", + # "mradermacher/MT1-Gen5-MM-gemma-2-Av4dS4-9B-GGUF", + # "mradermacher/saiga-7b-GGUF", + # "mradermacher/Experiment26Yamshadow_Experiment28Inex12-GGUF", + # "mradermacher/MasherAI-7B-v5-GGUF", + # "mradermacher/LadybirdPercival-7B-slerp-GGUF", + # "mradermacher/Neural-Dark-Waifu-GGUF", + # "mradermacher/M7Yamshadowexperiment28_Experiment28T3q-GGUF", + # "mradermacher/Mistral-7B-Instruct-v0.2-MultiTask-v7-GGUF", + # "mradermacher/saul-mistral-v0.1-7b-slerp-GGUF", + # "mradermacher/Alma-medical-GGUF", + # "mradermacher/ShadowYamshadow_Strangemerges_30Pastiche-GGUF", + # "mradermacher/WeniGPT-Agents-Mistral-1.0.7-SFT-merged-GGUF", + # "mradermacher/YamshadowInex12_YamExperiment28-GGUF", + # "mradermacher/YamshadowInex12_Experiment28Experiment26-GGUF", + # "mradermacher/Llama-3-8B-Instruct-Physics-5k-Scar-GGUF", + # "mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Ogno-GGUF", + # "mradermacher/NeuralsirkrishnaShadow_Inex12Yam-GGUF", + # "mradermacher/llama-2-7b-allyarc-v2.3-GGUF", + # "mradermacher/T3qm7xNeuralsirkrishna_Experiment24Shadow-GGUF", + # "mradermacher/MetaMathOctopus-MAPO-DPO-7B-GGUF", + # "mradermacher/tinyllama-assamese-v0.1-GGUF", + # "mradermacher/Satoshi-7B-GGUF", + # "mradermacher/Mistral-7-from-Mixtral-8x7B-v0.1-GGUF", + # "mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", + # "mradermacher/ko-gemma-1.1-7b-GGUF", + # "mradermacher/TinySolar-248m-4k-code-instruct-GGUF", + # "mradermacher/karasu-1.1B-slerp_reverse-GGUF", + # "mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.12-GGUF", + # "mradermacher/TowerInstruct-7B-v0.2-sr-system-do-GGUF", + # "mradermacher/BioMistral-MedicalQA-FT-GGUF", + # "mradermacher/SonyaKAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", + # "mradermacher/VerwaltungsAnthologie_Disco_simbad_7B-GGUF", + # "mradermacher/Eris_PrimeV4.1-Remix-7B-GGUF", + # "mradermacher/JSL-MedMNX-7B-v2.0-GGUF", + # "mradermacher/YuisekinAI-mistral-0.3B-GGUF", + # "mradermacher/selfbiorag-7b-dpo-full-wo-kqa_silver_wogold-ep3-GGUF", + # "mradermacher/Experiment26Yamshadow_PasticheNeuralsirkrishna-GGUF", + # "mradermacher/Yamshadowexperiment28M70.81-0.36-0.63-1.0-0.79-0.74-7B-GGUF", + # "mradermacher/KUJIRA_Stock_1-GGUF", + # "mradermacher/llama3-tamil-finetuned-base-v1-GGUF", + # "mradermacher/occiglot-7b-de-es-fr-it-en-instruct-dareties-GGUF", + # "mradermacher/DAML4_TLDR_Generator-GGUF", + # "mradermacher/InfinityFlammenNoodleRP-7b-GGUF", + # "mradermacher/Jason1903_SLERP-GGUF", + # "mradermacher/JP-EN-Translator-2K-steps-7B-GGUF", + # "mradermacher/YamshadowStrangemerges_32_AlloyingotneoyExperiment28-GGUF", + + + + + - "mradermacher/MT1-Gen5-IMU-gemma-2-9B-GGUF", - "mradermacher/MT1-Gen5-MAG-gemma-2-9B-GGUF", - "mradermacher/MiniLLM-1.1B-WithWudao-GGUF", - "mradermacher/saul-zephyr-7b-ties-GGUF", - "mradermacher/social-llama-7b-alpha-v2-GGUF", - "mradermacher/MT1-Gen5-gemma-2-9B-GGUF", - "mradermacher/YamshadowStrangemerges_32_Experiment27Experiment28-GGUF", - "mradermacher/OpenArabic_v0.3-GGUF", - "mradermacher/T3qT3qm7-7B-GGUF", - "mradermacher/Skywork-o1-Open-Llama-3.1-8B-GGUF", - "mradermacher/T3qm7xpExperiment26-7B-GGUF", - "mradermacher/MT1-Gen5-MM-gemma-2-Av4dS4-9B-GGUF", - "mradermacher/saiga-7b-GGUF", - "mradermacher/Experiment26Yamshadow_Experiment28Inex12-GGUF", - "mradermacher/MasherAI-7B-v5-GGUF", - "mradermacher/LadybirdPercival-7B-slerp-GGUF", - "mradermacher/Neural-Dark-Waifu-GGUF", - "mradermacher/M7Yamshadowexperiment28_Experiment28T3q-GGUF", - "mradermacher/Mistral-7B-Instruct-v0.2-MultiTask-v7-GGUF", - "mradermacher/saul-mistral-v0.1-7b-slerp-GGUF", - "mradermacher/Alma-medical-GGUF", - "mradermacher/ShadowYamshadow_Strangemerges_30Pastiche-GGUF", - "mradermacher/WeniGPT-Agents-Mistral-1.0.7-SFT-merged-GGUF", - "mradermacher/YamshadowInex12_YamExperiment28-GGUF", - "mradermacher/YamshadowInex12_Experiment28Experiment26-GGUF", - "mradermacher/Llama-3-8B-Instruct-Physics-5k-Scar-GGUF", - "mradermacher/NeuralsirkrishnaShadow_Strangemerges_32Ogno-GGUF", - "mradermacher/NeuralsirkrishnaShadow_Inex12Yam-GGUF", - "mradermacher/llama-2-7b-allyarc-v2.3-GGUF", - "mradermacher/T3qm7xNeuralsirkrishna_Experiment24Shadow-GGUF", - "mradermacher/MetaMathOctopus-MAPO-DPO-7B-GGUF", - "mradermacher/tinyllama-assamese-v0.1-GGUF", - "mradermacher/Satoshi-7B-GGUF", - "mradermacher/Mistral-7-from-Mixtral-8x7B-v0.1-GGUF", - "mradermacher/ErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", - "mradermacher/ko-gemma-1.1-7b-GGUF", - "mradermacher/TinySolar-248m-4k-code-instruct-GGUF", - "mradermacher/karasu-1.1B-slerp_reverse-GGUF", - "mradermacher/Swallow-MS-7b-v0.1-ChatSkill-LAB-Evo-v0.12-GGUF", - "mradermacher/TowerInstruct-7B-v0.2-sr-system-do-GGUF", - "mradermacher/BioMistral-MedicalQA-FT-GGUF", - "mradermacher/SonyaKAErisepBeagleNuBuRPInfinWestLakev2-ENDLESSIreneRP-Neural-7B-slerp-GGUF", - "mradermacher/VerwaltungsAnthologie_Disco_simbad_7B-GGUF", - "mradermacher/Eris_PrimeV4.1-Remix-7B-GGUF", - "mradermacher/JSL-MedMNX-7B-v2.0-GGUF", - "mradermacher/YuisekinAI-mistral-0.3B-GGUF", - "mradermacher/selfbiorag-7b-dpo-full-wo-kqa_silver_wogold-ep3-GGUF", - "mradermacher/Experiment26Yamshadow_PasticheNeuralsirkrishna-GGUF", - "mradermacher/Yamshadowexperiment28M70.81-0.36-0.63-1.0-0.79-0.74-7B-GGUF", - "mradermacher/KUJIRA_Stock_1-GGUF", - "mradermacher/llama3-tamil-finetuned-base-v1-GGUF", - "mradermacher/occiglot-7b-de-es-fr-it-en-instruct-dareties-GGUF", - "mradermacher/DAML4_TLDR_Generator-GGUF", - "mradermacher/InfinityFlammenNoodleRP-7b-GGUF", - "mradermacher/Jason1903_SLERP-GGUF", - "mradermacher/JP-EN-Translator-2K-steps-7B-GGUF", - "mradermacher/YamshadowStrangemerges_32_AlloyingotneoyExperiment28-GGUF", "mradermacher/llama-2-7b-ft-guanaco-v2-GGUF", "mradermacher/Experiment26Yam_PasticheAlloyingotneoy-GGUF", "mradermacher/Experiment26Neuralsirkrishna_Experiment28Inex12-GGUF", @@ -1355,7 +1360,7 @@ ALL_MODEL_IDS = [ "mradermacher/Therapod-Model-GGUF", "mradermacher/Yamshadowexperiment28M70.15-0.01-0.79-0.31-0.16-0.95-7B-GGUF", #### 这一段有提前占位提交 zhoukaile, zhangyuanxi, 然后等待 zhoushasha 的账号去下载,但是应该都是提交的 bi150 以及 hygon - #### 提前占位依然可以交 b3\b4\mthread,已经交了 + #### 提前占位依然可以交 b3\b4\mthread,已经交了占位提交 @@ -2616,21 +2621,25 @@ def get_model_filename(model_id: str) -> str: return base_name # ══════════════════════════════════════════════════════════ -# 登录获取 token(失败时回退到预设 AUTH_TOKEN) +# 登录获取有效的 zhoushasha Token # ══════════════════════════════════════════════════════════ def login() -> str: payload = {"userAccount": USER_ACCOUNT, "userPassword": USER_PASSWORD} print("[login] 正在登录...", flush=True) - try: - resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15) - data = resp.json() - if resp.status_code == 200 and data.get("code") == 0: - print("[login] 登录成功", flush=True) - return data["data"]["token"] - print(f"[login] 登录失败: {data.get('message')},回退使用预设 Token", flush=True) - except Exception as e: - print(f"[login] 登录异常: {e},回退使用预设 Token", flush=True) - return AUTH_TOKEN + resp = requests.post(BASE_URL + LOGIN_ENDPOINT, headers=HEADERS, json=payload, timeout=15) + resp.raise_for_status() + data = resp.json() + token = (data.get("data") or {}).get("token") + if data.get("code") != 0 or not token: + raise RuntimeError(f"zhoushasha 登录失败: {data.get('message')}") + encoded_claims = token.split(".")[1] + claims = json.loads(base64.urlsafe_b64decode(encoded_claims + "=" * (-len(encoded_claims) % 4))) + if claims.get("userAccount") != "zhoushasha": + raise RuntimeError("登录返回的 Token 不属于 zhoushasha,停止下载提交") + if int(claims.get("exp") or 0) <= time.time(): + raise RuntimeError("登录返回的 Token 已过期,停止下载提交") + print("[login] zhoushasha 登录成功,Token 有效", flush=True) + return token # ══════════════════════════════════════════════════════════ # 创建单个模型的下载任务