Skip to content

Latest commit

 

History

History
124 lines (102 loc) · 3.57 KB

File metadata and controls

124 lines (102 loc) · 3.57 KB

TODO

Phase 1: MVP (Client-side skip) — In Progress

Completed

  • Project structure
  • Package.json with PeerTube metadata
  • Database tables
  • YouTube import hook
  • YouTube ID extraction
  • SponsorBlock API integration
  • Segment caching in DB
  • Client-side skip logic
  • Progress bar markers
  • Skip notifications
  • REST API for segment retrieval
  • Plugin settings
  • Translations (EN, FR)
  • CSS for markers
  • Development documentation

To Do

High Priority

  • Test the plugin on a real PeerTube instance
  • Fix bugs identified during testing
  • Add missing error handling
  • Validate Video.js compatibility
  • Test with different segment categories

Medium Priority

  • Add a button to temporarily disable skipping
  • Allow reporting a bad segment
  • Statistics: total time saved
  • Playlist support

Low Priority

  • Unit tests
  • Integration tests
  • Linter (ESLint configuration)
  • CI/CD (GitHub Actions)

Phase 2: Admin Dashboard & Sync

Admin Interface

  • Admin page to view all mappings
  • Button to force synchronization
  • Dashboard with statistics
  • Color-coded category markers on progress bar
  • Search videos by YouTube ID
  • Plugin activity logs

Migration and Sync

  • Scan existing imports via POST /scan
  • Periodic sync task (configurable interval)
  • Detect stale segments
  • Webhook if SponsorBlock supports it
  • Import/export mappings

Advanced Features

  • Channel whitelist/blacklist
  • Per-user settings
  • "Mute" segment support (instead of skip)
  • Preview before skip (skip button)
  • Skipped segment history

Phase 3: Permanent Removal

Feasibility Analysis

  • Verify video file access from a plugin
  • Test FFmpeg from the plugin context
  • Validate required permissions
  • Measure performance impact on the server

Implementation

  • Queue processing worker (main.js — 30s polling)
  • FFmpeg cut and concat integration (server/ffmpeg.js-c copy)
  • Multi-resolution support (web-videos + HLS)
  • HLS playlist support
  • Priority queue (plugin_sponsorblock_processing_queue)
  • Automatic retry (3 attempts max, FOR UPDATE SKIP LOCKED)
  • API routes: POST /process/:videoUuid and POST /process-all
  • Configurable storage_path setting
  • Translation of messages (EN, FR)
  • Automatic backup system
  • Rollback on error
  • S3 storage support

Security and Stability

  • Optimistic job locking (no double processing)
  • Output file validation (non-empty)
  • Temporary directory cleanup (try/finally)
  • Video integrity check (checksum)
  • CPU load limiting
  • Monitoring and alerts

Known Bugs

  • None so far (plugin not tested in production)

Future Ideas

  • Support for other platforms (Vimeo, Dailymotion)
  • Submit new segments to SponsorBlock
  • AI-generated segments locally
  • Integration with other PeerTube plugins
  • API for mobile clients
  • Companion browser extension
  • "Preview" mode: show 2s of the segment before skipping

Open Questions

  • Performance: Impact of skipping on mobile battery?
  • UX: Should there be a "stop skipping this segment type" button?
  • Legal: Copyright issues with permanent removal?
  • Technical: Use PeerTube's Bull job system?
  • Community: Host our own SponsorBlock server?

Notes

  • Priority: Ship a stable MVP before adding features
  • Keep the code simple and maintainable
  • Document all technical decisions
  • Test on multiple PeerTube instances