Superb quality and spec AB-Com PULSe 4K SE. Crazy offer! Only £129! FREE UK DELIVERY! 4K UHD, Enigma 2, Multiboot 4 images & more!...
Superb quality and spec AB-Com PULSe 4K Rev II Twin Satellite tuner only £179! FREE UK DELIVERY! 4K UHD, Enigma 2, SATA HDD facility, Multiboot 4 images & more!...

Picons by name why dont they show up on openatv and vti images

Here is the diff file between the file before we added SNP and the current one

Code:
--- C:\Users\User\Downloads\!Satellite\picon file\Picon.py_preSNP    2019-12-02 23:24:09.727000000 -0000
+++ C:\Users\User\Downloads\!Satellite\picon file\Picon.py_20191202    2019-12-02 23:26:34.618000000 -0000
@@ -1,9 +1,10 @@
-import os
+import os, re, unicodedata
 from Renderer import Renderer
 from enigma import ePixmap, ePicLoad
 from Tools.Alternatives import GetWithAlternative
 from Tools.Directories import pathExists, SCOPE_ACTIVE_SKIN, resolveFilename
 from Components.Harddisk import harddiskmanager
+from ServiceReference import ServiceReference
 
 searchPaths = []
 lastPiconPath = None
@@ -56,7 +57,7 @@
         global searchPaths
         pngname = ""
         for path in searchPaths:
-            if pathExists(path) and not path.startswith('/media/net'):
+            if pathExists(path) and not path.startswith('/media/net') and not path.startswith('/media/autofs'):
                 pngname = path + serviceName + ".png"
                 if pathExists(pngname):
                     lastPiconPath = path
@@ -73,15 +74,33 @@
 
 def getPiconName(serviceName):
     #remove the path and name fields, and replace ':' by '_'
-    sname = '_'.join(GetWithAlternative(serviceName).split(':', 10)[:10])
-    pngname = findPicon(sname)
-    if not pngname:
-        fields = sname.split('_', 3)
-        if len(fields) > 2 and fields[2] != '2': #fallback to 1 for tv services with nonstandard servicetypes
-            fields[2] = '1'
-        if len(fields) > 0 and fields[0] == '4097': #fallback to 1 for IPTV streams
-            fields[0] = '1'
+    fields = GetWithAlternative(serviceName).split(':', 10)[:10]
+    if not fields or len(fields) < 10:
+        return ""
+    pngname = findPicon('_'.join(fields))
+    if not pngname and not fields[6].endswith("0000"):
+        #remove "sub-network" from namespace
+        fields[6] = fields[6][:-4] + "0000"
+        pngname = findPicon('_'.join(fields))
+    if not pngname and fields[0] != '1':
+        #fallback to 1 for IPTV streams
+        fields[0] = '1'
         pngname = findPicon('_'.join(fields))
+    if not pngname and fields[2] != '2':
+        #fallback to 1 for TV services with non-standard service types
+        fields[2] = '1'
+        pngname = findPicon('_'.join(fields))
+    if not pngname: # picon by channel name
+        name = ServiceReference(serviceName).getServiceName()
+        name = unicodedata.normalize('NFKD', unicode(name, 'utf_8', errors='ignore')).encode('ASCII', 'ignore')
+        name = re.sub('[^a-z0-9]', '', name.replace('&', 'and').replace('+', 'plus').replace('*', 'star').lower())
+        if len(name) > 0:
+            pngname = findPicon(name)
+            if not pngname and len(name) > 2 and name.endswith('hd'):
+                pngname = findPicon(name[:-2])
+            if not pngname and len(name) > 6:
+                series = re.sub(r's[0-9]*e[0-9]*$', '', name)
+                pngname = findPicon(series)
     return pngname
 
 class Picon(Renderer):
 
Thanks for the help guys, I'll test the new py tonight after work.
 
Picons by name why dont they show up on open

To clarify, I only decompiled the file uploaded in post 20. There are no changes to it that will enable SNP or deal with if first part of service reference is not 1 or 4097

I also tried to download the file from the link you posted, but couldn't as I'm not a member on their site.

Please post the file you edit here if it works.
 
Last edited:
To clarify, I only decompiled the file uploaded in post 20. There are no changes to it that will enable SNP or deal with if first part of service reference is not 1 or 4097

I also tried to download the file from the link you posted, but couldn't as I'm not a member on their site.

Please post the file you edit here if it works.

Here is the py file that was modified in that post on the vu site I did try it but It didn't work
 

Attachments

Last edited:
That file looks like it should work. I am surprised they have not committed it. They still ought to add the splitting of service reference components, but that is another matter.

Sorry to ask, but can you post the iptv service name and the picon name you were using? Perhaps a screenshot with sensitive bits edited out.
 
I'll try when I get home from work matey
 
I think you need to be looking at the skin's renderer. I had this with a user of PurE2. The renderer in that image supports SNP, but the skin the user was using did not.

If I am right, I am not surprised that the skin does not deal with SNPs, why would it when the stock image does not?
 
I had the same issue when I tried the openatv image and had the same problem with picons.
 
OpenATV definitely have SNP. So likely mismatch between name of service and name of picon.
 
Ive taken a screen grab of the channel selection of the bouquet below (first 6 channels) and upload the picons for them.

#SERVICE 4097:0:1:84d0:a9b0:814d:0:0:0:0:http/user/pass/434:BBC One HD
#DESCRIPTION BBC One HD
#SERVICE 4097:0:1:84d1:a9b0:814d:0:0:0:0:http/user/pass/433:BBC Two HD
#DESCRIPTION BBC Two HD
#SERVICE 4097:0:1:84d2:a9b0:814d:0:0:0:0:http/user/pass/432:ITV HD
#DESCRIPTION ITV HD
#SERVICE 4097:0:1:84d3:a9b0:814d:0:0:0:0:http/user/pass/431:Channel 4 HD
#DESCRIPTION Channel 4 HD
#SERVICE 4097:0:1:84d4:a9b0:814d:0:0:0:0:http/user/pass/430:Channel 5 HD
#DESCRIPTION Channel 5 HD
#SERVICE 4097:0:1:84d5:a9b0:814d:0:0:0:0:http/user/pass/429:Sky1 HD
#DESCRIPTION Sky1 HD

1_0_1_283D_7FE_2_11A0000_0_0_0.webp

bbconehd.webp

bbctwohd.webp

itvhd.webp

channel4hd.webp

channel5hd.webp

sky1hd.webp
 
Service names and picon names are fine. What skin are you using and can it be downloaded? Please check the skin for what it uses to render the picons.
 
Service names and picon names are fine. What skin are you using and can it be downloaded? Please check the skin for what it uses to render the picons.

I'll take a look tomorrow night &#55357;&#56397;
 
Hi,
VTi also uses SNP BUT they use a different method to generate the filename. I complained about that when they "invented" it a few month after OpenViX but they were not very communicative.

Ralf
 
Hi,
I am not reading the VTi board anymore and also do not use their image. All I can say is that they supported their own SNP format in 2016 or so and they were not willing to change their naming.

Ralf
 
I believe the py file i attached in post 24 did have the mod for the snp taken from a post on Vuplus support forum but i did try it and didn't much difference at all.

Had this code added
Code:
import os, re, unicodedata

Code:
   if pngname == '': # SNP picon by channel name
                        serviceHandler = eServiceCenter.getInstance()
                        service = eServiceReference(s_name)
                        if service and service is not None:
                            info = serviceHandler.info(service)
                            if info and info is not None:
                                name = info.getName(service)
                                name = unicodedata.normalize('NFKD', unicode(name, 'utf_8', errors='ignore')).encode('ASCII', 'ignore')
                                name = re.sub('[^a-z0-9]', '', name.replace('&', 'and').replace('+', 'plus').replace('*', 'star').lower())
                                if len(name) > 0:
                                    pngname = self.findPicon(name)
                                    if not pngname and len(name) > 2 and name.endswith('hd'):
                                        pngname = self.findPicon(name[:-2])

This was added between
Code:
    if pngname == '':
                    pngname = self.findPicon(sname)
                    if pngname == '':
                        serviceHandler = eServiceCenter.getInstance()
                        service = eServiceReference(s_name)
                        if service and service is not None:
                            info = serviceHandler.info(service)
                            if info and info is not None:
                                service_name = info.getName(service).replace('\xc2\x86', '').replace('\xc2\x87', '').replace('/', '_')
                                pngname = self.findPicon(service_name)
and
Code:
  if pngname == '' and sname.startswith('4097_'):
                        pngname = self.findPicon(sname.replace('4097_', '1_', 1))
                    if pngname != '':
                        self.nameCache[sname] = pngname
 
Picons by name why dont they show up on open

Do we know for a definite that the skin you are using is using the image's picon renderer? You are going to be chasing ghosts if you don't establish this.


The 4097 start has no relevance to SNP. For SRP, we also need to cater for 5001 and 5002.That is why the other images treat everything in that segment as 1.


I know 100% ATV supports SNP. Their out-of-box skin MetrixHD uses a separate picon renderer, I submitted a pull request for it several years ago, it was merged.
 
Last edited:

OpenViX Feeds Status

Back
Top