예제 #1
0
def channel(channel_id: str):
    """Load stream for the required channel id"""
    log('Loading channel {}'.format(channel_id), LogLevel.INFO)

    stream = get_provider().get_stream_info(channel_id)
    if not stream:
        ok_dialog(localize(30900))
        return

    is_helper = inputstreamhelper.Helper(stream['manifest_type'],
                                         drm=stream['drm'])
    if not is_helper.check_inputstream():
        ok_dialog(localize(30901))
        return

    listitem = xbmcgui.ListItem(path=stream['path'])
    listitem.setMimeType(stream['mime_type'])
    listitem.setProperty('inputstream', 'inputstream.adaptive')
    listitem.setProperty('inputstream.adaptive.manifest_type',
                         stream['manifest_type'])
    listitem.setProperty('inputstream.adaptive.manifest_update_parameter',
                         'full')
    listitem.setProperty('inputstream.adaptive.license_type',
                         stream['license_type'])
    listitem.setProperty('inputstream.adaptive.license_key',
                         stream['license_key'])
    xbmcplugin.setResolvedUrl(plugin.handle, True, listitem=listitem)
예제 #2
0
    def load_hypervisors(self):
        """Load hypervisors as configured."""
        provider = get_provider(self.config['provider'])
        self.hypervisors = []
        for index, host in enumerate(self.config.get('hypervisors')):
            hypervisor = provider.Hypervisor(self.config, host, index + 1)
            self.hypervisors.append(hypervisor)

        # subset selection for conductors and routers: assign round robin
        num_hypervisors = len(self.hypervisors)
        if self.high_available:
            # specify the hypervisors for the conductor
            self.hypervisors_conductor = [
                self.hypervisors[i % num_hypervisors] for i in (0, 1)
            ]
            # specify the hypervisors for the headend
            self.hypervisors_headend = [
                self.hypervisors[i % num_hypervisors] for i in (2, 3)
            ]
        else:
            # specify the hypervisor for the conductor
            self.hypervisors_conductor = [
                self.hypervisors[0 % num_hypervisors]
            ]
            self.hypervisors_headend = [self.hypervisors[1 % num_hypervisors]]
예제 #3
0
    def load_hypervisors(self):
        """Load hypervisors as configured."""
        provider = get_provider(self.config['provider'])
        self.hypervisors = []
        for index, host in enumerate(self.config.get('hypervisors')):
            hypervisor = provider.Hypervisor(self.config, host, index + 1)
            self.hypervisors.append(hypervisor)

        # TODO: subset selection to be implemented
        # (round-robin, random, most resources, ...)
        # specify the hypervisors for the conductor
        self.hypervisors_conductor = self.hypervisors
        # specify the hypervisors for the headend
        self.hypervisors_headend = self.hypervisors
예제 #4
0
def run():
    """Run data generators"""
    log('Updating data...', LogLevel.INFO)
    provider = get_provider()

    filepath = os.path.join(xbmcvfs.translatePath(get_addon_profile()),
                            'playlist.m3u8')
    log(filepath, LogLevel.DEBUG)
    PlaylistGenerator(provider=provider).write(filepath=filepath)

    filepath = os.path.join(xbmcvfs.translatePath(get_addon_profile()),
                            'epg.xml')
    log(filepath, LogLevel.DEBUG)
    EPGGenerator(provider=provider).write(filepath=filepath)

    log('Channels and programs data updated', LogLevel.INFO)
예제 #5
0
def iptv_epg():
    """Return JSON-EPG formatted data for all live channel EPG data"""
    log('Loading EPG for IPTV Manager', LogLevel.INFO)
    port = int(plugin.args.get('port')[0])
    IPTVManager(port, get_provider()).send_epg()
예제 #6
0
def iptv_channels():
    """Return JSON-STREAMS formatted data for all live channels"""
    log('Loading channels for IPTV Manager', LogLevel.INFO)
    port = int(plugin.args.get('port')[0])
    IPTVManager(port, get_provider()).send_channels()