I am coming from the Enigma2-world (read E2 i.e. Dreambox, Vu+ and similar STBs for those who don't know what it means) and just started out with Kodi on my brand new HTPC. I am mostly interested in IPTV but I might add a SAT-card later on to my set-up.
After gradually learning (and I'm still learning) how things work with Kodi, I came to realize that many things I took for granted with E2 are not so straight-forward with IPTV and Kodi (although perhaps Kodi, PVR and SAT/DVB might be more mature?). In e2, logos (picons for e2) are normally named using the ServiceReference for a channel. For instance the ServiceReference for Rai 1 is (or used to be?) 1:0:1: D49:1450:13E:820000:0:0:0: and when you made a logo/picon you would replace the colons with an underscore and rename it to 1_0_1_D49_1450_13E_820000_0_0_0 and then add the png-suffix (i.e. 1_0_1_D49_1450_13E_820000_0_0_0.png). In this way, E2 (or a plugin), using its internal lamedb-database, could identify the right logo to use for the corresponding channel. The problem with this system is/was when a channel chang(ed) a frequency, everything got screwed up and you had to correct the name of the logo-file by updating it with its new ServiceReference. One would say it would be much better to use the channel-name when naming the logo but one of the problems with this approach is that many authors/designers came up with their own names, for instance TV3 could become TV 3 or TV three. Another difficulty with this approach is character-encoding - some characters are not permitted in systems not conforming to UTF-8 and other related encoding-problems.
Another major nuisance with IPTV is the lack of EPG! I got fed up with this omission, so in these days I have begun programming my own utility (sort of a m3u-editor) to modify a "poor" and "information-lacking" m3u-file into a more complete one which will also permit me to grab EPG from a well established e2-EPG provider, namely Rytec and to identify correct logos/picons to use. Also in this case, I noted that there are differences in identifying a channel. Rytec is identifying a channel (for instance B4U Movies) by assigning the <channel id> field (a standard field in the XMLTV-format) to a channel-identification as follows: B4UMovies.uk. Here are some more examples:
PHP Code:
<channel id="B4UMusic.uk">1:0:1:CBA7:8FE:2:11A0000:0:0:0:</channel> <!-- B4U Music -->
<channel id="Babestation.uk">1:0:1:D7A7:900:2:11A0000:0:0:0:</channel> <!-- Babestation -->
<channel id="BabyTV.uk">1:0:1:15BC:7ED:2:11A0000:0:0:0:</channel> <!-- BabyTV -->
As to logos, there is another initiative, involving e2 and Kodi, namely picons-source which can be found on
Github . They are trying to share logos and make easy lookup of them using a cross-table (see
here). This is an example:
PHP Code:
15BE_7ED_2_11A0000=tv/skylivingplus1-gbr
52D_7ED_2_11A0000=tv/skysportsnewshq-gbr
1204_7E7_2_11A0000=tv/skysports2-gbr
And now we have this new TV channel logo database for Kodi...
I am so close to screaming out: WE NEED A STANDARD! Call it a protocol or whatever. Platforms which earlier were separate are now becoming unified (e2, Kodi, IPTV among others) in certain aspects and all need to retrieve and look up the same information but it is so darn difficult due to the fact that there are no standards, no naming-convention and so forth. What a mess!
For me, as a developer, who needs to obtain information, meta-data (or whatever) without a search-critera, which is common among the different platforms, makes things difficult. But also an end-user would benefit from a "standard", for instance the user could receive a proper m3u-file from an IPTV-provider which would permit obtaining logos and EPG without much problems. This could be done because the IPTV provider could use tools that are producing files adhering to standards. I could go on......
Now, don't get me wrong
I like this initiative (and I would very much like be part of it and helping out) but I'd like to see some more things implemented from the very beginning which could help to resolve some of the problems and the chaos I mentioned above. I would suggest some more fields in the database:
1)
strChannelNameConcise (to be following the same format as the Picons-source initiative. Further information can be found
here. I am unsure if a script can be written to automatically create this format from the information you get by scraping Lyngsat. The "srindex" from Picons-source could every now and then be imported and transformed into as a separate (cross-)table to the Logo database and would serve two purposes: look up the classic e2 ServiceReference and to fill in missing logo-entries in the Logo database. The latter should be possible although it may require some studying of the sources of the Picons-source project)
2)
strChannelID (this would be based on the channelID-format used by Rytec and mentioned by me above i.e. "BabyTV.uk". Having these entries in the Logo database would make things much easier to obtain EPG-information from a reliable and updated EPG-provider such as Rytec. This field could occasionally be updated by consulting the Rytec-data, of which I gave an example above, by querying the ServiceReference which can be obtained from the "srindex" I mentioned above in regard to strChannelNameConcise-field.)
3)
strDisplayName This field could be used to show the channel-name with correct character-encoding. For instance the channel TV 3 Latvija should probably be displayed as TV3 Латвия (на лат.). Unsure where this information can be obtained but they are surely present in Rytec resources. I guess this scenario is true for other languages as well such as Japanese and Chinese.)
I would have some suggestions also in regard to the APIs but I will write that in a separate post later in which I will also mention some encoding issues (as already mentioned by others). For instance, there are Swedish TV channels where certain letters such as ÖÅÄ are being removed and not shown.
This project you started could become a resource/reference for obtaining not only logos but also:
-
providing resources to get EPG, EDIT: providing ChannelID used by Rytec which would permit grabbing EPG. Of course, TheLogoDB would not store any EPG-data.
- to help users/developers of different platforms to obtain data,
- to write universal tools
- avoid multiple resources
and so forth.....
I would love to hear your opinions. Thanks.