Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Channels using *Wrapper plugins do not work when put in the channels' alternatives list #3238

Closed
mp107 opened this issue Jan 18, 2024 · 9 comments
Labels

Comments

@mp107
Copy link

mp107 commented Jan 18, 2024

Hi,
Describe the bug / Actual behaviour:
I noticed that IPTV channel list entries that use any *Wrapper plugin (for example those with URLs starting with YT_DLP://) do not work when put in the alternatives list of a channel.

Expected behaviour:
The channels using the *Wrapper plugins should work also when put in the alternatives list of a channel.

Has this issue started to happen just recently?
The problem persists on an all tested (up to date as for today) versions of OpenATV: 7.2, 7.3 and 7.4.

To reproduce:
As an example I used XITE channel stream as it should not be geoblocked.

  1. Optional, only if you want to start on a fresh OpenATV instance: Install all the required packages:
    opkg update && opkg install python3-yt-dlp streamlink enigma2-plugin-systemplugins-serviceapp enigma2-plugin-extensions-ytdlpwrapper enigma2-plugin-extensions-streamlinkwrapper streamlinksrv
  2. Add channel list entries using "bare IPTV", Streamlinksrv, Streamlinkwrapper, YTDLPWrapper plugins directly in the channel list and later the same channel list entries but put in the alternatives list
init 4 # Stop Enigma2 GUI

echo '#NAME XITE ALT IPTV
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE ALT IPTV
#DESCRIPTION XITE English ALT IPTV'  > /etc/enigma2/alternatives.xite_iptv.tv

echo '#NAME XITE ALT Streamlinksrv
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:http%3a//127.0.0.1%3a8088/https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE ALT Streamlinksrv
#DESCRIPTION XITE English ALT Streamlinksrv'  > /etc/enigma2/alternatives.xite_streamlinksrv.tv

echo '#NAME XITE ALT Streamlinkwrapper
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:streamlink%3a//https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE ALT Streamlinkwrapper
#DESCRIPTION XITE English Streamlinkwrapper'  > /etc/enigma2/alternatives.xite_streamlinkwrapper.tv

echo '#NAME XITE ALT YTDLPWrapper
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:YT-DLP%3a//https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE ALT YTDLPWrapper
#DESCRIPTION XITE English YTDLPWrapper'  > /etc/enigma2/alternatives.xite_ytdlpwrapper.tv

echo '#NAME Favourites (TV)
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE IPTV
#DESCRIPTION XITE IPTV
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:http%3a//127.0.0.1%3a8088/https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE streamlinksrv
#DESCRIPTION XITE streamlinksrv
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:streamlink%3a//https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE StreamlinkWrapper
#DESCRIPTION XITE StreamlinkWrapper
#SERVICE 4097:0:1:148D:DDD5:EC:0:0:0:0:YT-DLP%3a//https%3a//xite-samsung-de.amagi.tv/playlist.m3u8:XITE YTDLPWrapper
#DESCRIPTION XITE YTDLPWrapper
#SERVICE 1:134:1:0:0:0:0:0:0:0:FROM BOUQUET "alternatives.xite_iptv.tv" ORDER BY bouquet
#SERVICE 1:134:1:0:0:0:0:0:0:0:FROM BOUQUET "alternatives.xite_streamlinksrv.tv" ORDER BY bouquet
#SERVICE 1:134:1:0:0:0:0:0:0:0:FROM BOUQUET "alternatives.xite_streamlinkwrapper.tv" ORDER BY bouquet
#SERVICE 1:134:1:0:0:0:0:0:0:0:FROM BOUQUET "alternatives.xite_ytdlpwrapper.tv" ORDER BY bouquet
' > /etc/enigma2/userbouquet.favourites.tv

init 3 # Start Enigma2 GUI
  1. Go to the "Favourites (TV) bouquet"
  2. Now check which of the channels work. The result should be as described below:
    a) XITE IPTV - works
    b) XITE Streamlinksrv - works
    c) XITE Streamlinkwrapper - works
    d) XITE YTDLPWrapper - works
    e) XITE ALT IPTV - works
    f) XITE ALT Streamlinksrv - works
    g) XITE ALT Streamlinkwrapper - not works
    h) XITE ALT YTDLPWrapper - not works

Conclusion: All the IPTV channels using the "*Wrapper" plugins that are put in the alternatives list do not work -that's the issue I describe here.

Screenshots
Only a black screen is visible on non-working channels so there's not much to show :)

Image/Box Model (please complete the following information):

  • Version: OpenATV 7.2, 7.3, 7.4
  • BoxModel: Octagon SF8008

Additional context
In case of further questions (logs, etc.) I can provide them if needed.

@mp107 mp107 added the BUG 🐞 label Jan 18, 2024
@mp107 mp107 changed the title YTDLPWrapper does not work when entry put in the channel's alternatives list Channels using *Wrapper plugins do not work when put in the channels' alternatives list Jan 18, 2024
@jbleyel
Copy link
Contributor

jbleyel commented Jan 18, 2024

Please test this :
ChannelSelection.py.zip

You need ATV 7.3 or 7.4 devel build.

@mp107
Copy link
Author

mp107 commented Jan 19, 2024

I've installed the file as shown below

root@sf8008:~# cd /hdd
root@sf8008:/hdd# wget "https://github.com/openatv/enigma2/files/13982151/ChannelSelection.py.zip"
--2024-01-19 06:20:08--  https://github.com/openatv/enigma2/files/13982151/ChannelSelection.py.zip
Resolving github.com... 140.82.121.3
Connecting to github.com|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-repository-file-5c1aeb/4813239/13982151?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240119%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240119T052009Z&X-Amz-Expires=300&X-Amz-Signature=d3b65af9b04e1c32a9830998d08101560a9fca92479e0dc655195ba6fb62c1e2&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4813239&response-content-disposition=attachment%3Bfilename%3DChannelSelection.py.zip&response-content-type=application%2Fzip [following]
--2024-01-19 06:20:08--  https://objects.githubusercontent.com/github-production-repository-file-5c1aeb/4813239/13982151?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240119%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240119T052009Z&X-Amz-Expires=300&X-Amz-Signature=d3b65af9b04e1c32a9830998d08101560a9fca92479e0dc655195ba6fb62c1e2&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=4813239&response-content-disposition=attachment%3Bfilename%3DChannelSelection.py.zip&response-content-type=application%2Fzip
Resolving objects.githubusercontent.com... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to objects.githubusercontent.com|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26475 (26K) [application/zip]
Saving to: ‘ChannelSelection.py.zip’

ChannelSelection.py.zip                   100%[====================================================================================>]  25.85K  --.-KB/s    in 0.05s   

2024-01-19 06:20:09 (498 KB/s) - ‘ChannelSelection.py.zip’ saved [26475/26475]

root@sf8008:/hdd# unzip ChannelSelection.py.zip 
Archive:  ChannelSelection.py.zip
  inflating: ChannelSelection.py
root@sf8008:/hdd# find / -name ChannelSelection.pyc
/usr/lib/enigma2/python/Screens/ChannelSelection.pyc
root@sf8008:/hdd# mv ChannelSelection.py /usr/lib/enigma2/python/Screens/ChannelSelection.py
root@sf8008:/hdd# mv /usr/lib/enigma2/python/Screens/ChannelSelection.pyc /usr/lib/enigma2/python/Screens/ChannelSelection.pyc_orig

On both OpenATV 7.3 and 7.4 devel, Enigma2 crashes when selecting channel containing alternatives. Part of a stacktrace (from OpenATV 7.4 devel) is shown below and the full log (from OpenATV 7.3) is in the attached file (enigma2-crashlog.txt).

...
06:22:37.4003 [Enigma] Python path is '/usr/lib/enigma2/python'.
06:22:37.4005 [Enigma] DVB API version 5, DVB API version minor 12.
06:22:37.4006 [Enigma] Enigma debug level 3.
06:22:37.4006 [Enigma] sourcedate 2024-01-05 / 7.3 33052+276055f.
06:23:03.6248 Traceback (most recent call last):
06:23:03.6249   File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action
06:23:03.6254   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2386, in channelSelected
06:23:03.6356     self.zap(enable_pipzap=doClose, preview_zap=not doClose)
06:23:03.6361   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2455, in zap
06:23:03.6413     oldref = self.currentlyPlayingServiceReference or eServiceReference()
06:23:03.6418              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
06:23:03.6432 AttributeError: 'ChannelSelection' object has no attribute 'currentlyPlayingServiceReference'
06:23:03.6434 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.ActionMap object at 0xacfb92d0>>,('OkCancelActions', 'ok')) fail
ed)
06:23:43.1047 Traceback (most recent call last):
06:23:43.1049   File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action
06:23:43.1053   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2386, in channelSelected
06:23:43.1095     self.zap(enable_pipzap=doClose, preview_zap=not doClose)
06:23:43.1099   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2455, in zap
06:23:43.1138     oldref = self.currentlyPlayingServiceReference or eServiceReference()
06:23:43.1142              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
06:23:43.1150 AttributeError: 'ChannelSelection' object has no attribute 'currentlyPlayingServiceReference'
06:23:43.1151 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.ActionMap object at 0xacfb92d0>>,('OkCancelActions', 'ok')) fail
ed)
06:23:48.0074 Traceback (most recent call last):
06:23:48.0075   File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action
06:23:48.0080   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2386, in channelSelected
06:23:48.0118     self.zap(enable_pipzap=doClose, preview_zap=not doClose)
06:23:48.0121   File "/usr/lib/enigma2/python/Screens/ChannelSelection.py", line 2455, in zap
06:23:48.0162     oldref = self.currentlyPlayingServiceReference or eServiceReference()
06:23:48.0167              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
06:23:48.0175 AttributeError: 'ChannelSelection' object has no attribute 'currentlyPlayingServiceReference'
06:23:48.0176 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.ActionMap object at 0xacfb92d0>>,('OkCancelActions', 'ok')) fail
ed)

@jbleyel
Copy link
Contributor

jbleyel commented Jan 19, 2024

Please try this:
ChannelSelection.py.zip

@mp107
Copy link
Author

mp107 commented Jan 19, 2024

Unfortunately, with that file in place it crashes on every channel change (both alternatives and normal channels).
enigma2-crashlog_2.txt

@jbleyel
Copy link
Contributor

jbleyel commented Jan 19, 2024

Sorry. there was a typo.

I have tested this and this is working here.
ChannelSelection.py.zip

@mp107
Copy link
Author

mp107 commented Jan 19, 2024

I can confirm that after applying the attached file the alternative channel list entries based on *Wrapper plugins do work on both OpenATV 7.3 and 7.4 devel.

Thank you very much for your help

@jbleyel
Copy link
Contributor

jbleyel commented Jan 19, 2024

There is one issue left.
The selected alternative if you open the service list is wrong.
I will try to fix this.

@mp107
Copy link
Author

mp107 commented Jan 20, 2024

You're right. I've just put a file on an OpenATV instance with more complex channel list (multiple alternatives - cable, satellite, IPTV channels) and it looks like it prefers to choose the IPTV-based channel alternative.

In case of a need for further testing I can still assist.

@jbleyel
Copy link
Contributor

jbleyel commented Jan 20, 2024

The calculation of an preferred alternative iptv service in a group is not possible.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants