Sidecar Playlist op via rustypipe playlist(). Returns playlist metadata
block (id, name, channel, video_count) + items array. Verified live
against LTT's 'Consumer Advocacy' (PL8mG-RkN2uTzwoF72GqeqAJMI-N7scqtI):
returns the single video with full metadata.
Addon ?action=playlist&id=PL... lists items via _add_video_items reuse.
Verified via Files.GetDirectory JSON-RPC.
resources/settings.xml gains a 'dash_enabled' toggle (boolean, default
off). main.py checks ADDON.getSettingBool('dash_enabled') OR the
TORTTUBE_DASH env fallback before attempting the DASH path. Toggle via
Kodi Settings → Add-on settings → torttube, OR via
Addons.SetSettings JSON-RPC.
docs/upstream.md: filed a 'watching' entry for rustypipe PR #77
(Schmiddiii's late-May YouTube parsing fixes) with our independent
test data — player(), search(), and channel_videos() all still work
against current YouTube on 0.11.4, suggesting the PR fixes code paths
torttube doesn't yet exercise. Endorsement comment pending: gated on
creating a Sulkta-Coop codeberg account.
Observation from kodi.log: plugin.video.youtube successfully parsed a
DASH MPD with 26 streams via inputstream.adaptive on this same Pi —
proves DASH is solvable on our setup, just need to match the URL
pattern they use. M7 stabilization carrying forward.
Addon version 0.0.9.
3.2 KiB
3.2 KiB
Upstream contributions log
One row per PR/issue we file. Outcomes recorded honestly — merged, closed, abandoned, whatever happened.
Active
(none yet — opens with M1 development)
Filed
| Date | Project | PR/Issue | Title | Status | Outcome |
|---|---|---|---|---|---|
| none yet |
Investigation notes (not yet a PR — to be evaluated)
- inputstream.adaptive —
file://not supported by libcurl downloader (kodi addon, xbmc/inputstream.adaptive on github) Hit during torttube M7 DASH work 2026-05-23. Loading an MPD from a local filesystem path viafile:///storage/.kodi/temp/torttube/<id>.mpdfails withCURLOpen returned an error, download failed. Common workaround is a localhost HTTP server (plugin.video.youtube does this). Worth filing an enhancement request to either acceptfile://or document the recommended pattern. - Kodi — "Logic error due to two concurrent busydialogs" fatal
Reproduced during rapid back-to-back
Player.Opencalls while a previous play's BusyDialog was still dismissing. Log message itself says "this is a known issue", but the app HARD-exits rather than silently dropping one of the dialogs. Look up the upstream tracker before filing.
Watching (not ours, but relevant to torttube)
| Project | PR/Issue | Title | Why we care |
|---|---|---|---|
| rustypipe | PR #77 | "Some fixes" (Schmiddiii) | Targeted fixes for YouTube changes ~2026-05-21: video metadata parsing (channel-tag removal) + duration parsing (thumbnail overlay field renames). +15/-11 across 2 files. Stalled in CI-needs-approval. We've independently verified rustypipe-0.11.4 (which predates this PR) still works for player(), search(), and channel_videos() against current YouTube as of 2026-05-23 — Rick Astley video, LTT search returning 19 results, LTT channel browse returning 30 videos. Suggests the breaks PR #77 targets are in code paths we don't exercise. TODO: comment on the PR with this test data + offer to mirror to GitHub if codeberg CI stays blocked. Gated on creating a Sulkta-Coop codeberg account. |
| NPE | #1339 | n-parameter deobfuscation broken | Core to playback. Fix here = fix in our Tier-1. |
| NPE | #1444 | Distinguish unavailable vs unextractable | Clean typed-error PR target. |
| NPE | #1360 | Refactor link handlers | "help wanted" label. |
| NPE | #1357 | JDoc checks in PR pipeline | "good first issue" — smallest credible first PR. |
Posture
- Every sidecar bug we trace ends with one question: is the root cause in rustypipe / NPE / yt-dlp? If yes, fix it there first; pull the fix into our sidecar via dep bump or backport.
- We are not pretending to be on the rustypipe / NPE / yt-dlp maintainer level. We're a downstream consumer that does its share.
- A merged PR > a forked patch. A fork is the last resort, not the first move.