Simply asking what is the m3u address I need to put into the custom channel. I ended up using the first one in post number 63, but I am not getting any guide data. The container is running and I get 533 channels. Thanks.
You can use the custom EPG links located on the first page
Thanks. It is working now. To help others, what first page do you mean? The first POST in this thread? I don't see the links there. Is there a link to Github? Thanks again!
@joagomez, I noticed the Plex guide data was not loading and, upon attempting a manual reload, saw this in the Channels logs:
[ERR] No stations available in lineup XMLTV-Plex after guide data download: XML syntax error on line 81124: illegal character code U+0008
Looking at the XML Guide Data file, I saw that line 81124 had this character:
Switched guide data to i.mjh.nz and it loaded no issue. When I looked at the similar record, sure enough it did not have that character:
Seems to be filtering out.
Uh huh, that's why I said:
Letting them know about another issue I encountered, okay?
FYI @joagomez Not seeing this issue using the GitHub docker and the Gracenote-only m3u (334 channels)
Thanks for the info. I am totally revamping how I pull EPG data for Plex, but have been under the weather so may take some time for resolution.
FYI, getting an EPG XML error in logs:
Failed to get placeholder channels for lineup XMLTV-Plex: XML syntax error on line 80766: illegal character code U+0008
Pulling the EPG, that reference line shows this entry:
<programme channel="5e20b730f2f8d5003d739db7-60d4ede2b2fdec002c14113b" start="20240220064840 +0000" stop="20240220071715 +0000">
<title>TREASURE MAP</title>
<sub-title>TREASURE MAP: S2 E5</sub-title>
<episode-num system="onscreen">S02E05</episode-num>
<desc>TREASURE's wise dorm life | Come In~</desc>
<icon src="https://provider-static.plex.tv/epg/cms/production/e9933418-5431-46d2-8db7-aad6e60bf7bc/YG_TV_Plex_Channel_Image_2000x3000.jpg" />
<date>20210604</date>
<category>Music</category>
</programme>
unicode character that is not XML friendly at the beginning of the "desc" tag
This is the same issue noted earlier by @babsonnexus.
The json data pulled by plex has an illegal backspace character in it and I am not doing any checks currently to ensure the string is valid xml as I assumed it would already be valid. Live and learn…will add additional validation checks in the next version
Uploaded version 1.06 which hopefully corrects many of the issues on how the EPG data was being generated.
Also did some cleanup to by default use only the local IP geolocation. An env variable has been added to utilize other geolocations. This was in effort to reduce the amount of API calls being done to generate the EPG data which was either causing some 429 errors and/or XML load time issues (which was also improved to slowly create several days of EPG data instead of trying to bulk load which caused more of these issues). And hopefully the invalid character function that has been added catches the XML invalid characters as expected
Tried pulling the new image but it's still reporting v1.03 updated last on 2/11/24.
Are you doing it through command line?
I had to physically delete the container and run the command exactly as instructed including the port number etc.
I went into Channels and changed it to where gracenot included channels were sorted just as we do with Frndly docker.
I had the same issue on my end.
Please pull from github for the latest updates
docker pull ghcr.io/jgomez177/plex-for-channels
https://github.com/jgomez177/plex-for-channels/pkgs/container/plex-for-channels
I have taken down the docker hub repository to avoid further confusion
Thank you! I had forgotten to add the PLEX_PORT env command in Portainer... all is working now!
@jgomez177, this exact situation is going on in the Plex container. I've had to reset it every few days because eventually Channels stops loading the guide with all the old stuff in it.
What version are you running? This should have been resolved in version 1.06
If it helps, I see errors in the logs, too:
2024-03-04 19:01:51 Exception in thread Thread-1 (scheduler_thread):
2024-03-04 19:01:51 Traceback (most recent call last):
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
2024-03-04 19:01:51 response = self._make_request(
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
2024-03-04 19:01:51 response = conn.getresponse()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
2024-03-04 19:01:51 httplib_response = super().getresponse()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 1423, in getresponse
2024-03-04 19:01:51 response.begin()
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 331, in begin
2024-03-04 19:01:51 version, status, reason = self._read_status()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 300, in _read_status
2024-03-04 19:01:51 raise RemoteDisconnected("Remote end closed connection without"
2024-03-04 19:01:51 http.client.RemoteDisconnected: Remote end closed connection without response
2024-03-04 19:01:51
2024-03-04 19:01:51 During handling of the above exception, another exception occurred:
2024-03-04 19:01:51
2024-03-04 19:01:51 Traceback (most recent call last):
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 486, in send
2024-03-04 19:01:51 resp = conn.urlopen(
2024-03-04 19:01:51 ^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 847, in urlopen
2024-03-04 19:01:51 retries = retries.increment(
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 470, in increment
2024-03-04 19:01:51 raise reraise(type(error), error, _stacktrace)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/util/util.py", line 38, in reraise
2024-03-04 19:01:51 raise value.with_traceback(tb)
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 793, in urlopen
2024-03-04 19:01:51 response = self._make_request(
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 537, in _make_request
2024-03-04 19:01:51 response = conn.getresponse()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 466, in getresponse
2024-03-04 19:01:51 httplib_response = super().getresponse()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 1423, in getresponse
2024-03-04 19:01:51 response.begin()
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 331, in begin
2024-03-04 19:01:51 version, status, reason = self._read_status()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/http/client.py", line 300, in _read_status
2024-03-04 19:01:51 raise RemoteDisconnected("Remote end closed connection without"
2024-03-04 19:01:51 urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
2024-03-04 19:01:51
2024-03-04 19:01:51 During handling of the above exception, another exception occurred:
2024-03-04 19:01:51
2024-03-04 19:01:51 Traceback (most recent call last):
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/threading.py", line 1073, in _bootstrap_inner
2024-03-04 19:01:51 self.run()
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/threading.py", line 1010, in run
2024-03-04 19:01:51 self._target(*self._args, **self._kwargs)
2024-03-04 19:01:51 File "/app/pywsgi.py", line 251, in scheduler_thread
2024-03-04 19:01:51 schedule.run_pending()
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/schedule/__init__.py", line 822, in run_pending
2024-03-04 19:01:51 default_scheduler.run_pending()
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/schedule/__init__.py", line 100, in run_pending
2024-03-04 19:01:51 self._run_job(job)
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/schedule/__init__.py", line 172, in _run_job
2024-03-04 19:01:51 ret = job.run()
2024-03-04 19:01:51 ^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/schedule/__init__.py", line 693, in run
2024-03-04 19:01:51 ret = self.job_func()
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/app/pywsgi.py", line 242, in epg_scheduler
2024-03-04 19:01:51 error = providers[provider].create_xml_file(code)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/app/plex.py", line 468, in create_xml_file
2024-03-04 19:01:51 error_code = self.update_epg(country_code)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/app/plex.py", line 336, in update_epg
2024-03-04 19:01:51 error = self.read_epg_from_api(start_datetime, dates_not_present[0], 0, id_values, country_code)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/app/plex.py", line 259, in read_epg_from_api
2024-03-04 19:01:51 resp, error = self.api(country_code, 'grid', params, epg_headers)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/app/plex.py", line 218, in api
2024-03-04 19:01:51 response = self.session.get(url, params=api_params, headers=api_headers)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 602, in get
2024-03-04 19:01:51 return self.request("GET", url, **kwargs)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
2024-03-04 19:01:51 resp = self.send(prep, **send_kwargs)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
2024-03-04 19:01:51 r = adapter.send(request, **kwargs)
2024-03-04 19:01:51 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-03-04 19:01:51 File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 501, in send
2024-03-04 19:01:51 raise ConnectionError(err, request=request)
2024-03-04 19:01:51 requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
Then later, after the reset this AM:
2024-03-06 10:25:44 Retrieving local EPG data complete
2024-03-06 10:25:58 ⇨ http server started on [::]:7777
2024-03-06 10:30:47 Retrieving local EPG data for 2024-03-07 through 2024-03-07
2024-03-06 10:32:16 Retrieving local EPG data complete
2024-03-06 10:42:43 Retrieving local EPG data for 2024-03-08 through 2024-03-08
2024-03-06 10:44:33 Retrieving local EPG data complete
2024-03-06 10:55:08 Retrieving local EPG data for 2024-03-09 through 2024-03-09
2024-03-06 10:57:43 (None, 'HTTP failure 429: {"Error":{"error":"Too Many Requests","message":"Rate limit exceeded!","statusCode":429}}')
Seeing the same here. Github says I have the latest version.