video-accessibility/backend/app/services
michael 83e4752327 feat: add server-side zip download for bulk job downloads
Replace sequential browser-based bulk download with server-side zip
generation. When users select "Download All Files" from bulk actions,
the system now creates a single organized .zip file containing all
job assets.

Changes:
- Add POST /jobs/bulk/download endpoint that streams zip to client
- Add BulkDownloadRequest schema for the new endpoint
- Create zip_download.py service with streaming zip generation
- Update frontend to call new endpoint and download single zip file
- Organize files in zip by job title and language subdirectories

Zip structure:
accessible_video_YYYYMMDD_HHMMSS.zip
└── {job_title}/
    ├── source.mp4
    └── {lang}/
        ├── captions.vtt
        ├── ad.vtt
        ├── ad.mp3
        ├── accessible_video.mp4
        └── accessible_captions.vtt

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-04 15:57:57 -06:00
..
__pycache__ better tts config for worker 2025-10-08 18:47:28 -05:00
audit_logger.py initial commit 2025-08-24 16:28:33 -05:00
emailer.py initial commit 2025-08-24 16:28:33 -05:00
ffmpeg_http_service.py feat: add Cloud Run HTTP services for Whisper and FFmpeg 2026-01-02 10:12:50 -06:00
gcs.py initial commit 2025-08-24 16:28:33 -05:00
gemini.py feat: use AD VTT pause points instead of Gemini video analysis 2026-01-03 19:05:45 -06:00
gemini_tts.py feat: add TTS_FAILED status and robust error handling for TTS synthesis 2025-12-30 14:26:07 -06:00
microsoft_auth.py added MSAL microsoft authentication 2025-10-10 09:19:39 -05:00
secrets_manager.py initial commit 2025-08-24 16:28:33 -05:00
tts.py feat: add accessible video (MP4 with embedded audio descriptions) 2025-12-26 11:06:41 -06:00
validation.py feat: add accessible video validation, remove AI confidence check 2025-12-26 16:41:57 -06:00
video_renderer.py fix: prevent event loop closed error in video renderer Cloud Run calls 2026-01-03 08:44:27 -06:00
vtt_retimer.py fix: rewrite VTT retiming algorithm to prevent captions during AD segments 2025-12-30 09:01:03 -06:00
websocket.py wrote docker files and deployment instructions 2025-10-08 16:00:12 -05:00
websocket_publisher.py wrote docker files and deployment instructions 2025-10-08 16:00:12 -05:00
whisper_http_service.py feat: add Cloud Run HTTP services for Whisper and FFmpeg 2026-01-02 10:12:50 -06:00
whisper_service.py feat: add Cloud Run HTTP services for Whisper and FFmpeg 2026-01-02 10:12:50 -06:00
zip_download.py feat: add server-side zip download for bulk job downloads 2026-01-04 15:57:57 -06:00