diff --git a/Qwen_app.py b/Qwen_app.py index 70364a3..97a68f4 100644 --- a/Qwen_app.py +++ b/Qwen_app.py @@ -332,19 +332,30 @@ def get_vid_dict(vid_dir: str, obj_dict: dict, video_url_file: str, use_url_cach if os.path.exists(video_url_file): try: with open(video_url_file, "r", encoding="utf-8") as f: - vid_dict = json.load(f) + loaded_data = json.load(f) + # 验证数据结构:确保值是字典且包含必要键 + for track_id, value in loaded_data.items(): + if isinstance(value, dict) and "vid_path" in value and "vid_url" in value: + vid_dict[track_id] = value + else: + print(f"跳过无效的视频信息: {track_id} -> {value}") except Exception as e: print(f"读取URL文件失败: {e}") + + # 初始化未存在的track_id for track_id in obj_dict.keys(): if track_id in vid_dict: continue - vid_path = f"{vid_dir}/obj_{int(track_id):03d}.mp4" - vid_dict[track_id] = {"vid_path": vid_path, "vid_url": None} + try: + vid_path = f"{vid_dir}/obj_{int(track_id):03d}.mp4" + vid_dict[track_id] = {"vid_path": vid_path, "vid_url": None} + except (ValueError, TypeError): + print(f"无效的track_id: {track_id},跳过") # 找到未上传的视频 unuploaded_vids = [] for track_id, vid_info in vid_dict.items(): - if vid_info["vid_url"] is None: + if isinstance(vid_info, dict) and vid_info.get("vid_url") is None: unuploaded_vids.append(vid_info["vid_path"]) # 上传未上传的视频并获取 URL @@ -355,9 +366,11 @@ def get_vid_dict(vid_dir: str, obj_dict: dict, video_url_file: str, use_url_cach # 更新视频URL for track_id, vid_info in vid_dict.items(): - if vid_info["vid_url"] is None: - idx = unuploaded_vids.index(vid_info["vid_path"]) - vid_info["vid_url"] = uploaded_urls[idx] + if isinstance(vid_info, dict) and vid_info.get("vid_url") is None: + if vid_info["vid_path"] in unuploaded_vids: + idx = unuploaded_vids.index(vid_info["vid_path"]) + if idx < len(uploaded_urls): + vid_info["vid_url"] = uploaded_urls[idx] # 保存字典为 JSON 文件 with open(video_url_file, "w", encoding="utf-8") as f: