diff --git a/origin/origin_channels.py b/origin/origin_channels.py index 919e50e..e29bfec 100644 --- a/origin/origin_channels.py +++ b/origin/origin_channels.py @@ -6,30 +6,21 @@ class OriginChannels(): self.fhdhr = fhdhr self.origin = origin - """ - { - 'name': '23 ABC (KERO)', - 'logo': 'https://scripps.com/wp-content/uploads/2019/01/local_media_23_abc.png', - 'url': 'https://content.uplynk.com/channel/ff809e6d9ec34109abfb333f0d4444b5.m3u8', - 'category': 'Local', - 'language': [{'code': 'eng', 'name': 'English'}], - 'country': {'code': 'us', 'name': 'United States'}, - 'tvg': {'id': None, 'name': None, 'url': None}} - """ + self.unfiltered_chan_json = None + self.filtered_chan_list = None def get_channels(self): channel_list = [] self.fhdhr.logger.info("Pulling Unfiltered Channels: %s" % self.origin.channels_json_url) - urlopn = self.fhdhr.web.session.get(self.origin.channels_json_url) - unfiltered_chan_json = urlopn.json() - self.fhdhr.logger.info("Found %s Total Channels" % len(unfiltered_chan_json)) + self.unfiltered_chan_json = self.get_unfiltered_chan_json() + self.fhdhr.logger.info("Found %s Total Channels" % len(self.unfiltered_chan_json)) - filtered_chan_list = self.filterlist(unfiltered_chan_json) - self.fhdhr.logger.info("Found %s Channels after applying filters." % len(filtered_chan_list)) + self.filtered_chan_list = self.filterlist() + self.fhdhr.logger.info("Found %s Channels after applying filters." % len(self.filtered_chan_list)) - for channel_dict in filtered_chan_list: + for channel_dict in self.filtered_chan_list: clean_station_item = { "name": channel_dict["name"], "id": channel_dict["name"], @@ -39,9 +30,23 @@ class OriginChannels(): return channel_list - def filterlist(self, unfiltered_chan_json): + def get_channel_stream(self, chandict): + if not self.filtered_chan_list: + self.filtered_chan_list = self.filterlist() + streamdict = self.get_channel_dict(self.filtered_chan_list, "name", chandict["origin_name"]) + streamurl = streamdict["url"] + return streamurl + + def get_unfiltered_chan_json(self): + urlopn = self.fhdhr.web.session.get(self.origin.channels_json_url) + return urlopn.json() + + def filterlist(self): + if not self.unfiltered_chan_json: + self.unfiltered_chan_json = self.get_unfiltered_chan_json() + filtered_chan_list = [] - for channels_item in unfiltered_chan_json: + for channels_item in self.unfiltered_chan_json: filters_passed = [] for filter_key in list(self.origin.filter_dict.keys()): @@ -84,12 +89,5 @@ class OriginChannels(): return filtered_chan_list - def get_channel_stream(self, chandict): - urlopn = self.fhdhr.web.session.get(self.origin.channels_json_url) - chan_json = urlopn.json() - streamdict = self.get_channel_dict(chan_json, "name", chandict["origin_name"]) - streamurl = streamdict["url"] - return streamurl - def get_channel_dict(self, chanlist, keyfind, valfind): return next(item for item in chanlist if item[keyfind] == valfind) or None