mirror of
https://github.com/BsaLee/up163cloud.git
synced 2026-01-15 18:20:43 +08:00
添加断点续传逻辑,从最后一次上传失败的位置继续上传
This commit is contained in:
parent
43cfe4e85b
commit
f33bf31420
22
main.py
22
main.py
@ -1,5 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
import json
|
import json
|
||||||
|
from typing import Union
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
|
|
||||||
@ -109,6 +110,14 @@ def save_failed_id(song_id):
|
|||||||
with open("failed_ids.txt", "a") as f:
|
with open("failed_ids.txt", "a") as f:
|
||||||
f.write(f"{song_id}\n")
|
f.write(f"{song_id}\n")
|
||||||
|
|
||||||
|
# 获取最后一个上传的异常 id
|
||||||
|
def get_last_failed_id() -> Union[int, None]:
|
||||||
|
if not os.path.exists("failed_ids.txt"):
|
||||||
|
return None
|
||||||
|
with open("failed_ids.txt", "r") as f:
|
||||||
|
ids = [line.strip() for line in f]
|
||||||
|
return int(ids[-1])
|
||||||
|
|
||||||
# 处理歌曲导入请求
|
# 处理歌曲导入请求
|
||||||
def process_songs(song_info_list, cookie):
|
def process_songs(song_info_list, cookie):
|
||||||
failed_attempts = {} # 记录每个 ID 失败的次数
|
failed_attempts = {} # 记录每个 ID 失败的次数
|
||||||
@ -163,6 +172,16 @@ def try_to_upload_song(song_info, cookie):
|
|||||||
print(f"歌曲 {song_id} 失败三次,跳过该歌曲。")
|
print(f"歌曲 {song_id} 失败三次,跳过该歌曲。")
|
||||||
save_failed_id(song_id) # 保存失败的 ID
|
save_failed_id(song_id) # 保存失败的 ID
|
||||||
|
|
||||||
|
def get_resume_song_info_list(song_info_list) -> list:
|
||||||
|
last_failed_id = get_last_failed_id()
|
||||||
|
if last_failed_id is None:
|
||||||
|
print("暂无上传失败记录,从头开始上传")
|
||||||
|
return
|
||||||
|
for index, song_info in enumerate(song_info_list):
|
||||||
|
if int(song_info['id']) == last_failed_id:
|
||||||
|
print(f"当前已上传: {index + 1},最后上传失败的 id: {song_info['id']}")
|
||||||
|
return song_info_list[index + 1:]
|
||||||
|
|
||||||
# 主函数
|
# 主函数
|
||||||
def main():
|
def main():
|
||||||
# 尝试读取已保存的 cookie
|
# 尝试读取已保存的 cookie
|
||||||
@ -192,6 +211,9 @@ def main():
|
|||||||
song_info_list = get_all_song_info(songs_data)
|
song_info_list = get_all_song_info(songs_data)
|
||||||
#print(f"所有歌曲信息: {song_info_list}")
|
#print(f"所有歌曲信息: {song_info_list}")
|
||||||
|
|
||||||
|
# 从上次失败的歌曲开始上传
|
||||||
|
song_info_list = get_resume_song_info_list(song_info_list)
|
||||||
|
|
||||||
# 执行歌曲导入请求
|
# 执行歌曲导入请求
|
||||||
process_songs(song_info_list, cookie)
|
process_songs(song_info_list, cookie)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user