Skip to content

ted-gould/xTeVe

Repository files navigation

xTeVe

xTeVe

M3U Proxy and EPG aggregator for Plex DVR and Emby Live TV

This is a fork of https://github.com/xteve-project/xTeVe, all credit goes to the original author

Documentation for setup and configuration is here.


Features

Files

  • Merge external M3U files
  • Merge external XMLTV files (EPG aggregation)
  • Automatic M3U and XMLTV update
  • M3U and XMLTV export

Channel management

  • Filtering streams
  • Teleguide timeshift
  • Channel mapping
  • Channel order
  • Channel logos
  • Channel categories

Streaming

  • Buffer with HLS / M3U8 support
  • Re-streaming
  • Stream Reconnection
  • Number of tuners adjustable
  • Compatible with Plex / Emby EPG

WebDAV

xTeVe includes a read-only WebDAV server accessible at /dav/. This feature allows you to mount your M3U playlists as a file system, which is particularly useful for integrating VOD (Video On Demand) content into media centers like Plex or Emby.

Structure

The WebDAV file system is organized as follows:

/dav/<M3U Hash>/On Demand/<Group Title>/

Inside each group, content is further organized into:

  • Series: Series/<Series Name>/Season <N>/<Episode>
  • Individual: Individual/<Movie Name>

Note: WebDAV support is read-only.


Downloads

Get it from the Snap Store

Build from source code

Requirements

  • Go (1.24 or newer)
  • Node.js (which includes npm)

Dependencies

This project uses Go modules and NPM for dependency management.

  • Go dependencies are listed in the go.mod file and can be downloaded by running go mod tidy.
  • Node.js dependencies are listed in the package.json file and can be installed by running npm install.

Build

The following steps will create the xteve, xteve-inactive, and xteve-status binaries in a new bin/ directory.

  1. Clone the repository:

    git clone https://github.com/ted-gould/xTeVe.git
    cd xTeVe
  2. Install JavaScript dependencies:

    npm install
  3. Run the build command:

    make build

To enable this feature, go to Settings -> Streaming and check the Enable Stream Retry box. You can also configure the maximum number of retries and the delay between retries.


OpenTelemetry Tracing

xTeVe supports OpenTelemetry tracing, which allows you to send traces to an observability platform of your choice.

Configuration

The OpenTelemetry exporter can be configured using snap set:

Key Description Default
otel-exporter-type The type of exporter to use. Supported values are stdout, otlp (gRPC), and otlp-http (HTTP). stdout
otel-exporter-otlp-endpoint The endpoint to send traces to when using the otlp or otlp-http exporter.
otel-exporter-otlp-headers Headers to send with each trace when using the otlp exporter.

Example: Exporting to Axiom

To export traces to Axiom, you can use the following configuration:

sudo snap set xteve otel-exporter-type="otlp"
sudo snap set xteve otel-exporter-otlp-endpoint="https://api.axiom.co"
sudo snap set xteve otel-exporter-otlp-headers="Authorization=Bearer <YOUR_AXIOM_API_TOKEN>,x-axiom-dataset=<YOUR_DATASET_NAME>"

About

M3U Proxy for Plex DVR and Emby Live TV

Resources

License

Stars

Watchers

Forks

Contributors 16