脚本
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搞明白



































































































































