# Jellyfin HTPC Client & YouTube Receiver Een snelle, lichtgewicht HTPC client ontworpen voor Linux mini-PC's (x86_64). Integreert met **Jellyfin** voor het streamen van films/series en biedt volledige ondersteuning voor **Yatse** en het delen van **YouTube** video's rechtstreeks vanuit de YouTube mobiele app. --- ## 🌟 Belangrijkste Functies 1. **Jellyfin Remote Player**: - Registreert zich via WebSocket direct bij de Jellyfin server (`https://thuus.bnhmeijer.nl/jellyfin` of lokaal IP). - Verschijnt automatisch als "Cast / Remote Speler" in de Jellyfin app en Yatse. - Stuurt realtime voortgang, speelduur en hervatting terug naar Jellyfin. 2. **Yatse & Kodi Remote Ondersteuning**: - Bevat een geëmuleerde **Kodi JSON-RPC server** (standaard HTTP poort `8080` & WebSocket `9090`). - Yatse kan de HTPC toevoegen als Kodi mediacenter voor volledige controle: Play/Pause, Seek, Volume, Mute, OSD notificaties. 3. **YouTube Delen vanuit de YouTube App**: - **Via Yatse**: Tik in de YouTube app op *Delen* $\rightarrow$ *Yatse* $\rightarrow$ de video speelt direct af op het grote scherm! - **Via Web Interface / API**: Open `http://:8097/` op je telefoon om een link te plakken of de speler te bedienen. - Automatische metadata-extractie (titel, uploader, speelduur) en stream extractie via `yt-dlp`. 4. **Hardware-versnelde MPV Video Engine**: - Gestuurd via MPV IPC Unix socket. - Automatische GPU decodering (`--hwdec=auto` voor Intel QuickSync / AMD VA-API / Nvidia NVDEC). - Minimale geheugenvoetprint (< 40MB RAM). --- ## 🏗️ Architectuur ```mermaid flowchart TD subgraph Mobile ["Telefoon / Tablet"] YT[YouTube App] -->|Delen naar Yatse| Yatse[Yatse Remote App] JFApp[Jellyfin Mobiel] -->|Cast naar HTPC| JFSrv[Jellyfin Server] Browser[Mobiele Browser] -->|Plak YouTube Link| WebAPI[Web Remote :8097] end subgraph HTPC ["HTPC (x86_64 Linux)"] subgraph Remotes KodiRPC["Kodi JSON-RPC Server (:8080 / :9090)"] WebAPI end subgraph Core ["jellyfin-htpc-client (Python 3.12)"] JFClient["Jellyfin Client Session (WebSocket)"] YTParser["YouTube Parser & yt-dlp"] MPVControl["MPV IPC Controller"] end subgraph Playback ["Media Speler"] MPV["MPV Video Player (GPU / VA-API)"] end end Yatse -->|JSON-RPC| KodiRPC JFSrv -->|WebSocket Remote Control| JFClient KodiRPC --> MPVControl WebAPI --> MPVControl JFClient --> MPVControl YTParser --> MPVControl MPVControl --> MPV ``` --- ## 📦 Installatie op de HTPC ### 1. Snel installeren via installer script Voer op de HTPC het installatiescript uit: ```bash git clone https://git.bnhmeijer.nl/bart/jellyfin-client.git cd jellyfin-client chmod +x install.sh sudo ./install.sh ``` Het script installeert automatisch de benodigde pakketten (`mpv`, `yt-dlp`, `python3-venv`), maakt `/opt/jellyfin-client` aan met een virtuele omgeving en installeert de systemd service. --- ## ⚙️ Configuratie Bewerk `/etc/jellyfin-client/config.yaml` (of `config.yaml` in de projectmap): ```yaml jellyfin: server_url: "https://thuus.bnhmeijer.nl/jellyfin" # of lokaal: http://10.2.0.4:8096/jellyfin username: "bart" password: "jouw_wachtwoord" client_name: "Jellyfin HTPC Client" device_name: "HTPC Woonkamer" device_id: "htpc-woonkamer-01" player: mpv_path: "mpv" ipc_socket: "/tmp/mpv-jellyfin.sock" hwdec: "auto" # 'auto', 'vaapi' (Intel/AMD) of 'nvdec' (Nvidia) vo: "gpu" fullscreen: true audio_device: "auto" kodi_rpc: enabled: true http_port: 8080 # Poort voor Yatse Kodi-verbinding ws_port: 9090 web_api: enabled: true host: "0.0.0.0" port: 8097 # Web Remote UI & REST API ``` --- ## 📱 Yatse Verbinden & Gebruiken ### Optie 1: Als Kodi Speler (Beste ervaring voor YouTube delen) 1. Open **Yatse** op je Android telefoon. 2. Ga naar **Instellingen** $\rightarrow$ **Hosts beheren** $\rightarrow$ **+** (Host toevoegen). 3. Kies **Kodi**. 4. Vul het IP-adres van je HTPC in en poort `8080`. 5. Yatse detecteert direct de speler. 6. **YouTube afspelen**: Ga in de officiële YouTube app naar een video $\rightarrow$ druk op **Delen** $\rightarrow$ selecteer **Yatse** $\rightarrow$ de video start direct op je HTPC! ### Optie 2: Als Jellyfin Speler 1. Voeg in Yatse je **Jellyfin server** toe (`https://thuus.bnhmeijer.nl/jellyfin`). 2. Tik rechtsboven op het Cast-icoon. 3. Selecteer **HTPC Woonkamer** als afspeeldoel. 4. Elke film of serie die je nu kiest in Yatse speelt synchroon af via MPV op de HTPC. --- ## 🌐 Web Remote & Directe API Open op elk apparaat in je netwerk de browser: ``` http://:8097/ ``` Hier kun je een YouTube URL invoeren, op "Play on TV" drukken en speelbediening uitvoeren (Play/Pause, -15s/+15s, Volume). ### REST Endpoints - `POST /api/play` - `{"url": "https://www.youtube.com/watch?v=..."}` - `POST /api/playpause` - `POST /api/stop` - `POST /api/seek` - `{"seconds": 15}` - `POST /api/volume` - `{"volume": 80}` - `GET /api/status` --- ## 🛠️ Service Beheer ```bash # Service starten en automatisch inschakelen bij opstarten sudo systemctl enable --now jellyfin-client # Status en logs bekijken sudo systemctl status jellyfin-client sudo journalctl -u jellyfin-client -f ``` --- ## 🧪 Tests Uitvoeren ```bash .venv/bin/pytest -v ```