Spaces:
Sleeping
Sleeping
debug
Browse files
app.py
CHANGED
@@ -2335,66 +2335,65 @@ def refresh_video_LLM_all_content_by_sheet(sheet_url, sheet_qa_column, video_ids
|
|
2335 |
print(f"批次更新 QA 為 '{sheet_qa_success_tag}' 時發生錯誤: {e}")
|
2336 |
# 這裡可以考慮是否要將這些 ID 移到失敗列表
|
2337 |
|
2338 |
-
# 6.
|
2339 |
-
successfully_refreshed_ids = [] # (video_id, row_number)
|
2340 |
-
failed_refresh_ids = [] # (video_id, row_number)
|
2341 |
-
|
2342 |
if ids_to_refresh:
|
2343 |
-
print(f"\n開始處理 {len(ids_to_refresh)} 個需要刷新的 Video ID...")
|
2344 |
-
#
|
|
|
|
|
2345 |
for video_id in ids_to_refresh:
|
2346 |
row_number = video_id_to_row_map[video_id] # 必定存在,前面已檢查
|
2347 |
print(f" 正在刷新 {video_id} (第 {row_number} 列)...")
|
|
|
2348 |
try:
|
2349 |
refresh_video_LLM_all_content_by_id(video_id)
|
2350 |
print(f" - {video_id} 刷新成功。")
|
2351 |
-
successfully_refreshed_ids.append((video_id, row_number)) #
|
|
|
|
|
|
|
|
|
|
|
|
|
2352 |
time.sleep(1) # 避免過於頻繁觸發其他 API (例如 GCS 刪除/上傳)
|
2353 |
except Exception as e:
|
2354 |
print(f" - {video_id} 刷新失敗: {str(e)}")
|
2355 |
-
failed_refresh_ids.append((video_id, row_number)) #
|
|
|
|
|
|
|
|
|
|
|
|
|
2356 |
time.sleep(5) # 失敗時稍作停頓
|
2357 |
-
|
2358 |
-
|
2359 |
-
|
2360 |
-
|
2361 |
-
|
2362 |
-
|
2363 |
-
|
2364 |
-
|
2365 |
-
|
2366 |
-
|
2367 |
-
|
2368 |
-
|
2369 |
-
|
2370 |
-
|
2371 |
-
|
2372 |
-
|
2373 |
-
|
2374 |
-
|
2375 |
-
|
2376 |
-
|
2377 |
-
|
2378 |
-
|
2379 |
-
|
2380 |
-
|
2381 |
-
|
2382 |
-
|
2383 |
-
|
2384 |
-
|
2385 |
-
print(f"批次更新 QA 為 '{sheet_qa_success_tag}' (刷新成功) 時發生錯誤: {e}")
|
2386 |
-
|
2387 |
-
# 執行失敗的批次更新
|
2388 |
-
if update_data_xx:
|
2389 |
-
print(f"\n準備批次更新 {len(update_data_xx)} 個 Video ID 的 QA 為 '{sheet_qa_failed_tag}' (刷新失敗)...")
|
2390 |
-
try:
|
2391 |
-
SHEET_SERVICE.batch_update_cells(sheet_url, update_data_xx) # <--- 實際呼叫更新 Sheet 的函數
|
2392 |
-
print(f"成功批次更新 {len(update_data_xx)} 個儲存格為 '{sheet_qa_failed_tag}'。")
|
2393 |
-
except Exception as e:
|
2394 |
-
print(f"批次更新 QA 為 '{sheet_qa_failed_tag}' 時發生錯誤: {e}")
|
2395 |
-
else:
|
2396 |
-
if successfully_refreshed_ids or failed_refresh_ids:
|
2397 |
-
print("錯誤:無法獲取工作表名稱,無法批次更新刷新結果。")
|
2398 |
|
2399 |
# 8. 整理最終結果
|
2400 |
final_success_ids = [item[0] for item in ids_to_set_oo_phase1] + [item[0] for item in successfully_refreshed_ids]
|
|
|
2335 |
print(f"批次更新 QA 為 '{sheet_qa_success_tag}' 時發生錯誤: {e}")
|
2336 |
# 這裡可以考慮是否要將這些 ID 移到失敗列表
|
2337 |
|
2338 |
+
# 6. 逐一處理需要刷新的 Video ID,並即時更新 Sheet 狀態
|
|
|
|
|
|
|
2339 |
if ids_to_refresh:
|
2340 |
+
print(f"\n開始處理 {len(ids_to_refresh)} 個需要刷新的 Video ID (即時更新 Sheet)...")
|
2341 |
+
successfully_refreshed_ids = [] # 初始化成功列表
|
2342 |
+
failed_refresh_ids = [] # 初始化失敗列表
|
2343 |
+
# 這個迴圈負責執行刷新,並在每次完成後立即更新 Sheet
|
2344 |
for video_id in ids_to_refresh:
|
2345 |
row_number = video_id_to_row_map[video_id] # 必定存在,前面已檢查
|
2346 |
print(f" 正在刷新 {video_id} (第 {row_number} 列)...")
|
2347 |
+
update_request = None
|
2348 |
try:
|
2349 |
refresh_video_LLM_all_content_by_id(video_id)
|
2350 |
print(f" - {video_id} 刷新成功。")
|
2351 |
+
successfully_refreshed_ids.append((video_id, row_number)) # 仍然記錄成功,以備後續統計
|
2352 |
+
# 準備單一成功更新請求
|
2353 |
+
# *** 注意: 您需要確認 SHEET_NAME 和 STATUS_COL_LETTER ***
|
2354 |
+
update_request = [{
|
2355 |
+
'range': f'{SHEET_NAME}!{STATUS_COL_LETTER}{row_number}', # 例如: '工作表1!G5'
|
2356 |
+
'values': [['OO']]
|
2357 |
+
}]
|
2358 |
time.sleep(1) # 避免過於頻繁觸發其他 API (例如 GCS 刪除/上傳)
|
2359 |
except Exception as e:
|
2360 |
print(f" - {video_id} 刷新失敗: {str(e)}")
|
2361 |
+
failed_refresh_ids.append((video_id, row_number)) # 仍然記錄失敗,以備後續統計
|
2362 |
+
# 準備單一失敗更新請求
|
2363 |
+
# *** 注意: 您需要確認 SHEET_NAME 和 STATUS_COL_LETTER ***
|
2364 |
+
update_request = [{
|
2365 |
+
'range': f'{SHEET_NAME}!{STATUS_COL_LETTER}{row_number}', # 例如: '工作表1!G5'
|
2366 |
+
'values': [['XX']]
|
2367 |
+
}]
|
2368 |
time.sleep(5) # 失敗時稍作停頓
|
2369 |
+
finally:
|
2370 |
+
# 無論成功或失敗,都嘗試更新該行的狀態
|
2371 |
+
if update_request:
|
2372 |
+
try:
|
2373 |
+
print(f" - 更新 Sheet 第 {row_number} 列狀態...")
|
2374 |
+
# *** 假設 batch_update_cells 可以接受單一更新請求的列表 ***
|
2375 |
+
# *** 注意: 您需要確認 batch_update_cells 函式存在且能處理此格式 ***
|
2376 |
+
SHEET_SERVICE.batch_update_cells(sheet_url, update_request) # 假設使用 SHEET_SERVICE
|
2377 |
+
print(f" - 第 {row_number} 列狀態更新成功。")
|
2378 |
+
except Exception as update_e:
|
2379 |
+
print(f" - !! 更新 Sheet 第 {row_number} 列狀態失敗: {str(update_e)}")
|
2380 |
+
# 即使更新 Sheet 失敗,也要記錄下來,避免影響下一個影片的處理
|
2381 |
+
# 可以在這裡加入更詳細的錯誤記錄機制
|
2382 |
+
|
2383 |
+
# 7. 批次更新刷新結果 (OO for success, XX for failure) <-- 這段程式碼現在不需要了,因為已在迴圈內即時更新
|
2384 |
+
# if successfully_refreshed_ids or failed_refresh_ids:
|
2385 |
+
# print("\n開始批次更新 Google Sheet 刷新結果...")
|
2386 |
+
# update_requests = []
|
2387 |
+
# # ... (原本準備 update_requests 的程式碼) ...
|
2388 |
+
#
|
2389 |
+
# if update_requests:
|
2390 |
+
# try:
|
2391 |
+
# batch_update_cells(update_requests)
|
2392 |
+
# print(f" 成功更新 {len(successfully_refreshed_ids)} 個成功,{len(failed_refresh_ids)} 個失敗的狀態。")
|
2393 |
+
# except Exception as e:
|
2394 |
+
# print(f" 批次更新 Google Sheet 失敗: {str(e)}")
|
2395 |
+
# else:
|
2396 |
+
# print(" 沒有需要更新的狀態。")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2397 |
|
2398 |
# 8. 整理最終結果
|
2399 |
final_success_ids = [item[0] for item in ids_to_set_oo_phase1] + [item[0] for item in successfully_refreshed_ids]
|