Skip to content

Captions opt-in + YouTube downloads go anonymous-first - #84

Closed
SecretivePie495 wants to merge 5 commits into
mutonby:mainfrom
SecretivePie495:feat/captions-optin-youtube-anon-first
Closed

SecretivePie495 wants to merge 5 commits into
mutonby:mainfrom
SecretivePie495:feat/captions-optin-youtube-anon-first

Conversation

@SecretivePie495

Copy link
Copy Markdown

feat(captions): ship clips without burned subtitles unless asked

  • Dashboard: opt-in checkbox in advanced options (persisted, always stated to /api/process)
  • AUTO_CAPTIONS defaults off; MCP process_video defaults captions=false
  • Bare rerender/reframe no longer re-burn a layer the caller never asked for
  • add_subtitles stays the way to caption a finished clip

fix(youtube): go out anonymously first, cookies only as the last try

  • Every download + probe attempt leaves without the account cookiejar (9-sep prod: cookies -> UNPLAYABLE on every client for a share of videos; anonymous on the same static -> 1080p)
  • One trailing authed attempt on a free route for age-gated/private content and the static-IP bot-check bursts cookies actually fix
  • DIRECT_FIRST no longer requires a cookie jar
  • Dockerfile: NodeSource Node 22 (bgutil script-node PO provider needs >=22)

SecretivePie495 and others added 5 commits September 14, 2026 19:13
Users can now drag the hook overlay to any point on the frame instead
of only top/center/bottom. Threaded x_pct/y_pct through the ffmpeg
overlay path (hooks.py, /api/hook) and both Remotion HookOverlay copies
(client preview + render-service) so drag position, live preview, and
the final burned video all agree.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Fits the source's native 16:9 frame into a 1080x1920 canvas with
black bars top/bottom instead of cropping, for creators who want
Shorts/Reels/TikTok delivery without losing any of the shot.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…choice

deb.debian.org drops the connection mid-batch on the deploy VM, failing
image builds; retry once with --fix-missing. Also remember the last
picked output format (vertical/square/horizontal/Boxed) in localStorage
like the other upload preferences.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Captions move from always-on to opt-in on every surface: the dashboard
sends an explicit captions flag (checkbox in advanced options, remembered
in localStorage), AUTO_CAPTIONS defaults off in main.py, and the MCP
process_video tool defaults captions=false. Bare rerender/reframe calls no
longer re-burn a layer the caller never asked for; add_subtitles stays the
way to caption a finished clip.
Every download and probe attempt now leaves without the account cookiejar:
with YOUTUBE_COOKIES attached YouTube answers UNPLAYABLE for every client
on a share of videos (prod, 9-sep: cookies -> unavailable, anonymous on the
same static -> 1080p), and the PO-token provider serves the HD path without
them. A single authed attempt rides at the end of the chain, on a free
route, for age-gated/private content and the static-IP bot-check bursts
the cookies actually fix. DIRECT_FIRST no longer requires a cookie jar.
Dockerfile: NodeSource Node 22 — bgutil's script-node PO provider needs
>=22, Debian's apt node is 20.
@SecretivePie495

Copy link
Copy Markdown
Author

Closing: landed via my fork's own flow instead (no write access to upstream).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant