How varungandhi29/mediagrab_ai works
MediaGrab AI accepts a media URL, streams extraction progress and metadata, lets the user choose an available format, then prepares a playable/downloadable file and reports job progress. The README documents four extraction tiers, audio conversion, security controls, AI recommendations, and session history; sampled source confirms the metadata, preparation, storage, and UI paths. Resilience, system feedback, and some API wiring are represented at the documented subsystem level because their implementation was not fully sampled.
Main entry points: routes_stream.py Media stream routes · api.js API client · App.jsx Download interface · routes_metadata.py Metadata routes
Components 24
Web Client
- Download interface
frontend/src/App.jsx - API client
frontend/src/services/api.js - Session history
frontend/src/utils/storage.js
API Surface
- Metadata routes
backend/app/api/routes_metadata.py - Media stream routes
backend/app/api/routes_stream.py - AI routes
backend/app/api/routes_ai.py - System routes
backend/app/api/routes_system.py - Application server
backend/app/main.py
Media Processing
- Tiered extractor
backend/app/services/extractor.py - Headless browser
backend/app/services/headless_browser.py - Media preparation
backend/app/services/media_pipeline.py - Media normalizer
backend/app/services/media_normalizer.py - Ephemeral media store
backend/app/services/storage_manager.py - AI assistant
backend/app/services/ai_assistant.py
Security Controls
- SSRF validation
backend/app/security/ssrf_validator.py - Subprocess sandbox
backend/app/security/sandbox.py - Rate limiting
backend/app/security/rate_limiter.py
Operations & Resilience
- Feedback analytics
backend/app/services/feedback_manager.py - Link pre-check
backend/app/services/link_checker.py - Resilience services
backend/app/resilience - Operator alerts
backend/app/resilience/alert_manager.py
Other components
- Media user
- Gemini service
- Alert webhook
Connections 28
- Media user → Download interface: submits URL
- Download interface → API client: requests metadata
- API client → Metadata routes: calls metadata API
- Metadata routes → Tiered extractor: extracts metadata
- Tiered extractor → Headless browser: renders tier four
- Metadata routes → Feedback analytics: records attempts
- Download interface → API client: requests recommendation
- API client → AI routes: calls AI API
- AI routes → AI assistant: requests guidance
- AI assistant → Gemini service: uses when configured
- Download interface → API client: starts preparation
- API client → Media stream routes: calls prepare route
- Media stream routes → Media preparation: creates preparation job
- Media preparation → Subprocess sandbox: runs isolated extractor
- Media preparation → Media normalizer: normalizes media
- Media preparation → Ephemeral media store: registers finished file
- Media stream routes → Media preparation: reads SSE progress
- Media stream routes → Ephemeral media store: reads download token
- Download interface → Session history: saves completed item
- Metadata routes → SSRF validation: validates submitted URL
- Media stream routes → SSRF validation: validates proxied URL
- Metadata routes → Rate limiting: checks request limit
- Media stream routes → Rate limiting: checks download limit
- System routes → Link pre-check: checks pasted link
- System routes → Feedback analytics: reads metrics and stores reports
- Application server → Resilience services: starts background monitors
- Resilience services → Operator alerts: evaluates failures
- Operator alerts → Alert webhook: dispatches alert