jscmp4 commited on
Commit
db04450
·
verified ·
1 Parent(s): fa75915

Update eh_logic.py

Browse files
Files changed (1) hide show
  1. eh_logic.py +12 -21
eh_logic.py CHANGED
@@ -54,7 +54,6 @@ def run_eh_download(eh_url, cookies_str, progress=gr.Progress()):
54
 
55
  # 5. 执行下载
56
  try:
57
- # bufsize=0 和 universal_newlines=True 确保输出不被缓存,实时显示
58
  process = subprocess.Popen(
59
  cmd,
60
  stdout=subprocess.PIPE,
@@ -63,7 +62,8 @@ def run_eh_download(eh_url, cookies_str, progress=gr.Progress()):
63
  bufsize=1
64
  )
65
 
66
- logs = ""
 
67
  img_count = 0
68
 
69
  # 逐行读取日志
@@ -71,37 +71,28 @@ def run_eh_download(eh_url, cookies_str, progress=gr.Progress()):
71
  line = line.strip()
72
  if not line: continue
73
 
74
- logs += line + "\n"
 
75
 
76
- # --- 进度条逻辑 ---
77
- # gallery-dl 的 verbose 输出里下载图片通常包含 "#" "http"
 
 
 
78
  if "#" in line and "http" in line:
79
  img_count += 1
80
- # 更新进度条描述
81
- progress(None, desc=f"正在下载第 {img_count} 张图片...")
82
 
83
- # 遇到特定关键词更新状态
84
  if "Connection" in line:
85
  progress(None, desc="正在建立连接...")
86
  elif "403 Forbidden" in line:
87
  progress(None, desc="❌ 403 拒绝访问 (Cookies无效)")
88
 
89
- # 实时推送到前端日志框
90
- # 限制日志长度防止前端卡顿,只显示最近 10
91
- yield None, f"{line}", f"已下载: {img_count}"
92
 
93
  process.wait()
94
 
95
- if process.returncode != 0:
96
- print(f"[-] Debug: 进程退出码: {process.returncode}")
97
- yield None, f"❌ 下载失败 (Code {process.returncode})。\n请查看上方日志检查 Cookies 是否过期。", "失败"
98
- return
99
-
100
- except Exception as e:
101
- print(f"[-] Debug: Python 异常: {e}")
102
- yield None, f"❌ 调用出错: {e}", "系统错误"
103
- return
104
-
105
  # 6. 寻找图片目录
106
  progress(0.9, desc="下载完成,正在搜索文件...")
107
  target_img_dir = None
 
54
 
55
  # 5. 执行下载
56
  try:
 
57
  process = subprocess.Popen(
58
  cmd,
59
  stdout=subprocess.PIPE,
 
62
  bufsize=1
63
  )
64
 
65
+ # === 🔴 修改开始:定义一个列表来存日志 ===
66
+ log_buffer = []
67
  img_count = 0
68
 
69
  # 逐行读取日志
 
71
  line = line.strip()
72
  if not line: continue
73
 
74
+ # 1. 把新的一行加入缓存列表
75
+ log_buffer.append(line)
76
 
77
+ # 2. 生成要显示的文本(只取最后 20 行,实现“滚动”效果)
78
+ # 如果想显示全部就改成: display_text = "\n".join(log_buffer)
79
+ display_text = "\n".join(log_buffer[-20:])
80
+
81
+ # --- 进度条逻辑 (保持不变) ---
82
  if "#" in line and "http" in line:
83
  img_count += 1
84
+ progress(None, desc=f"正在下载第 {img_count} 张...")
 
85
 
 
86
  if "Connection" in line:
87
  progress(None, desc="正在建立连接...")
88
  elif "403 Forbidden" in line:
89
  progress(None, desc="❌ 403 拒绝访问 (Cookies无效)")
90
 
91
+ # === 🔴 修改结束:这里 yield 的是 display_text (多行),而不是 line (单行) ===
92
+ yield None, display_text, f"已下载: {img_count}"
 
93
 
94
  process.wait()
95
 
 
 
 
 
 
 
 
 
 
 
96
  # 6. 寻找图片目录
97
  progress(0.9, desc="下载完成,正在搜索文件...")
98
  target_img_dir = None