Solved: at least in my case but should be valid for all !
Context:
My STB plays SAT TV channels with #SERVICE starting with 1: and IPTV channels with #SERVICE starting with 4097:
Historical context:
When BH was created, only SAT TV channels exist and the convention of #SERVICE starting with 1: was taken to identify them together with SID, TSID, ONID received from the satellite and stored in the file lamedb.
In the same spirit, EPG data base is created for #SERVICE starting with 1: (and nothing else).
Creation of IPTV channels in bouquets:
The IPTV channel is usually of the form:
#SERVICE 4097:0:1:1067:0:0:0:0:0:0:http%3a//mystream/750.ts
where 1067 is just a sequence number in my list of IPTV channels.
As explained in many forums, there are 2 approaches to get EPG:
either you modify the SERVICE to introduce SID, TSID and ONID of the same channel on satellite
#SERVICE 4097:0:19:245B:440:1:C00000:0:0:0:http%3a//mystream/750.ts
or you create your own EPG with
<channel id="Rytec ID of the channel">1:0:1:1067:0:0:0:0:0:0:http%3a//dummy.com</channel>
Note: in this case, you may not use 4097: but only 1: (see historical context).
Well, after all this stuff ... EPG is still not working for IPTV channels.
The explanation is the following:
BH calls the functions of the component EpgList.py to process the EPG requests and that is the problem !
If the #SERVICE starts with 4097:, nothing will be found in the EPG data base as all references start with 1:.
The solution is to modify EpgList.py functions like the following (and this should be valid for all images!):
Original code for single EPG:
test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ]
self.list = self.queryEPG(test)
Note: a query on EPG data base is made for 1 "service"
Modified code for IPTV:
mywork=service.ref.toString()
if mywork.startswith("4097:"):
service2=mywork.replace("4097:","1:",1)
else:
service2=mywork
test = [ 'RIBDT', (service2, 0, -1, -1) ]
self.list = self.queryEPG(test)
Original code for multi EPG:
test = [ (service.ref.toString(), 0, stime) for service in services ]
self.list = self.queryEPG(test)
Note: a query on EPG data base is made for all services in "services"
Modified code for IPTV:
test=[]
for service in services:
mywork=service.ref.toString()
if mywork.startswith("4097:"):
service2=mywork.replace("4097:","1:",1)
else:
service2=mywork
test.append((service2, 0, stime))
test.insert(0, 'X0RIBDTCn')
self.list = self.queryEPG(test)
After modification, EpgList.py will be re-compiled automatically.
Enjoy !!!
Context:
My STB plays SAT TV channels with #SERVICE starting with 1: and IPTV channels with #SERVICE starting with 4097:
Historical context:
When BH was created, only SAT TV channels exist and the convention of #SERVICE starting with 1: was taken to identify them together with SID, TSID, ONID received from the satellite and stored in the file lamedb.
In the same spirit, EPG data base is created for #SERVICE starting with 1: (and nothing else).
Creation of IPTV channels in bouquets:
The IPTV channel is usually of the form:
#SERVICE 4097:0:1:1067:0:0:0:0:0:0:http%3a//mystream/750.ts
where 1067 is just a sequence number in my list of IPTV channels.
As explained in many forums, there are 2 approaches to get EPG:
either you modify the SERVICE to introduce SID, TSID and ONID of the same channel on satellite
#SERVICE 4097:0:19:245B:440:1:C00000:0:0:0:http%3a//mystream/750.ts
or you create your own EPG with
<channel id="Rytec ID of the channel">1:0:1:1067:0:0:0:0:0:0:http%3a//dummy.com</channel>
Note: in this case, you may not use 4097: but only 1: (see historical context).
Well, after all this stuff ... EPG is still not working for IPTV channels.
The explanation is the following:
BH calls the functions of the component EpgList.py to process the EPG requests and that is the problem !
If the #SERVICE starts with 4097:, nothing will be found in the EPG data base as all references start with 1:.
The solution is to modify EpgList.py functions like the following (and this should be valid for all images!):
Original code for single EPG:
test = [ 'RIBDT', (service.ref.toString(), 0, -1, -1) ]
self.list = self.queryEPG(test)
Note: a query on EPG data base is made for 1 "service"
Modified code for IPTV:
mywork=service.ref.toString()
if mywork.startswith("4097:"):
service2=mywork.replace("4097:","1:",1)
else:
service2=mywork
test = [ 'RIBDT', (service2, 0, -1, -1) ]
self.list = self.queryEPG(test)
Original code for multi EPG:
test = [ (service.ref.toString(), 0, stime) for service in services ]
self.list = self.queryEPG(test)
Note: a query on EPG data base is made for all services in "services"
Modified code for IPTV:
test=[]
for service in services:
mywork=service.ref.toString()
if mywork.startswith("4097:"):
service2=mywork.replace("4097:","1:",1)
else:
service2=mywork
test.append((service2, 0, stime))
test.insert(0, 'X0RIBDTCn')
self.list = self.queryEPG(test)
After modification, EpgList.py will be re-compiled automatically.
Enjoy !!!