I just tried Hallmark Channel and Hallmark Mystery. Both came up when using Apple TV and the Chrome browser.
Check the Frndly TV container log
Also the one other thing about this project is that it is hard to tell which version you are running. I know it was updated 5 months ago to include West. I guess you would have to go by date of how long ago the project was installed/updated last too. Maybe on an old stale version?
I have a few containers like that.
I compare the image creation date/time (view in Portainer)
with the date/time from the image repository matthuisman/frndlytv-for-channels - Docker Image

I can provide logs but it throws the error regarding authorization. Does it require not being on the initial fee days or some other restriction.
Trying to use the the urls in two atempt to add custom chanels. First has no XML, the second has borth guide url and epg url. However neither works, throws error and cant be added.
I changed frdly paasword to recheck. Emaol Name and password work fine longing into frndly on web and in their app.
The only thing I can think is username is not the l9gin email??????
I have a year sub. Been using this for a long time. Was working the other day, but I am I have been seeing this message more on more even for items I play from the hard drive. this is when I tried to watch a live show:
I looked at my environment variable for username and I used my e-mail address. I would think the free 7 day trial should work.
Here is what I use for channels setup. But I bet you have to have a valid login in order to get anything to show.
If you are having the same error when playing from a recording then I don't think its frndly that is the actual issue. I know from the browser everything has to be transcoded and maybe its not fast enough to do so.
That's been going on for months with browsers based on Chromium:
Use a browser not based on the Chromium engine, and it should work.
I'm using python on windows 10.
In that case I think the standard and error output is in the console window you run it from?
Unless you redirected those to a log file.
Here are the dates of the Commits that was done on frndlytv-for-channels.
Yep, those are his github commits.
I look at where I'm pulling the image from because they aren't always in sync for all the containers I use.
https://hub.docker.com/r/matthuisman/frndlytv-for-channels/tags
Some developers update the container image but not the github commits
So you get notified of a new image available, but no updated commits or release notes
Attempting to set up Custom Channels in either Docker or Python, including later here. Password deleted below but correct and works to log into Frndly on multiple devices. Is my Username wrong? I am using email I log in with.
python app.py --PORT 8183 --USERNAME "[email protected]" --PASSWORD "[DELETED["
Starting server on port 8183
Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
401
Unauthorized access
logging in....
Failed to login: Email or Password doesn’t match our records.
Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
401
Unauthorized access
logging in....
Failed to login: Email or Password doesn’t match our records.
Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
401
Unauthorized access
logging in....
Failed to login: Email or Password doesn’t match our records.
192.168.35.106 - - [27/Feb/2026 09:54:53] "GET /playlist.m3u8?gracenote=include HTTP/1.1" 500 -
----------------------------------------
Exception occurred during processing of request from ('192.168.35.106', 12028)
Traceback (most recent call last):
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\app.py", line 53, in do_GET
routes[func]()
~~~~~~~~~~~~^^
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\app.py", line 71, in _playlist
channels = frndly.channels()
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\frndly.py", line 151, in channels
rows = self._request('https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0')['data']
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\frndly.py", line 141, in _request
raise Exception('Failed to get response from url: {}'.format(url))
Exception: Failed to get response from url: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\socketserver.py", line 697, in process_request_thread
self.finish_request(request, client_address)
~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\socketserver.py", line 362, in finish_request
self.RequestHandlerClass(request, client_address, self)
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\app.py", line 25, in __init__
super().__init__(*args, **kwargs)
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\socketserver.py", line 766, in __init__
self.handle()
~~~~~~~~~~~^^
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\http\server.py", line 496, in handle
self.handle_one_request()
~~~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\http\server.py", line 484, in handle_one_request
method()
~~~~~~^^
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\app.py", line 55, in do_GET
self._error(e)
~~~~~~~~~~~^^^
File "C:\Users\rudol\OneDrive\Desktop\frndlytv-for-channels\app.py", line 30, in _error
self.wfile.write(f'Error: {message}'.encode('utf8'))
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\rudol\AppData\Local\Python\pythoncore-3.14-64\Lib\socketserver.py", line 845, in write
self._sock.sendall(b)
~~~~~~~~~~~~~~~~~~^^^
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
----------------------------------------
Simply run the below Docker commands using your Frndly TV credentials
docker run -d --restart unless-stopped --env "USERNAME=MY_EMAIL" --env "PASSWORD=MY_PASSWORD" --name frndlytv-for-channels -p 8183:80 matthuisman/frndlytv-for-channels
Replace MY_EMAIL and MY_PASSWORD with your Frndly TV login details.
Unfortunately same result. Cancelled frndly because it is not working with credentials that work for all Frndly apps and web.
2026-02-27 12:50:49.827 | Starting server on port 80
2026-02-27 12:53:35.688 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:53:35.905 | 401
2026-02-27 12:53:35.905 | Unauthorized access
2026-02-27 12:53:35.905 | logging in....
2026-02-27 12:53:36.095 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:53:36.095 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:53:36.316 | 401
2026-02-27 12:53:36.316 | Unauthorized access
2026-02-27 12:53:36.316 | logging in....
2026-02-27 12:53:36.493 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:53:36.493 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:53:36.576 | 401
2026-02-27 12:53:36.576 | Unauthorized access
2026-02-27 12:53:36.576 | logging in....
2026-02-27 12:53:36.771 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:51:06.045 | 172.17.0.1 - - [27/Feb/2026 17:51:06] "GET / HTTP/1.1" 200 -
2026-02-27 12:51:08.858 | 172.17.0.1 - - [27/Feb/2026 17:51:08] "GET / HTTP/1.1" 200 -
2026-02-27 12:51:10.107 | 172.17.0.1 - - [27/Feb/2026 17:51:10] "GET / HTTP/1.1" 200 -
2026-02-27 12:51:53.142 | 172.17.0.1 - - [27/Feb/2026 17:51:53] "GET / HTTP/1.1" 200 -
2026-02-27 12:52:48.233 | 172.17.0.1 - - [27/Feb/2026 17:52:48] "GET / HTTP/1.1" 200 -
2026-02-27 12:53:36.771 | 172.17.0.1 - - [27/Feb/2026 17:53:36] "GET /playlist.m3u8?gracenote=include HTTP/1.1" 500 -
2026-02-27 12:53:36.771 | ----------------------------------------
2026-02-27 12:53:36.771 | Exception happened during processing of request from ('172.17.0.1', 48968)
2026-02-27 12:53:36.786 | Traceback (most recent call last):
2026-02-27 12:53:36.786 | File "/usr/local/lib/python3.8/socketserver.py", line 683, in process_request_thread
2026-02-27 12:53:36.786 | self.finish_request(request, client_address)
2026-02-27 12:53:36.786 | File "/usr/local/lib/python3.8/socketserver.py", line 360, in finish_request
2026-02-27 12:53:36.786 | self.RequestHandlerClass(request, client_address, self)
2026-02-27 12:53:36.786 | File "./app.py", line 25, in __init__
2026-02-27 12:53:36.786 | super().__init__(*args, **kwargs)
2026-02-27 12:53:36.786 | File "/usr/local/lib/python3.8/socketserver.py", line 747, in __init__
2026-02-27 12:53:36.786 | self.handle()
2026-02-27 12:53:36.786 | File "/usr/local/lib/python3.8/http/server.py", line 435, in handle
2026-02-27 12:53:36.786 | self.handle_one_request()
2026-02-27 12:53:36.786 | File "/usr/local/lib/python3.8/http/server.py", line 423, in handle_one_request
2026-02-27 12:53:36.786 | method()
2026-02-27 12:53:36.786 | File "./app.py", line 55, in do_GET
2026-02-27 12:53:36.786 | self._error(e)
2026-02-27 12:53:36.786 | File "./app.py", line 53, in do_GET
2026-02-27 12:53:36.786 | routes[func]()
2026-02-27 12:53:36.786 | File "./app.py", line 71, in _playlist
2026-02-27 12:53:36.786 | channels = frndly.channels()
2026-02-27 12:53:36.787 | File "/usr/src/app/frndly.py", line 151, in channels
2026-02-27 12:53:36.787 | rows = self._request('https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0')['data']
2026-02-27 12:53:36.787 | File "/usr/src/app/frndly.py", line 141, in _request
2026-02-27 12:53:36.787 | raise Exception('Failed to get response from url: {}'.format(url))
2026-02-27 12:53:36.787 | Exception: Failed to get response from url: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:53:36.787 | ----------------------------------------
2026-02-27 12:54:51.119 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:54:51.284 | 401
2026-02-27 12:54:51.284 | Unauthorized access
2026-02-27 12:54:51.284 | logging in....
2026-02-27 12:54:51.589 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:54:51.589 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:54:51.686 | 401
2026-02-27 12:54:51.686 | Unauthorized access
2026-02-27 12:54:51.686 | logging in....
2026-02-27 12:54:51.879 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:54:51.879 | Requesting: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:54:51.984 | 401
2026-02-27 12:54:51.984 | Unauthorized access
2026-02-27 12:54:51.984 | logging in....
2026-02-27 12:54:52.185 | 172.17.0.1 - - [27/Feb/2026 17:54:52] "GET /playlist.m3u8?gracenote=exclude HTTP/1.1" 500 -
2026-02-27 12:54:52.184 | Failed to login: Email or Password doesn’t match our records.
2026-02-27 12:54:52.186 | ----------------------------------------
2026-02-27 12:54:52.186 | Exception happened during processing of request from ('172.17.0.1', 59756)
2026-02-27 12:54:52.188 | Traceback (most recent call last):
2026-02-27 12:54:52.188 | File "/usr/local/lib/python3.8/socketserver.py", line 683, in process_request_thread
2026-02-27 12:54:52.188 | self.finish_request(request, client_address)
2026-02-27 12:54:52.188 | File "/usr/local/lib/python3.8/socketserver.py", line 360, in finish_request
2026-02-27 12:54:52.188 | self.RequestHandlerClass(request, client_address, self)
2026-02-27 12:54:52.188 | File "./app.py", line 25, in __init__
2026-02-27 12:54:52.188 | super().__init__(*args, **kwargs)
2026-02-27 12:54:52.188 | File "/usr/local/lib/python3.8/socketserver.py", line 747, in __init__
2026-02-27 12:54:52.188 | self.handle()
2026-02-27 12:54:52.188 | File "/usr/local/lib/python3.8/http/server.py", line 435, in handle
2026-02-27 12:54:52.188 | self.handle_one_request()
2026-02-27 12:54:52.188 | File "/usr/local/lib/python3.8/http/server.py", line 423, in handle_one_request
2026-02-27 12:54:52.188 | method()
2026-02-27 12:54:52.188 | File "./app.py", line 55, in do_GET
2026-02-27 12:54:52.188 | self._error(e)
2026-02-27 12:54:52.188 | File "./app.py", line 53, in do_GET
2026-02-27 12:54:52.188 | routes[func]()
2026-02-27 12:54:52.188 | File "./app.py", line 71, in _playlist
2026-02-27 12:54:52.188 | channels = frndly.channels()
2026-02-27 12:54:52.188 | File "/usr/src/app/frndly.py", line 151, in channels
2026-02-27 12:54:52.188 | rows = self._request('https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0')['data']
2026-02-27 12:54:52.188 | File "/usr/src/app/frndly.py", line 141, in _request
2026-02-27 12:54:52.188 | raise Exception('Failed to get response from url: {}'.format(url))
2026-02-27 12:54:52.188 | Exception: Failed to get response from url: https://frndlytv-api.revlet.net/service/api/v1/tvguide/channels?skip_tabs=0
2026-02-27 12:54:52.188 | ----------------------------------------
Any chance your password has weird characters?
No. Upper an lower alpha, $, and 3 numbers
If '$' is bad is there a good special character, as one is required.
are you doing this on Windows, or Linux? I'm just speculating here that Powershell could misinterept that $ as a variable.
i know i'm beating a deadhorse, but you're typing this exactly?
docker run -d --restart unless-stopped --env "USERNAME=MY_EMAIL" --env "PASSWORD=MY_PASSWORD" --name frndlytv-for-channels -p 8183:80 matthuisman/frndlytv-for-channels
so yours would be:
docker run -d --restart unless-stopped --env "[email protected]" --env "PASSWORD=Poop123$" --name frndlytv-for-channels -p 8183:80 matthuisman/frndlytv-for-channels
replace Poop123$ with your password...
i just signed up for a trial and it worked on first try. and you're 100% sure password is right? account not locked out?
You nailed it. Replaced '$' with '_' character and all good. Thank you!!!!!


