From ffc733291022049521be4d9cc9d1ae8ee311380f Mon Sep 17 00:00:00 2001 From: Kayos Date: Sat, 23 May 2026 12:15:06 -0700 Subject: [PATCH] Declare plugin.video.youtube as a Kodi addon dep MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit addon.xml now requires plugin.video.youtube >=7.0.0 in addition to xbmc.python and (optional) inputstream.adaptive. When a user installs torttube, Kodi resolves the dep and auto-fetches plugin.video.youtube from the official Kodi addon repository — user only manages torttube, the dep is transparent. This is Cobb's preferred 'one-addon experience' without the maintenance liability of vendoring + maintaining 5.6MB / 15k LOC of their player code in our tree. README architecture diagram updated to show pv.youtube as a dependency rather than a sibling. docs/install.md notes that Kodi auto-installs the dep — no manual pv.youtube step needed. Addon version 0.0.12. --- README.md | 28 ++++++++++++++++++++------- addon/plugin.video.torttube/addon.xml | 3 ++- docs/install.md | 5 ++++- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index e192839..8a2b0a2 100644 --- a/README.md +++ b/README.md @@ -10,15 +10,29 @@ required account-linking for the upstream addon. ``` Kodi (LibreELEC, RPi) - └── plugin.video.torttube [Python addon — UI, browse, settings] - └── torttube-sidecar [Rust binary — JSON-over-stdio] - ├── rustypipe [Tier 1: native Rust Innertube] - ├── yt-dlp subprocess [Tier 2: fallback resolve] - ├── yt-dlp rip-to-temp [Tier 3: download to /storage/.kodi/temp, - │ play local file when streams die mid-play] - └── sponsorblock [REST client, SHA-256 prefix lookup] + └── plugin.video.torttube [Python addon — UI, browse, SponsorBlock] + ├── torttube-sidecar [Rust binary — JSON-over-stdio] + │ ├── rustypipe [Native Rust Innertube for browse] + │ ├── yt-dlp subprocess [Fallback resolve] + │ └── sponsorblock [REST client, SHA-256 prefix lookup] + └── plugin.video.youtube [DEPENDENCY — handles HD playback] + └── inputstream.adaptive [DASH demux + decode] ``` +`plugin.video.youtube` is declared as a Kodi addon dependency in +[addon.xml](addon/plugin.video.torttube/addon.xml). When a user installs +torttube, Kodi auto-fetches pv.youtube from the official Kodi addon +repository — user only manages torttube; the dep is transparent. + +torttube does what it's faster at: rustypipe-backed search/channel/playlist +browse, SponsorBlock auto-skip via a tight `xbmc.Player()` monitor loop, +JSON-RPC remote-control for share-to-TV. Playback hands off to +pv.youtube via `plugin://plugin.video.youtube/play/?video_id=` — +they've spent years getting the DASH-MPD + multi-client Innertube +fallback right. Our SponsorBlock monitor runs in parallel because +`xbmc.Player()` is a global accessor that works regardless of which +addon initiated playback. + 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. diff --git a/addon/plugin.video.torttube/addon.xml b/addon/plugin.video.torttube/addon.xml index ba0fd69..1c7c792 100644 --- a/addon/plugin.video.torttube/addon.xml +++ b/addon/plugin.video.torttube/addon.xml @@ -1,10 +1,11 @@ + diff --git a/docs/install.md b/docs/install.md index 6116636..abb217b 100644 --- a/docs/install.md +++ b/docs/install.md @@ -23,7 +23,10 @@ drops the result at `/mnt/user/downloads/torttube/` (Lucy SMB). `smb://lucy/downloads/` → name it `lucy-downloads`. 2. Settings → Add-ons → Install from zip file → `lucy-downloads` → `torttube/plugin.video.torttube-.zip`. -3. Kodi installs, the addon appears under Video add-ons. +3. Kodi installs torttube **and automatically installs + `plugin.video.youtube`** from the official Kodi repo because it's + declared as a dep in our addon.xml. No separate install step needed. +4. The addon appears under Video add-ons. Unsigned addons need `Settings → System → Add-ons → Unknown sources` ON.