xiaodoudou / PlexIPTV

This app simulate a DVR device for Plex by providing a layer to any IPTV provider (that provide a m3u8 playlist)
Apache License 2.0
193 stars 24 forks source link

PlexIPTV

This app simulate a DVR device for Plex by providing a layer to any IPTV provider (that provide a m3u8 playlist).

I created that app for several reaons:


Note that currently it seems only MPEG2 TS stream playlist are supported (which is cover by any xtream code providers).

If your provider is doing nested playlist, it will result an error message from Plex saying "Unable to tune channel".

What it does?

It does:

Downloads

You can download the last version on the release page

OS

This app has been tested on windows, however it should work for all systems. If any isuse encounter, feel freel to create an issue.

Please provide me the full logs of what is happenning by doing on:

Settings

{
  "m3u8": {
    "local": "iptv.m3u8", // Locale file
    "remote": "https://domain.fqd/blablabla.m3u8" // Remote URL of the playlist
  },
  "serverPort": 1234, // Server port
  "serverName": "PlexIPTV", // Name of the server
  "tunerCount": 1, // How many simultaneous feed your IPTV provider support
  "removeIfNotFoundOnFilter": true, // Will remove channel from playlist that aren't present on the filter list
  "doNotPullRemotePlaylist": false, // Will not pul online playlist
  "filter": [ // Filter list
    {
      "name": ">>> US News", // Regex of the name to match on the playlist
      "channel": "1" // Channel that will use for the found matching channel name
    },
    {
      "name": ">>> World News",
      "remame": "World News", // Will rename the channel to "World News"
      "channel": "2"
    },
    {
      "meta": "I254\\.59337\\.schedulesdirect\\.org", // Will map channel if the meta tag contain I254.59337.schedulesdirect.org
      "channel": "3"
    },
    {
      "name": ">>> Cartoons", // Will map channel if name contains ">>> Cartoons" and ...
      "meta": "I251\\.59331\\.schedulesdirect\\.org", // if the meta tag contain I251.59331.schedulesdirect.org
      "channel": "4"
    },
  ]
}

Docker

You can pull the image by doing docker pull xiaodoudoufr/plexiptv, then you can run it by docker run -p 12345:1234 --volume [your config path]:/opt/PlexIPTV/config -d xiaodoudoufr/plexiptv

TODO:

How to build yourself the app?

After have run yarn, if you are on windows you can use: npm run build which will trigger all builds (windows, macos, linux, docker). If you want build a specific target you can do for example npm run build:win:x64.

Changelogs

current work in progress:
 - online playlist merging
 - investigating why buffer is failing on some specific IPTV vendor

1.0.4:  
 - fix settings / template merging
 - add rename feature
 - add meta filtering

1.0.3:
 - allow config file path to be changed `--settings [path/file.json`
 - allow log path to be change through param `--logdir [path]`
 - add helper if app is called with `--help`
 - allow docker container to mount volume againts `/opt/PlexIPTV/config` to preserve config

1.0.2:
 - fix bug related to channel number was given as a int and not a string (require by plex)

1.0.1:
 - add option to avoid pulling online playlist
 - add a docker container

1.0.0:
 - first release