diff --git a/restore_cameras.py b/restore_cameras.py new file mode 100644 index 0000000..8b9857d --- /dev/null +++ b/restore_cameras.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +""" +摄像头配置恢复助手 +如果云端配置丢失,使用此脚本手动添加摄像头配置 +""" +import sys +from pathlib import Path +sys.path.insert(0, str(Path(__file__).parent)) + +from config.database import get_sqlite_manager + +def main(): + print("=== Camera Config Recovery Tool ===\n") + print("This tool helps you restore the 3 missing camera configs") + print("You need to provide the RTSP URLs for:") + print(" 1. cam_1f0e3dad9990") + print(" 2. cam_6f4922f45568") + print(" 3. cam_c51ce410c124") + print() + + cameras_to_add = [] + + for i, cam_id in enumerate(['cam_1f0e3dad9990', 'cam_6f4922f45568', 'cam_c51ce410c124'], 1): + print(f"\nCamera {i}: {cam_id}") + rtsp_url = input(f" RTSP URL (or press Enter to skip): ").strip() + + if not rtsp_url: + print(f" Skipped") + continue + + name = input(f" Display Name (default: {cam_id}): ").strip() or cam_id + + cameras_to_add.append({ + "camera_id": cam_id, + "rtsp_url": rtsp_url, + "name": name + }) + + if not cameras_to_add: + print("\n[CANCELLED] No cameras to add") + return + + print("\n" + "=" * 50) + print("Summary:") + for cam in cameras_to_add: + print(f" - {cam['camera_id']}: {cam['name']}") + print(f" RTSP: {cam['rtsp_url'][:50]}...") + print("=" * 50) + + response = input("\nAdd these cameras to database? (yes/no): ").strip().lower() + + if response != 'yes': + print("\n[CANCELLED]") + return + + # Add cameras to database + db_manager = get_sqlite_manager() + + for cam in cameras_to_add: + try: + db_manager.save_camera_config(cam) + print(f" [OK] Added: {cam['camera_id']}") + except Exception as e: + print(f" [FAIL] Failed to add {cam['camera_id']}: {e}") + + print("\n[SUCCESS] Cameras added to database") + print("\nNext steps:") + print(" 1. Restart the Edge service") + print(" 2. The 3 cameras should now start streaming") + +if __name__ == "__main__": + main()