Posts by Lululla
-
-
Display MoreDisplay More
Lululla, if possible, add these two resources, with respect https://filmix.my and https://rezka.ag/
yes
here parse
filmix
month4..../parser_app/parser_filmix.py at 40f4a16ec7a236e97160eade8cd9ddd014a7f55a · Emir-back/month4....
tivi-manager/app/core/providers/filmix.py at cc6fac0083a41c51b57ba2e876a246a39252eefa · ToShukKr/tivi-manager
rezka
angular_fls_appMovie/backend/app.py at 7db5e5184982d3a74455f4691624fbfaab8f3f37 · kartsevnik/angular_fls_appMovieWhere do you add thes files to in e2iplayer ? which folders ?
I only reported these. I can't right now.
If anyone of good will wants to try,
You can't add anything. It's just a report for developers.
-
Lululla, if possible, add these two resources, with respect https://filmix.my and https://rezka.ag/
yes
here parse
filmix
month4..../parser_app/parser_filmix.py at 40f4a16ec7a236e97160eade8cd9ddd014a7f55a · Emir-back/month4....
tivi-manager/app/core/providers/filmix.py at cc6fac0083a41c51b57ba2e876a246a39252eefa · ToShukKr/tivi-manager
rezka
angular_fls_appMovie/backend/app.py at 7db5e5184982d3a74455f4691624fbfaab8f3f37 · kartsevnik/angular_fls_appMovie -
Display More
Hi,
Zgemma Star 2H Openpli 9.1 shows Foreca plugin like this. How to fix resolution?
I have tried also Openpli plugin extension plugin version, but it is worse as same as 3.3.8 downloaded from here.
This 3.3.7 working ok only resolution problem / font size / no temperature showing
Earlier versions of Foreca plugin works ok, but not after Openpli 9.x upgrade.
Thank you
change skin
-
Update here to 2.1 version
ONLY FOR PYTHON3
wget -q --no-check-certificate https://raw.githubusercontent.com/Belfagor2005/Archimede-M3UConverter/main/installer.sh -O - | /bin/sh
-
QuoteDisplay More
English Comments and Docstrings:
All comments and documentation are now in English for better international readability.
Better Organization:
Code is structured with clear sections and logical grouping of related functionality.
Performance Optimization:
Added incremental parsing for large M3U files
Implemented caching mechanisms for EPG matching
Optimized channel matching algorithms
Added binary data filtering to prevent crashes
Debug Mode:
Added configurable debug mode that can be enabled/disabled via configuration to reduce logging overhead during normal operation.
Memory Management:
Implemented file size-based parsing strategies
Added chunked processing for large files
Added cache size limits and cleanup mechanisms
Error Handling:
Improved error handling with better user feedback and logging.
EPG Integration:
Enhanced EPG service mapping with better satellite preference handling and compatibility checking.
The code now handles large files (100,000+ channels) more efficiently and includes performance optimizations to ensure faster conversion times while maintaining all the original functionality.
EDIT:RE DOWNLOAD FILE ATTACHED
-
all ok for me..
please remove folder, any plugins..
space on flash? -
-
My parse code. for json
Code
Display Moredef parse_json(self, filename=None): file_to_parse = filename or self.selected_file try: with open(file_to_parse, 'r', encoding='utf-8') as f: data = json.load(f) self.m3u_list = [] channels = [] logger.debug(f"JSON data type: {type(data)}") if isinstance(data, dict): logger.debug(f"JSON keys: {list(data.keys())}") # Handle different JSON structures if isinstance(data, dict): # Try various common JSON structures if 'channels' in data and isinstance(data['channels'], list): channels = data['channels'] logger.debug("Found channels in 'channels' key") elif 'playlist' in data and isinstance(data['playlist'], list): channels = data['playlist'] logger.debug("Found channels in 'playlist' key") elif 'items' in data and isinstance(data['items'], list): channels = data['items'] logger.debug("Found channels in 'items' key") elif 'streams' in data and isinstance(data['streams'], list): channels = data['streams'] logger.debug("Found channels in 'streams' key") elif 'data' in data and isinstance(data['data'], list): channels = data['data'] logger.debug("Found channels in 'data' key") else: # If no specific key found, try to use all values that are lists for key, value in data.items(): if isinstance(value, list): channels = value logger.debug(f"Using list from key: {key}") break elif isinstance(data, list): # Direct array of channels channels = data logger.debug("JSON is direct array of channels") else: logger.error("Unsupported JSON structure") raise ValueError("Unsupported JSON structure") # Process channels for channel in channels: if not isinstance(channel, dict): logger.warning(f"Skipping non-dict channel: {channel}") continue # Extract channel information with flexible field names name = (channel.get('name') or channel.get('title') or channel.get('channel') or channel.get('channel_name') or 'Unknown') url = (channel.get('url') or channel.get('link') or channel.get('stream') or channel.get('source') or channel.get('address') or '') # Decode URL if it's encoded (check for % encoding) if url and '%' in url: try: url = unquote(url) logger.debug(f"Decoded URL: {url}") except Exception as e: logger.error(f"Error decoding URL: {str(e)}") group = (channel.get('group') or channel.get('category') or channel.get('group-title') or channel.get('group_title') or '') logo = (channel.get('logo') or channel.get('icon') or channel.get('tvg-logo') or channel.get('tvg_logo') or '') tvg_id = (channel.get('tvg-id') or channel.get('tvg_id') or channel.get('id') or channel.get('channel_id') or '') tvg_name = channel.get('tvg-name') or channel.get('tvg_name') or name # Check if URL is valid after decoding is_valid_url = False if url: # Check for various URL protocols url_protocols = ('http://', 'https://', 'rtsp://', 'rtmp://', 'udp://', 'rtp://') is_valid_url = any(url.startswith(proto) for proto in url_protocols) # Also check for encoded URLs that might become valid after decoding if not is_valid_url and '%' in url: decoded_url = unquote(url) is_valid_url = any(decoded_url.startswith(proto) for proto in url_protocols) if is_valid_url: url = decoded_url group = clean_group_name(group) # Only add channels with a valid URL if is_valid_url: self.m3u_list.append({ 'name': name, 'url': url, 'group': group, 'logo': logo, 'tvg_id': tvg_id, 'tvg_name': tvg_name, 'duration': channel.get('duration', '-1'), 'user_agent': channel.get('user-agent') or channel.get('user_agent') or '', 'program_id': channel.get('program-id') or channel.get('program_id') or '' }) logger.debug(f"Added channel: {name} - {url}") else: logger.warning(f"Skipping channel without valid URL: {name} - URL: {url}") # Update UI based on conversion type display_list = [] for channel in self.m3u_list: name = sub(r'\[.*?\]', '', channel['name']).strip() group = channel.get('group', '') display_list.append(f"{group + ' - ' if group else ''}{name}") # Update the list immediately self["list"].setList(display_list) self.file_loaded = True self._update_ui_success(len(self.m3u_list)) # Log results for debugging logger.debug(f"Found {len(self.m3u_list)} channels in JSON file") if len(self.m3u_list) > 0: logger.debug(f"Sample channel: {self.m3u_list[0]}") except Exception as e: logger.error(f"Error parsing JSON: {str(e)}") self.file_loaded = False self.m3u_list = [] self.session.open( MessageBox, _("Error parsing JSON file. Please check the format.\n\nError: %s") % str(e), MessageBox.TYPE_ERROR, timeout=6 )Well, it depends on how the JSON is formatted.
I created a particular format in the plugin. So,
from m3u to JSON and then from JSON to M3U.
It seems to work.
-
details please
-
I can't do better for now... here it is, the last one.
We need a developer in another country, the United Kingdom or Germany, to maybe fix their part.
With the same list
- we went from 183 to 296 matches
I think it's fine... to the detriment of many of the Sky channels...
-
tnx Masta2002 for your prompt reply
enclose my crashlog
It all starts here.
It could be a screen or code error. It should be checked on a clean flash image and reinstalled.
Code18:41:57.8194 File "/usr/lib/enigma2/python/Components/Renderer/Listbox.py", line 122, in changed 18:41:57.8195 AttributeError: 'List' object has no attribute 'content'and then
Code
Display More18:41:57.8242 Traceback (most recent call last): 18:41:57.8243 File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action 18:41:57.8248 File "/usr/lib/enigma2/python/Screens/PluginBrowser.py", line 458, in keySelect 18:41:57.8251 File "/usr/lib/enigma2/python/Plugins/Plugin.py", line 91, in __call__ 18:41:57.8255 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 94, in main 18:41:57.8260 runMain(session) 18:41:57.8262 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 122, in runMain 18:41:57.8266 nextFunction(session) 18:41:57.8267 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 118, in doRunMain 18:41:57.8271 session.open(E2iPlayerWidget) 18:41:57.8273 File "/usr/lib/enigma2/python/StartEnigma.py", line 179, in open 18:41:57.8276 self.execBegin() 18:41:57.8278 File "/usr/lib/enigma2/python/StartEnigma.py", line 96, in execBegin 18:41:57.8280 currentDialog.show() 18:41:57.8282 File "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/plugin.py", line 2935, in L4L_replacement_Screen_show 18:41:57.8319 Screen.L4L_show_old(self) 18:41:57.8321 File "/usr/lib/enigma2/python/Screens/Screen.py", line 119, in show 18:41:57.8325 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1106, in onStart 18:41:57.8344 self.selectHost() 18:41:57.8346 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1123, in selectHost 18:41:57.8360 self.selectGroup() 18:41:57.8362 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1137, in selectGroup 18:41:57.8375 self.session.openWithCallback(self.selectGroupCallback, PlayerSelectorWidget, inList=self.displayGroupsList, outList=self.newDisplayGroupsList, numOfLockedItems=self.getNumOfSpecialItems(self.displayGroupsList), groupName='selectgroup') 18:41:57.8379 File "/usr/lib/enigma2/python/StartEnigma.py", line 159, in openWithCallback 18:41:57.8384 dialog = self.open(screen, *arguments, **kwargs) 18:41:57.8388 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:41:57.8388 File "/usr/lib/enigma2/python/StartEnigma.py", line 170, in open 18:41:57.8392 dialog = self.current_dialog = self.instantiateDialog(screen, *arguments, **kwargs) 18:41:57.8397 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:41:57.8398 File "/usr/lib/enigma2/python/StartEnigma.py", line 109, in instantiateDialog 18:41:57.8401 return self.doInstantiateDialog(screen, arguments, kwargs, self.desktop) 18:41:57.8406 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:41:57.8406 File "/usr/lib/enigma2/python/StartEnigma.py", line 136, in doInstantiateDialog 18:41:57.8410 dialog.applySkin() 18:41:57.8411 File "/usr/lib/enigma2/python/Screens/Screen.py", line 269, in applySkin 18:41:57.8414 File "/usr/lib/enigma2/python/Screens/Screen.py", line 304, in createGUIScreen 18:41:57.8417 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 179, in layoutFinished 18:41:57.8421 self.setSelectionImage("") 18:41:57.8423 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 221, in setSelectionImage 18:41:57.8428 self["grid"].master.master.instance.setSelectionPixmap(LoadPixmap(file)) 18:41:57.8430 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:41:57.8432 AttributeError: 'NoneType' object has no attribute 'master' 18:41:57.8433 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.HelpableActionMap object at 0xae3cacb0>>,('OkCancelActions', 'ok')) failed) 18:43:03.6890 [eDVBPESReader] Created. Opening demux 18:43:03.6892 [eDVBPESReader] Created. Opening demux 18:43:43.5062 Traceback (most recent call last): 18:43:43.5064 File "/usr/lib/enigma2/python/skin.py", line 1957, in readSkin 18:43:43.5064 File "/usr/lib/enigma2/python/skin.py", line 1906, in processScreen 18:43:43.5065 File "/usr/lib/enigma2/python/skin.py", line 1847, in processWidget 18:43:43.5065 File "/usr/lib/enigma2/python/Components/Element.py", line 38, in connect 18:43:43.5066 File "/usr/lib/enigma2/python/Components/Element.py", line 35, in connectUpstream 18:43:43.5066 File "/usr/lib/enigma2/python/Components/Renderer/Listbox.py", line 122, in changed 18:43:43.5067 AttributeError: 'List' object has no attribute 'content' 18:43:43.5116 Traceback (most recent call last): 18:43:43.5117 File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action 18:43:43.5120 File "/usr/lib/enigma2/python/Screens/PluginBrowser.py", line 458, in keySelect 18:43:43.5123 File "/usr/lib/enigma2/python/Plugins/Plugin.py", line 91, in __call__ 18:43:43.5126 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 94, in main 18:43:43.5136 runMain(session) 18:43:43.5138 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 122, in runMain 18:43:43.5142 nextFunction(session) 18:43:43.5144 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/plugin.py", line 118, in doRunMain 18:43:43.5147 session.open(E2iPlayerWidget) 18:43:43.5148 File "/usr/lib/enigma2/python/StartEnigma.py", line 179, in open 18:43:43.5160 self.execBegin() 18:43:43.5162 File "/usr/lib/enigma2/python/StartEnigma.py", line 96, in execBegin 18:43:43.5165 currentDialog.show() 18:43:43.5167 File "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/plugin.py", line 2935, in L4L_replacement_Screen_show 18:43:43.5249 Screen.L4L_show_old(self) 18:43:43.5251 File "/usr/lib/enigma2/python/Screens/Screen.py", line 119, in show 18:43:43.5255 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1106, in onStart 18:43:43.5290 self.selectHost() 18:43:43.5292 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1123, in selectHost 18:43:43.5307 self.selectGroup() 18:43:43.5308 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1137, in selectGroup 18:43:43.5322 self.session.openWithCallback(self.selectGroupCallback, PlayerSelectorWidget, inList=self.displayGroupsList, outList=self.newDisplayGroupsList, numOfLockedItems=self.getNumOfSpecialItems(self.displayGroupsList), groupName='selectgroup') 18:43:43.5325 File "/usr/lib/enigma2/python/StartEnigma.py", line 159, in openWithCallback 18:43:43.5329 dialog = self.open(screen, *arguments, **kwargs) 18:43:43.5333 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:43.5333 File "/usr/lib/enigma2/python/StartEnigma.py", line 170, in open 18:43:43.5337 dialog = self.current_dialog = self.instantiateDialog(screen, *arguments, **kwargs) 18:43:43.5343 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:43.5343 File "/usr/lib/enigma2/python/StartEnigma.py", line 109, in instantiateDialog 18:43:43.5346 return self.doInstantiateDialog(screen, arguments, kwargs, self.desktop) 18:43:43.5351 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:43.5351 File "/usr/lib/enigma2/python/StartEnigma.py", line 136, in doInstantiateDialog 18:43:43.5355 dialog.applySkin() 18:43:43.5356 File "/usr/lib/enigma2/python/Screens/Screen.py", line 269, in applySkin 18:43:43.5359 File "/usr/lib/enigma2/python/Screens/Screen.py", line 304, in createGUIScreen 18:43:43.5362 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 179, in layoutFinished 18:43:43.5379 self.setSelectionImage("") 18:43:43.5380 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 221, in setSelectionImage 18:43:43.5387 self["grid"].master.master.instance.setSelectionPixmap(LoadPixmap(file)) 18:43:43.5390 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:43.5392 AttributeError: 'NoneType' object has no attribute 'master' 18:43:43.5392 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.HelpableActionMap object at 0xae3cacb0>>,('OkCancelActions', 'ok')) failed) 18:43:53.9687 Traceback (most recent call last): 18:43:53.9689 File "/usr/lib/enigma2/python/skin.py", line 1957, in readSkin 18:43:53.9690 File "/usr/lib/enigma2/python/skin.py", line 1906, in processScreen 18:43:53.9690 File "/usr/lib/enigma2/python/skin.py", line 1847, in processWidget 18:43:53.9691 File "/usr/lib/enigma2/python/Components/Element.py", line 38, in connect 18:43:53.9691 File "/usr/lib/enigma2/python/Components/Element.py", line 35, in connectUpstream 18:43:53.9692 File "/usr/lib/enigma2/python/Components/Renderer/Listbox.py", line 122, in changed 18:43:53.9693 AttributeError: 'List' object has no attribute 'content' 18:43:53.9734 Traceback (most recent call last): 18:43:53.9735 File "/usr/lib/enigma2/python/Components/ActionMap.py", line 278, in action 18:43:53.9738 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 873, in back_pressed 18:43:53.9752 self.selectHost() 18:43:53.9754 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1123, in selectHost 18:43:53.9769 self.selectGroup() 18:43:53.9772 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/iptvplayerwidget.py", line 1137, in selectGroup 18:43:53.9786 self.session.openWithCallback(self.selectGroupCallback, PlayerSelectorWidget, inList=self.displayGroupsList, outList=self.newDisplayGroupsList, numOfLockedItems=self.getNumOfSpecialItems(self.displayGroupsList), groupName='selectgroup') 18:43:53.9789 File "/usr/lib/enigma2/python/StartEnigma.py", line 159, in openWithCallback 18:43:53.9793 dialog = self.open(screen, *arguments, **kwargs) 18:43:53.9797 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:53.9798 File "/usr/lib/enigma2/python/StartEnigma.py", line 170, in open 18:43:53.9801 dialog = self.current_dialog = self.instantiateDialog(screen, *arguments, **kwargs) 18:43:53.9807 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:53.9807 File "/usr/lib/enigma2/python/StartEnigma.py", line 109, in instantiateDialog 18:43:53.9810 return self.doInstantiateDialog(screen, arguments, kwargs, self.desktop) 18:43:53.9815 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:53.9816 File "/usr/lib/enigma2/python/StartEnigma.py", line 136, in doInstantiateDialog 18:43:53.9819 dialog.applySkin() 18:43:53.9820 File "/usr/lib/enigma2/python/Screens/Screen.py", line 269, in applySkin 18:43:53.9823 File "/usr/lib/enigma2/python/Screens/Screen.py", line 304, in createGUIScreen 18:43:53.9826 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 179, in layoutFinished 18:43:53.9830 self.setSelectionImage("") 18:43:53.9832 File "/usr/lib/enigma2/python/Plugins/Extensions/IPTVPlayer/components/playerselector.py", line 221, in setSelectionImage 18:43:53.9837 self["grid"].master.master.instance.setSelectionPixmap(LoadPixmap(file)) 18:43:53.9840 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 18:43:53.9842 AttributeError: 'NoneType' object has no attribute 'master' 18:43:53.9843 [ePyObject] (PyObject_CallObject(<bound method ActionMap.action of <Components.ActionMap.ActionMap object at 0xa6ff0250>>,('IPTVPlayerListActions', 'back')) failed) -
please feedback on this test
-major epg show--issue (sky channels not recognized!)
rename attached fiel in to plugin.py and overwrite in folder plugin.. reboot
try conversion file. . -
Now other lines on config..
wget -q --no-check-certificate https://raw.githubusercontent.com/Belfagor2005/Archimede-M3UConverter/main/installer.sh -O - | /bin/sh
-
or for big file m3u
-
or this for +match
thyank's for test
compare epg if same or not.. -
well. thank's correct.
- The hybrid service reference system is brilliant.
- Auto-detection of mounted storage devices
- Automatic aspect ratio management during playback
- Integrated backup and restore system
- Support for multiple EPG sources with mirroring
- Multi-format support: M3U, JSON, XSPF, Enigma2 bouquets
- EPG integration: Automatic channel mapping with Rytec support
- Multi-language: Support for numerous European languages
- HLS conversion: Native support for HLS streams
- Binary data filtering: Protection against data corruption
- Aspect ratio management: Intelligent management of video aspect ratios
-
try test for Language Epg (select on config)
please feedback -
4.1.0.0
-
Lululla my friend this topic for addons manager not the cam manager :), i only said to download enigma2-plugin-extensions-sportstv 1.3 because your plugin not need any dependencies . Im guessing his issue with his image feed issue not the this addons issue
ah ok..
enigma2-plugin-extensions-sportstv 1.3 don't work .. remove this
