#player #m3u #m3u8 #iptv

bin+lib iptvrs

Play IPTV playlists using preferred local player

4 releases (1 stable)

1.0.0 Apr 8, 2024
0.2.2 Feb 19, 2024
0.2.0 Dec 4, 2023
0.1.0 Dec 4, 2023

#439 in Database interfaces

MIT license

384 lines


build release

Playlist parser and search support for m3u4u playlists locally!

What does this do?

  • Gets your m3u4u playlists.
  • Stores the playlists locally in a sqlite database.
  • Allows searching for channels (and playlists).
  • Supports playing a channel with your choice of local player.


You can find pre-built release for your system here. Alternatively you can install using cargo install iptvrs



  • Clone this repo:
$ git clone https://github.com/vihu/iptvrs.git
  • Create the config directory:
$ mkdir -p $HOME/.config/iptvrs
  • Copy settings:
$ cp settings.template.toml $HOME/.config/iptvrs/settings.toml

Edit the settings.toml as necessary (it is commented for reference).


In the repo root folder:

$ cargo build --release

Optional (but recommended), copy the binary to somewhere in your path:

$ cp ./target/release/iptvrs ~/.bin


The first thing you'd want to do is "hydrate" the database from your configured playlist. Run this once in a while to fetch and rehydrate database as necessary (I recommend once per day). Feel free to set a cron job to do this.

$ iptvrs hydrate

You can now search for channels in your playlist:

$ iptvrs search "<channel name>"

Assuming you've set a local player in your settings.toml, simply run:

$ iptvrs play <channel_index_integer>


The iptvrs CLI is basically as follows:


Usage: iptvrs [OPTIONS] <COMMAND>

  hydrate  Hydrate the database with the contents of playlist
  search   Search the database for a channel
  play     Play a channel using the configured player
  list     List all channels in the database
  help     Print this message or the help of the given subcommand(s)

  -c <CONFIG>
  -h, --help       Print help
  -V, --version    Print version


~1M SLoC