M6 DONE — torttube ships, Rick Astley plays fullscreen on the Livingroom Pi

Live install verified end-to-end:
- SSH'd into 192.168.0.158 (LibreELEC, Kodi 20.3 Nexus, kernel aarch64
  / userspace armhf — that's why the static Rust sidecar runs but the
  PyInstaller yt-dlp binary couldn't)
- Dropped addon dir into /storage/.kodi/addons/
- systemctl restart kodi → Kodi rescans /storage/.kodi/addons/
- JSON-RPC Addons.SetAddonEnabled flipped enabled:false → true
- Player.Open with plugin URL → 7s yt-dlp resolve → VideoFullScreen.xml,
  fullscreen:true, currentwindow 12005, audio+video synced

Fixes that surfaced during the install:
- yt-dlp swap: PyInstaller aarch64 binary needs ld-linux-aarch64.so.1
  which LibreELEC doesn't ship. Switched to the universal Python zipapp
  (~3MB) which runs on /usr/bin/python3.11. build-addon-zip.sh updated.
- main.py now puts the addon's bin/ dir on PATH so the sidecar's
  Command::new('yt-dlp') call resolves to the bundled zipapp.
- Cosmetic fix: resolve.rs's classify_yt_dlp_error preserves the
  original error message (was downcasing it for keyword matching and
  then using the lowercased copy as the user-facing error).

Caveats logged for later:
- 360p ceiling (yt-dlp '-f best[ext=mp4]' picks itag 18; 720p
  progressive itag 22 is deprecated by YouTube; higher quality wants
  DASH manifest generation).
- ALSA sink: device 'sysdefault:CARD=vc4hdmi1' fails to open on this
  Pi but Kodi auto-falls-back to 'sysdefault' so audio works. Worth
  cleaning up in Kodi audio settings later.

MILESTONES + docs/install.md updated with the SSH + JSON-RPC alternate
install path.
This commit is contained in:
Kayos 2026-05-23 10:18:26 -07:00
parent 283693525c
commit 284fe5fde7
5 changed files with 72 additions and 40 deletions

View file

@ -39,9 +39,12 @@ ssh lucy "rm -rf $STAGE && mkdir -p $STAGE/plugin.video.torttube/bin"
ssh lucy "rsync -a $SRC/addon/plugin.video.torttube/ $STAGE/plugin.video.torttube/ --exclude bin"
ssh lucy "cp $TARGET_DIR/aarch64-unknown-linux-musl/release/torttube-sidecar $STAGE/plugin.video.torttube/bin/"
echo ">>> Fetch yt-dlp aarch64 release binary"
echo ">>> Fetch yt-dlp universal Python zipapp"
# Pure-Python zipapp runs on any Python 3.9+ — works around LibreELEC's
# armhf userspace (where yt-dlp's dynamic aarch64 binary can't find
# ld-linux-aarch64.so.1). Kodi 20 ships Python 3.11.
ssh lucy "curl -sSL -o $STAGE/plugin.video.torttube/bin/yt-dlp \
https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux_aarch64"
https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp"
ssh lucy "chmod +x $STAGE/plugin.video.torttube/bin/*"
echo ">>> Build addon.zip"