feat(youtube): skip sponsors in the TV interface#8

open5
feat/browser-extensions
feat/youtube-tv-sponsorblock
opened21d agobyAAlex
View on GitHubTwo-way sync enabledPR last imported 1d ago

Summary

  • add an optional original MIT MV3 companion for YouTube TV watch routes, informed by TizenTube's native-video/hash-route approach
  • request only sponsor/skip segments from the fixed SponsorBlock API using a four-character SHA256 hash bucket, without credentials, referrers, submissions or viewed-segment reports
  • follow route/video replacement, pause, seek and playback rate; stale responses, unloaded media, known ads and mismatched duration cannot seek

Stacking

feat/browser-extensions ← feat/youtube-tv-sponsorblock. Depends on #7 (optional loader) and #6 (mandatory profiles); merge after #1 → #2 → #3 → #4 → #5 → #6 → #7. Enable through the existing optional loader by mounting extensions/tv-sponsorblock read-only. This retains YouTube's TV interface and adds no Cast/DIAL/VPN endpoint or browser preview.

Verification

  • 11 focused tests cover the worker's source/URL/ID/segment policy and content-script request generations, timers, ad/duration gating, replaced videos, route cleanup and refused seeks
  • real Chromium 154 with unmodified companion and real SponsorBlock API: YouTube TV guest playback allowed two 15.041 s prerolls, then automatically sought to 869.757, 880.707 and 893.842 across three community sponsor segments
  • isolated HTTPS/native-video fixture verified pause/resume, ad gating and route-away cleanup; no production API overrides or injected segment data
  • npm test: final full stack: 163/163 on macOS and Fedora/Node 22; JavaScript syntax and git diff --check pass
  • direct Opus 5.5 High review on NB-LVLQYQ1F3D: no findings at e4c0e9237ea81fe4ef3afa18f6eff74ab8c4bab3

Limits and attribution

Only the sponsor category is implemented. Unknown/stale duration, live media and API failures leave playback alone. Undocumented TV-player changes or equal-duration ads can evade DOM/duration checks. SponsorBlock sees the server IP/hash bucket; hashing is not anonymity. The README credits SponsorBlock data under CC BY-NC-SA 4.0 and the pinned TizenTube source; no TizenTube code was copied. The live stream was left running.

Checks

1 successful
All checks passed
1c8476c

Added 3 commits

  • feat(youtube): stack TV sponsor skipping on extension loader3b3bd71
  • feat(youtube): skip sponsors in the TV interfacebb0aaa8
  • fix(browser): carry profile operations fixes into TV extension stacke4c0e92
Synced from GitHub

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7d3b056a-619d-40b8-ad53-4c809738c207

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Synced from GitHub
⚠️ Action not completed

Review rate limited.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Added 2 commits

  • chore(git): align PR #8 with squashed parent historyfb99824
  • Merge branch 'feat/browser-extensions' into feat/youtube-tv-sponsorblock1c8476c