main.py now handles the standard Kodi plugin-URL routing: plugin://plugin.video.torttube/?action=play&id=<yt-id> plugin://plugin.video.torttube/?action=play&url=<full-url> Either form calls the sidecar resolve op, picks a stream URL from the response (rustypipe video_stream preferred, yt-dlp combined fallback), and hands it to Kodi via xbmcplugin.setResolvedUrl. URL parser accepts watch?v=, youtu.be/, /shorts/, /embed/, /live/, and bare 11-char IDs. setResolvedUrl flags inputstream.adaptive for .mpd and .m3u8 manifests so DASH/HLS streams play with the right demuxer. This makes 'share to TV' work over Kodi's existing JSON-RPC API on :8080 — Player.Open with a plugin URL is all the remote client needs. No new server, no app — Kore / Yatse / curl / HA all already work. docs/remote-control.md captures the curl recipe + Android share-target plan for the eventual companion app.
74 lines
2 KiB
Markdown
74 lines
2 KiB
Markdown
# Remote control — sending a YouTube URL to Kodi
|
|
|
|
Kodi exposes a JSON-RPC HTTP endpoint that any client on the LAN can hit
|
|
to start playback. torttube wires up the `play` action so this works
|
|
out of the box once the addon is installed.
|
|
|
|
## Endpoint
|
|
|
|
```
|
|
POST http://<rpi-host>:8080/jsonrpc
|
|
Authorization: Basic base64(kodi:<password>)
|
|
Content-Type: application/json
|
|
```
|
|
|
|
Sulkta defaults (per REFERENCE.md): `http://192.168.0.158:8080`, user
|
|
`kodi`, password `pineapple`.
|
|
|
|
## Play by YouTube ID
|
|
|
|
```bash
|
|
curl -u ***REMOVED*** -H "Content-Type: application/json" \
|
|
-X POST http://192.168.0.158:8080/jsonrpc -d '{
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"method": "Player.Open",
|
|
"params": {
|
|
"item": {
|
|
"file": "plugin://plugin.video.torttube/?action=play&id=dQw4w9WgXcQ"
|
|
}
|
|
}
|
|
}'
|
|
```
|
|
|
|
## Play by full URL
|
|
|
|
```bash
|
|
curl -u ***REMOVED*** -H "Content-Type: application/json" \
|
|
-X POST http://192.168.0.158:8080/jsonrpc -d '{
|
|
"jsonrpc": "2.0",
|
|
"id": 1,
|
|
"method": "Player.Open",
|
|
"params": {
|
|
"item": {
|
|
"file": "plugin://plugin.video.torttube/?action=play&url=https%3A//www.youtube.com/watch%3Fv%3DdQw4w9WgXcQ"
|
|
}
|
|
}
|
|
}'
|
|
```
|
|
|
|
The addon's `_extract_id()` accepts any of:
|
|
- bare 11-char ID
|
|
- `https://youtu.be/<id>`
|
|
- `https://www.youtube.com/watch?v=<id>`
|
|
- `https://www.youtube.com/shorts/<id>`
|
|
- `https://www.youtube.com/embed/<id>`
|
|
- `https://www.youtube.com/live/<id>`
|
|
|
|
## Android share-target wiring (later)
|
|
|
|
Future companion app (or HA automation) takes a YouTube URL from the
|
|
Android share sheet and posts it to whichever TV is selected. Until
|
|
that lands, any HTTP-capable client works (Kore, Yatse, curl, an HA
|
|
script, a phone shortcut, etc.).
|
|
|
|
## Common Kodi JSON-RPC ops you'll want
|
|
|
|
- `Player.Open` — start playback
|
|
- `Player.Stop` — stop
|
|
- `Player.PlayPause` — toggle
|
|
- `Player.Seek` — jump to position
|
|
- `Input.ShowOSD` — bring up the OSD
|
|
- `GUI.ShowNotification` — toast a message
|
|
|
|
Full docs: https://kodi.wiki/view/JSON-RPC_API
|