Paid shorts: full-screen vertical video feed over the video inventory, earn per watched short

- /shorts page: no-seek full-screen player, server-clock watch, credit + swipe to next
- Reuses /api/my/videos + /api/my/videowatch (same fraud model, daily cap, self-exclusion)
- Linked from Earn credits > Watch videos

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
martbost
2026-09-06 09:02:29 -05:00
parent b7e9fdf656
commit c5dd5c685b
4 changed files with 103 additions and 1 deletions
+1
View File
@@ -939,6 +939,7 @@ const server = http.createServer(async (req, res) => {
if (p === '/ledger') return sendFile(res, path.join(PUBLIC_DIR, 'ledger.html'));
if (p === '/contract') return sendFile(res, path.join(PUBLIC_DIR, 'contract.html'));
if (p === '/my') return sendFile(res, path.join(PUBLIC_DIR, 'my.html'));
if (p === '/shorts') return sendFile(res, path.join(PUBLIC_DIR, 'shorts.html'));
if (/^\/view\/[a-f0-9]{32}$/.test(p)) return sendFile(res, path.join(PUBLIC_DIR, 'view.html'));
m = /^\/uploads\/([a-z0-9]{24}\.(?:png|jpg|webp|gif|mp4|webm))$/.exec(p);
if (m) return sendFile(res, path.join(UPLOADS_DIR, m[1]));