脚本


proxies = {
            "http": "socks5h://host.docker.internal:10808",
            "https": "socks5h://host.docker.internal:10808",
        }

url = "https://huggingface.co/datasets/miaojiemiao/Anime-2026/resolve/main/images/"

def supports_range(url):
    try:
        r = requests.get(
            url,
            headers={"Range": "bytes=0-0"},
            stream=True,
            allow_redirects=True,
            timeout=10
        )
        return r.status_code == 206
    except requests.RequestException:
        return False

def download(url, filename):
    part_file = filename + ".part"
    downloaded = os.path.getsize(part_file) if os.path.exists(part_file) else 0

    headers = {}
    if downloaded > 0:
        headers["Range"] = f"bytes={downloaded}-"
    print("等待连接")
    with requests.get(url, headers=headers, stream=True,timeout=(10, 300),proxies=proxies) as r:
        if r.status_code not in (200, 206):
            r.raise_for_status()
        print("已连接")
        # 服务器不支持续传,重新下载
        if r.status_code == 200 and downloaded > 0:
            print("不支持断点续传")
            downloaded = 0
            open(part_file, "wb").close()
        else:
            print("断点续传")

        mode = "ab" if r.status_code == 206 else "wb"

        total = int(r.headers.get("content-length", 0))
        with open(part_file, mode) as f:
            for chunk in r.iter_content(1024*1024):
                if chunk:
                    f.write(chunk)

                downloaded += len(chunk)
                if total:
                    percent = downloaded * 100 / total
                    print(f"\r已下载: {percent:.2f}%", end="")

    os.replace(part_file, filename)
    print(f"下载完成: {filename}")



for i in range(17,20):
    file=f'Anime_{i:04}.tar'
    download(url+file,file)

快写似了喵,先不解析了,先把cache thrashing livelock搞明白