tellytv / telly

An IPTV proxy
MIT License
774 stars 107 forks source link

unable to get m3u file #289

Open martinorob opened 2 years ago

martinorob commented 2 years ago

Telly cannot find my m3u and xml file

Latest docker version of telly running on Ubuntu 20.04

cat /etc/telly/telly.config.toml


# THIS SECTION IS REQUIRED ########################################################################
[Discovery]                                    # most likely you won't need to change anything here
  Device-Auth = "telly123"                     # These settings are all related to how telly identifies
  Device-ID = "12345678"                       # itself to Plex.
  Device-UUID = ""
  Device-Firmware-Name = "hdhomeruntc_atsc"
  Device-Firmware-Version = "20150826"
  Device-Friendly-Name = "telly"
  Device-Manufacturer = "Silicondust"
  Device-Model-Number = "HDTC-2US"
  SSDP = true

# Note on running multiple instances of telly
# There are three things that make up a "key" for a given Telly Virtual DVR:
# 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 the telly virtual DVR will provide
                            # This is often 1, but is set by your iptv provider; for example, 
                            # Vaders provides 5
  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

# THIS SECTION IS REQUIRED ########################################################################
[Log]
  Level = "error"            # 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 = "10.0.0.6:6077"   # Set this to the IP address of the machine telly runs on
  Listen-Address = "0.0.0.0:6077" # this can stay as-is

# THIS SECTION IS NOT USEFUL ======================================================================
#[SchedulesDirect]           # If you have a Schedules Direct account, fill in details and then
                             # UNCOMMENT THIS SECTION
#  Username = ""             # This is under construction; no provider
#  Password = ""             # works with it at this time

# AT LEAST ONE SOURCE IS REQUIRED #################################################################
# NONE OF THESE EXAMPLES WORK AS-IS; IF YOU DON'T CHANGE IT, DELETE IT ############################
[[Source]]
  Name = ""                 # Name is optional and is used mostly for logging purposes
  Provider = "Custom"       # DO NOT CHANGE THIS IF YOU ARE ENTERING URLS OR FILE PATHS
                            # "Custom" is telly's internal identifier for this 'Provider'
                            # If you change it to "NAMEOFPROVIDER" telly's reaction will be
                            # "I don't recognize a provider called 'NAMEOFPROVIDER'."
  M3U = "/etc/telly/martino.m3u"  # These can be either URLs or fully-qualified paths.
  EPG = "/etc/telly/epg.xml"
  # THE FOLLOWING KEYS ARE OPTIONAL IN THEORY, REQUIRED IN PRACTICE
  Filter = "Sports|Premium Movies|United States.*|USA"
  FilterKey = "group-title" # FilterKey normally defaults to whatever the provider file says is best, 
                            # otherwise you must set this.
  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  ###############################################################################
docker run -d \                                                                                                    130 ⨯
  --name='telly' \
  --net='bridge' \
  -e TZ="Europe/Rome" \
  -p '6077:6077/tcp' \
  -v /etc/telly/telly.config.toml:/etc/telly/telly.config.toml \
  --restart unless-stopped \
  tellytv/telly:dev-ffmpeg

docker logs -f 919c9d63ca2f 1 ⨯

time="2022-09-09T16:10:47Z" level=error msg="unable to get m3u file" error="open /etc/telly/martino.m3u: no such file or directory"
time="2022-09-09T16:10:47Z" level=error msg="error when preparing provider" error="open /etc/telly/martino.m3u: no such file or directory"
time="2022-09-09T16:10:47Z" level=error msg="error when processing provider" error="open /etc/telly/martino.m3u: no such file or directory"

ls -al /etc/telly/

total 7384
drwxr-xr-x   2 root root    4096 Sep  9 18:10 .
drwxr-xr-x 143 root root   12288 Sep  9 18:00 ..
-rwxrwxrwx   1 root root 7530610 Sep  9 17:52 epg.xml
-rwxrwxrwx   1 root root    1468 Sep  9 17:51 martino.m3u
-rw-r--r--   1 root root    4139 Sep  9 18:10 telly.config.toml
stromvirvel commented 2 years ago

I have the same problem. It neither works when trying to build an URI, like prefixing it with file://.

One workaround is to put the m3u file into an empty folder and run a webserver, e.g. with python:

python3 -m http.server --bind localhost 5478

and then configure telly to download the m3u file from http://localhost:5478/martino.m3u. Dirty, but it works.

xtinct101 commented 2 years ago

I believe its because you have the file (telly.config.toml) mounted directly without also specifying the directory as a mount.

docker run -d \                                                                                                    130 ⨯
  --name='telly' \
  --net='bridge' \
  -e TZ="Europe/Rome" \
  -p '6077:6077/tcp' \
  -v /etc/telly/telly.config.toml:/etc/telly/telly.config.toml \
  -v /etc/telly:/etc/telly \
  --restart unless-stopped \
  tellytv/telly:dev-ffmpeg

You could always test this by docker exec the container and navigating to /etc/telly/