Declare plugin.video.youtube as a Kodi addon dep
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.
This commit is contained in:
parent
365badd502
commit
ffc7332910
3 changed files with 27 additions and 9 deletions
28
README.md
28
README.md
|
|
@ -10,15 +10,29 @@ required account-linking for the upstream addon.
|
||||||
|
|
||||||
```
|
```
|
||||||
Kodi (LibreELEC, RPi)
|
Kodi (LibreELEC, RPi)
|
||||||
└── plugin.video.torttube [Python addon — UI, browse, settings]
|
└── plugin.video.torttube [Python addon — UI, browse, SponsorBlock]
|
||||||
└── torttube-sidecar [Rust binary — JSON-over-stdio]
|
├── torttube-sidecar [Rust binary — JSON-over-stdio]
|
||||||
├── rustypipe [Tier 1: native Rust Innertube]
|
│ ├── rustypipe [Native Rust Innertube for browse]
|
||||||
├── yt-dlp subprocess [Tier 2: fallback resolve]
|
│ ├── yt-dlp subprocess [Fallback resolve]
|
||||||
├── yt-dlp rip-to-temp [Tier 3: download to /storage/.kodi/temp,
|
│ └── sponsorblock [REST client, SHA-256 prefix lookup]
|
||||||
│ play local file when streams die mid-play]
|
└── plugin.video.youtube [DEPENDENCY — handles HD playback]
|
||||||
└── sponsorblock [REST client, SHA-256 prefix lookup]
|
└── 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=<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,
|
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
|
SponsorBlock hashing) lives in a Rust sidecar so we get a single maintained
|
||||||
extraction surface and clean aarch64/armv7 cross-compiles.
|
extraction surface and clean aarch64/armv7 cross-compiles.
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="plugin.video.torttube"
|
<addon id="plugin.video.torttube"
|
||||||
name="torttube"
|
name="torttube"
|
||||||
version="0.0.11"
|
version="0.0.12"
|
||||||
provider-name="Sulkta-Coop">
|
provider-name="Sulkta-Coop">
|
||||||
<requires>
|
<requires>
|
||||||
<import addon="xbmc.python" version="3.0.0"/>
|
<import addon="xbmc.python" version="3.0.0"/>
|
||||||
|
<import addon="plugin.video.youtube" version="7.0.0"/>
|
||||||
<import addon="inputstream.adaptive" version="2.0.0" optional="true"/>
|
<import addon="inputstream.adaptive" version="2.0.0" optional="true"/>
|
||||||
</requires>
|
</requires>
|
||||||
<extension point="xbmc.python.pluginsource" library="main.py">
|
<extension point="xbmc.python.pluginsource" library="main.py">
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,10 @@ drops the result at `/mnt/user/downloads/torttube/` (Lucy SMB).
|
||||||
`smb://lucy/downloads/` → name it `lucy-downloads`.
|
`smb://lucy/downloads/` → name it `lucy-downloads`.
|
||||||
2. Settings → Add-ons → Install from zip file → `lucy-downloads` →
|
2. Settings → Add-ons → Install from zip file → `lucy-downloads` →
|
||||||
`torttube/plugin.video.torttube-<version>.zip`.
|
`torttube/plugin.video.torttube-<version>.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.
|
Unsigned addons need `Settings → System → Add-ons → Unknown sources` ON.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue