# torttube Kodi addon for YouTube via [RustyPipe](https://codeberg.org/ThetaDev/rustypipe) extraction + [SponsorBlock](https://sponsor.ajay.app/) segment skipping. Replaces the dead `plugin.video.youtube` on LibreELEC RPi TVs after Google required account-linking for the upstream addon. ## Architecture ``` Kodi (LibreELEC, RPi) └── plugin.video.torttube [Python addon — UI, browse, settings] └── torttube-sidecar [Rust binary — Innertube extraction, SponsorBlock fetch, JSON-over-stdio] ├── rustypipe [YouTube Innertube client + sig decode] └── sponsorblock [REST API client, SHA-256 prefix lookup] ``` Kodi addons are Python — the engine layer (n-param sig decoding, Innertube, SponsorBlock hashing) lives in a Rust sidecar so we get a single maintained extraction surface and clean aarch64/armv7 cross-compiles. ## Status M0 scaffold. Nothing playable yet — see [MILESTONES.md](MILESTONES.md). ## Upstream contributions NewPipeExtractor (Java) is the canonical reference for Innertube behaviour. When we hit a corner case RustyPipe doesn't cover we look at NPE for the fix, then either port it to RustyPipe (Rust PR) or fix NPE directly (Java PR). Either way upstream lands a real improvement. Issues we're watching: - [NPE #1339](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1339) — n-parameter deobfuscation - [NPE #1444](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1444) — distinguish unavailable vs unextractable - [NPE #1360](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1360) — refactor link handlers (help wanted) - [NPE #1357](https://github.com/TeamNewPipe/NewPipeExtractor/issues/1357) — JDoc checks in PR pipeline (good first issue) ## License GPL-3.0-or-later. Matches RustyPipe and NewPipeExtractor.