| import asyncio | |
| import os | |
| from dotenv import load_dotenv | |
| from supabase import create_client | |
| def _annotated_video_path(video_id): | |
| return os.path.join("output_videos", "annotated", f"{video_id}.mp4") | |
| async def sync(): | |
| load_dotenv() | |
| url = os.environ.get('SUPABASE_URL') | |
| key = os.environ.get('SUPABASE_SERVICE_KEY') or os.environ.get('SUPABASE_KEY') | |
| client = create_client(url, key) | |
| # Get all videos | |
| res = client.table('videos').select('id, status').execute() | |
| videos = res.data | |
| print(f"Checking {len(videos)} videos...") | |
| for v in videos: | |
| video_id = v['id'] | |
| path = _annotated_video_path(video_id) | |
| exists = os.path.exists(path) | |
| # Only update if there's a mismatch OR to initialize | |
| # Actually, let's just update them all for consistency | |
| try: | |
| client.table('videos').update({'has_annotated': exists}).eq('id', video_id).execute() | |
| print(f"Video {video_id}: has_annotated = {exists}") | |
| except Exception as e: | |
| print(f"Error updating video {video_id}: {e}") | |
| if __name__ == "__main__": | |
| asyncio.run(sync()) | |