Mimk-054-en-javhd-today-0901202101-58-02 Min ((hot))

// POST /api/media/upload (multipart/form‑data with a file or just a filename) router.post('/upload', (req, res) => const identifier = req.body; // e.g., "MIMK-054-EN-JAVHD‑TODAY‑0901202101‑58‑02 Min" if (!identifier) return res.status(400).json( error: 'identifier required' );

if (minDuration) const secs = parseInt(minDuration, 10); filtered = filtered.filter(m => m.durationSec >= secs); MIMK-054-EN-JAVHD-TODAY-0901202101-58-02 Min

^(?<prefix>MIMK)-(?<serial>\d3)-(?<lang>[A-Z]2)-(?<format>[A-Z]+)-(?<title>[^-]+)-(?<date>\d8)(?<time>\d2)-(?<duration>\d2)-(?<unit>Min)$ | | US‑4 | Auditor | Export a

| # | As a … | I want … | So that … | |---|--------|----------|-----------| | US‑1 | | Upload a video whose filename follows the MIMK‑…‑Min pattern | The system extracts title, language, format, date, and duration automatically. | | US‑2 | Viewer | See a clean card with “Title: TODAY”, “Date: 01‑Sep‑2021”, “Duration: 2 min 58 sec” | I instantly understand what the clip is. | | US‑3 | Scheduler | Query the API for all clips longer than X minutes on a specific day | I can build a broadcast schedule without hand‑picking files. | | US‑4 | Auditor | Export a CSV of all parsed identifiers with validation status | I can prove compliance with naming‑convention policies. | | US‑5 | Developer | Hook into a JavaScript function parseSMI(id) | I can reuse the logic in other parts of the app. | date = req.query

// GET /api/media?minDuration=120&date=2021-09-01 router.get('/', (req, res) => const minDuration, date = req.query; let filtered = mediaStore.filter(m => m.valid);