tellytv / telly

An IPTV proxy
MIT License
769 stars 107 forks source link

Parsing Error when using Channels DVR XMLTV #283

Open mikeregister opened 3 years ago

mikeregister commented 3 years ago

**telly release with the issue:1.1.0.8

Last working telly release (if known):

**Operating environment (Docker/Windows/Linux/QNAP, etc.):Same issue on Windows 10 and Synology NAS (Docker)

Description of problem:

Channels DVR recently added the ability to export XMLTV from their guide provider and also the ability to add custom m3u/xml lists in to their system. A combined and/or individual m3u/XMLTV can be pulled from the source(s) in Channels DVR. When using the Channels DVR m3u/XMLTV file I am getting a parsing error with their XMLTV URL. If I input their XMLTV in xTeVe and then use the xTeVe URL within Telly it works fine. Possible issue is that Telly is assuming "channel" is an integer. Provided examples of the m3u/XMLTV at the bottom under "Additional Information".

Contents of telly.config.toml [if you're using a version above 1.1]:

Note on running multiple instances of telly

There are three things that make up a "key" for a given Telly Virtual Tuner:

Device-ID [required], Device-UUID [optional], and port [required]

When you configure your additional telly instances, change:

the Device-ID [above] AND

the Device-UUID [above, if you're entering one] AND

the port [below in the "Web" section]

THIS SECTION IS REQUIRED

[IPTV] Streams = 1 # number of simultaneous streams that telly virtual tuner will provide

This is often 1, but is set by your iptv provider

Starting-Channel = 10000 # When telly assigns channel numbers it will start here XMLTV-Channels = true # if true, any channel numbers specified in your M3U file will be used.

FFMpeg = true # if this is uncommented, streams are buffered through ffmpeg;

                        # ffmpeg must be installed and on your $PATH
                        # if you want to use this with Docker, be sure you use the correct docker image

if you DO NOT WANT TO USE FFMPEG leave this commented; DO NOT SET IT TO FALSE [Issue #185]

THIS SECTION IS REQUIRED

[Log] Level = "info" # Only log messages at or above the given level. [debug, info, warn, error, fatal] Requests = true # Log HTTP requests made to telly

THIS SECTION IS REQUIRED

[Web] Base-Address = "192.168.1.227:6077" # Set this to the IP address of the machine telly runs on AS SEEN BY PLEX

telly will be telling Plex to connect to URLs at this address.

                              # DO NOT REMOVE THE PORT
                              # Just change the 0.0.0.0 to your IP address.

Listen-Address = "0.0.0.0:6077" # this can stay as-is

THIS SECTION IS OPTIONAL ========================================================================

[SchedulesDirect] # If you have a Schedules Direct account, fill in details and then

                         # UNCOMMENT THIS SECTION

Username = "" # This is under construction; There is no provider

Password = "" # that works with it fully at this time

AT LEAST ONE SOURCE IS REQUIRED

COPY/PASTE THIS BLOCK TO ADD MORE SOURCES

THIS EXAMPLE WILL NOT WORK AS-IS

[[Source]] Name = "" # Name is optional and is used mostly for logging purposes Provider = "Custom" # DO NOT CHANGE THIS

"Custom" is telly's internal identifier for this 'Provider'

                        # If you change it to "SOMETHING ELSE", telly's reaction will be
                        # "I don't recognize a provider called 'SOMETHING ELSE'."

M3U = "http://192.168.1.238:8089/devices/ANY/channels.m3u?format=ts" # This can be either URL or fully-qualified path.

This needs to be an M3Uplus file

                        # IT CANNOT BE A STREAM ADDRESS
                        # IT CANNOT BE AN M3U THAT LINKS TO ANOTHER M3U

EPG = "http://192.168.1.238:8089/devices/ANY/guide/xmltv?duration=82400" # This can be either URL or fully-qualified path.

THE FOLLOWING KEYS ARE OPTIONAL IN THEORY, REQUIRED IN PRACTICE

Filter = "YOUR_FILTER_REGULAR_EXPRESSION"

                        # Telly is written in Go, and uses the Go regular expression system, 
                        # which is limited compared to other regular expression parsers.

FilterKey = "group-title" # Telly applies the regular expression to the contents of this key in the M3U.

FilterRaw = false # FilterRaw will run your regex on the entire line instead of just specific keys.

Sort = "group-title" # Sort will alphabetically sort your channels by the M3U key provided

END TELLY CONFIG


**Command line used to run telly [if applicable]:**
- REMEMBER TO DELETE ANY CREDENTIALS IN CONFIG FILES OR COMMAND LINES

C:\Users\Mike\Downloads\telly-1.1.0.8.windows-amd64>telly.exe time="2020-12-30T16:44:22-05:00" level=info msg="telly is preparing to go live (version=1.1.0.8, branch=dev, revision=96424a4719f33de9c1b66d8d2186e0452e45a234)" time="2020-12-30T16:44:22-05:00" level=info msg="Loading M3U from http://192.168.1.238:8089/devices/ANY/channels.m3u?format=ts" time="2020-12-30T16:44:22-05:00" level=info msg="Loading XMLTV from http://192.168.1.238:8089/devices/ANY/guide/xmltv?duration=82400" time="2020-12-30T16:44:23-05:00" level=error msg="Could not decode xmltv programme" error="strconv.ParseInt: parsing \"2.1\": invalid syntax" time="2020-12-30T16:44:23-05:00" level=error msg="error when parsing EPG" error="strconv.ParseInt: parsing \"2.1\": invalid syntax" time="2020-12-30T16:44:23-05:00" level=error msg="error when preparing provider" error="strconv.ParseInt: parsing \"2.1\": invalid syntax" time="2020-12-30T16:44:23-05:00" level=error msg="error when processing provider" error="strconv.ParseInt: parsing \"2.1\": invalid syntax" time="2020-12-30T16:44:23-05:00" level=info msg="telly is live and on the air!" time="2020-12-30T16:44:23-05:00" level=info msg="Broadcasting from http://192.168.1.227:6077/" time="2020-12-30T16:44:23-05:00" level=info msg="EPG URL: http://192.168.1.227:6077/epg.xml" time="2020-12-30T16:44:23-05:00" level=info msg="Lineup JSON: http://192.168.1.227:6077/lineup.json"


**Docker run command used to run telly [if applicable]:**
- REMEMBER TO DELETE ANY CREDENTIALS IN CONFIG FILES OR COMMAND LINES

**telly or docker log:**

**Additional information:**

M3U Example:

EXTM3U

EXTINF:-1 channel-id="2.1" tvg-chno="2.1" tvg-logo="https://tmsimg.fancybits.co/assets/s28708_ll_h3_ab.png" tvg-name="WMARDT" group-title="Favorites",ABC

http://192.168.1.238:8089/devices/ANY/channels/2.1/stream.mpg?format=ts

EXTINF:-1 channel-id="8.1" tvg-chno="8.1" tvg-logo="https://tmsimg.fancybits.co/assets/s28717_ll_h3_ac.png" tvg-name="WGALDT" group-title="Favorites",NBC

http://192.168.1.238:8089/devices/ANY/channels/8.1/stream.mpg?format=ts

XMLTV Example:

2.1 WMARDT ABC Dateline A Crack in Everything A woman's death is ruled a suicide, but when a new investigation begins, police suspect murder. Episode Series Newsmagazine Mystery Crime 13159645 20190925 EP024874280258 S3E3 Natalie Morales Craig Melvin ```