Skip to content

Commit

Permalink
Make JSON-STREAMS group a list
Browse files Browse the repository at this point in the history
Just as the M3U8 standard allows multiple group names, JSON-STREAMS
should accept a list of groups.
  • Loading branch information
dagwieers committed Feb 3, 2021
1 parent 0fae37e commit f7e81d7
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
16 changes: 14 additions & 2 deletions resources/lib/modules/addon.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from __future__ import absolute_import, division, unicode_literals

import sys
import json
import logging
import os
Expand Down Expand Up @@ -164,9 +165,20 @@ def get_channels(self):
elif not channel.get('logo').startswith(('http://', 'https://', 'special://', 'resource://', '/')):
channel['logo'] = os.path.join(self.addon_path, channel.get('logo'))

# Add add-on name as group
# Ensure group is a set
if not channel.get('group'):
channel['group'] = kodiutils.addon_name(self.addon_obj)
channel['group'] = set()
# Accept string values (backward compatible)
# noqa: F821; pylint: disable=undefined-variable
elif isinstance(channel.get('group'), (str, bytes)) or (sys.version_info.major == 2 and isinstance(channel.get('group'), unicode)):
channel['group'] = set(channel.get('group').split(';'))
elif isinstance(channel.get('group'), list):
channel['group'] = set(list(channel.get('group')))
else:
_LOGGER.warning('Channel group is not a list: %s', channel)
channel['group'] = set()
# Add add-on name as group, if not already
channel['group'].add(kodiutils.addon_name(self.addon_obj))

channels.append(channel)

Expand Down
2 changes: 1 addition & 1 deletion resources/lib/modules/iptvsimple.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ def write_playlist(channels):
if channel.get('preset'):
m3u8_data += ' tvg-chno="{preset}"'.format(**channel)
if channel.get('group'):
m3u8_data += ' group-title="{group}"'.format(**channel)
m3u8_data += ' group-title="{groups}"'.format(groups=';'.join(channel.get('group')))
if channel.get('radio'):
m3u8_data += ' radio="true"'
m3u8_data += ' catchup="vod",{name}\n'.format(**channel)
Expand Down

0 comments on commit f7e81d7

Please sign in to comment.