New XML Protocol & Channel Data Inconsistencies

Started by DeltaMikeCharlie, February 19, 2018, 02:30:48 PM

Previous topic - Next topic

DeltaMikeCharlie

I have observed an inconsistency between the channel data returned from a "regions/x/channels" request and a "shows" request.

Using "9Go!" in Sydney as an example, the channel data from the "region" contains 2 separate LCNs and 2 separate sets of DVB triplets.

<?xml version="1.0"?>
<regions page="1" rows_per_page="25" total_rows="25">
<region id="1" name="NSW - Sydney" city="Sydney" state="New South Wales" country="Australia" timezone="Australia/Sydney" />
--SNIP--
<channel id="2393" name="9Go!" name_short="9Go!" network_id="6" region_id="1" is_hd="0" lcns="93,99" region_name="NSW - Sydney" network_name="Nine" is_hidden="0" icon_src="http://images.icetv.com.au/channels/go-v2.png" icon_width="0" icon_height="0">
  <dvb original_network_id="4114" transport_stream_id="1056" service_id="1059" />
  <dvb original_network_id="4114" transport_stream_id="1056" service_id="1064" />
</channel>
--SNIP--
</regions>


However, the channel data that precedes a listing of "shows" contains only a single LCN and 2 duplicated DVB triplets.

<shows page="1" rows_per_page="4214" total_rows="4214" last_update_time="1459048773">
--SNIP--
<channel id="2393">
  <display-name lang="en">9Go!</display-name>
  <dvb original_network_id="4114" transport_stream_id="1056" service_id="1059" />
  <dvb original_network_id="4114" transport_stream_id="1056" service_id="1059" />

  <lcn>99</lcn>
  <icon src="http://images.icetv.com.au/channels/go-v2.png" width="0" height="0" />
  <url></url>
</channel>
<show id="125015052" series_id="40967" episode_id="0" start="2016-03-26T11:30:00+00:00" stop="2016-03-26T13:55:00+00:00" channel_id="2620" part_of_series="false">
--SNIP--
</shows>


This also occurs with "ONE", "9 Sydney" and "ABC" in Sydney.

Strangely, the duplicated triplets issue does not occur with the "shows" when using JSON, but the second LCN is still missing.

--SNIP-
{
    "id": "2393",
    "name": "9Go!",
    "url": "",
    "lcn": "99",
    "dvb_triplets": [
      {
        "original_network_id": "4114",
        "transport_stream_id": "1056",
        "service_id": "1059",
        "lcn": "99",
        "frequency": "0"
      }
    ],
    "icon": {
      "src": "http://images.icetv.com.au/channels/go-v2.png",
      "width": "0",
      "height": "0"
    }
  },
--SNIP--


JSON formatted data for "/regions/x/channels" is also fine.

Also, some channels provided in the "shows" response contain duplicated DVB triplets as well as triplets that are not mentioned in the "regions/x/channels" response.

(regions/channel)
<channel id="100" name="ABC NEWS" name_short="ABC NEWS" network_id="2" region_id="1" is_hd="0" lcns="24" region_name="NSW - Sydney" network_name="ABC" is_hidden="0" icon_src="http://images.icetv.com.au/channels/abc-news-v1.png" icon_width="0" icon_height="0">
  <dvb original_network_id="4112" transport_stream_id="545" service_id="544" />
</channel>


(shows)
<channel id="100">
  <display-name lang="en">ABC News 24</display-name>
  <dvb original_network_id="4112" transport_stream_id="529" service_id="528" />
  <dvb original_network_id="4112" transport_stream_id="561" service_id="560" />
  <dvb original_network_id="4112" transport_stream_id="547" service_id="672" />
  <dvb original_network_id="4112" transport_stream_id="545" service_id="544" />
  <dvb original_network_id="4112" transport_stream_id="625" service_id="624" />
  <dvb original_network_id="4112" transport_stream_id="627" service_id="656" />
  <dvb original_network_id="4112" transport_stream_id="563" service_id="688" />
  <dvb original_network_id="4112" transport_stream_id="545" service_id="544" />
  <lcn>24</lcn>
  <icon src="http://images.icetv.com.au/channels/abc-news-24-v2.png" width="0" height="0" />
  <url></url>
</channel>


I'm assuming that "regions/x/channels" is the authoritative data set and that the channels data in "shows" should be discarded.

Daniel Hall at IceTV

There are two things happening here.

The first is that in the shows node the channel/lcn list will be filtered by your preferences on the website, your account only has LCN 99 selected for 9GO so this is all you will see in the channel list under shows. It does however look like you are getting the triplets for LCN 99 twice in that document which would be a bug.

The regions/x/channels request is all channels and mappings in a region but is not filtered by your user settings on the IceTV website.
Regards,

Daniel.
CTO.

DeltaMikeCharlie

Thanks Daniel.  That makes perfect sense.

Is there any way to override the channels provided in the EPG data?

The channel filtering in preferences is global, that is, they apply to all of my devices.  Due to a buffer bug in the Topfield firmware, the number of channels needs to be restricted to avoid crashes.  However, other XML-based devices without firmware issues can safely process all of the EPG data.  The weakest device cripples all.

DeltaMikeCharlie

#3
As a stab in the dark, I tried to explicitly request EPG data for a channel that was excluded in my preferences using the "&channel_id=xxxx" parameter in my request.  Unfortunately, I received an empty response.

<?xml version="1.0"?>
<shows page="1" rows_per_page="0" total_rows="0" last_update_time="1519067101" />


Would it be possible to add an "ignore_ch_prefs=1" (or similar) parameter to the EPG request?