# LibVLC Desktop Skeleton

This folder contains a small desktop player skeleton that opens `.m3u` playlists
and plays channels through `libVLC`.

It is meant as the fallback path after rejecting the `vlc.js` experiment for this
project. `vlc.js` is a heavy experimental WASM port that patches and recompiles
VLC itself, while this app uses the native desktop VLC engine through `python-vlc`.

## What It Solves

- Removes browser mixed-content limits like `https page -> http stream`
- Opens local or remote `.m3u` playlists
- Shows a searchable channel list
- Embeds a native VLC-backed video area in the desktop window

## What It Does Not Solve

- Invalid or expired stream URLs
- `401` / `403` authorization failures from the upstream provider
- Provider-side IP or account restrictions

## Requirements

1. Python 3.10+
2. VLC or libVLC installed on the system
3. Python packages from `requirements.txt`

On Debian/Ubuntu-like systems, the runtime is typically installed with:

```bash
sudo apt install vlc
```

On macOS, install VLC.app normally and make sure `libVLC` is available to Python.

## Setup

Create a virtual environment and install the Python packages:

```bash
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```

## Run

The app auto-loads the first playlist it finds from:

- `../playlist-tumu.m3u`
- `../playlist.m3u`

You can also open a playlist manually from the UI.

```bash
python3 main.py
```

## Notes

- The app uses native VLC embedding, so desktop playback can handle plain `http://`
  streams that browsers would block as mixed content.
- If `libVLC` is missing, the app will start with an explanatory error message.
