Exemplo n.º 1
0
 def get_stream(self, id):
     self.get_settings()
     self.dman = DataHandle()
     url = mms_to_http(self.BASEURL %
                       (id, self.settings['connection_speed']))
     data = self.dman.get_data(url)
     url = mms_url(data)
     listitem = ListItem(self.CHANNELS[int(id) - 1][0], path=url)
     setResolvedUrl(self.hndl, self.success, listitem)
Exemplo n.º 2
0
 def get_stream(self, url):
     self.get_settings()
     self.dman = DataHandle()
     url = url % self.settings('connection_speed')
     url = mms_to_http( url )
     data = self.dman.get_data(url)
     url = mms_url(data)
     listitem = ListItem( url, path=url)
     print 'Play url: %s' % url
     setResolvedUrl(self.hndl, self.success, listitem)
Exemplo n.º 3
0
class Main:

    BASEURL = 'mms://straumv.nrk.no/nrk_tv_direkte_nrk%s_%s'
    CHANNELS = [('NRK', '1',
                 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk1_100x57.gif'),
                ('NRK2', '2',
                 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk2_100x57.gif'),
                ('NRK3', '3',
                 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk3_100x57.gif')]

    def __init__(self):

        key = Key(sys.argv[2])
        self.hndl = int(sys.argv[1])
        self.success = True

        if not key.id:
            self.parse_channels()
        else:
            self.get_stream(key.id)

    def get_stream(self, id):
        self.get_settings()
        self.dman = DataHandle()
        url = mms_to_http(self.BASEURL %
                          (id, self.settings['connection_speed']))
        data = self.dman.get_data(url)
        url = mms_url(data)
        listitem = ListItem(self.CHANNELS[int(id) - 1][0], path=url)
        setResolvedUrl(self.hndl, self.success, listitem)

    def get_settings(self):
        self.settings = PluginSettings()
        #Connection speed
        options = (
            'l',
            'm',
            'h',
        )
        index = 11
        self.settings.add('connection_speed', 'values', options, index)

    def parse_channels(self):
        for i in self.CHANNELS:
            self.add(i[0], i[1], img=i[2])
        endOfDirectory(self.hndl)

    def add(self,
            label,
            id,
            type='channel',
            prefix='kanalene',
            img='',
            icon='',
            isdir=False):
        url = Key.build_url(prefix, type=type, id=id)
        li = ListItem(label, iconImage=icon, thumbnailImage=img)
        li.setProperty('IsPlayable', 'true')
        ok = addDirectoryItem(self.hndl, url=url, listitem=li, isFolder=isdir)
        return ok
Exemplo n.º 4
0
 def get_stream(self, id):
     self.get_settings()
     self.dman = DataHandle()
     url = mms_to_http( self.BASEURL % (id, self.settings['connection_speed']) )
     data = self.dman.get_data(url)
     url = mms_url(data)
     listitem = ListItem( self.CHANNELS[int(id) - 1][0], path=url)
     setResolvedUrl(self.hndl, self.success, listitem)
Exemplo n.º 5
0
 def get_stream(self, url):
     self.get_settings()
     self.dman = DataHandle()
     url = url % self.settings("connection_speed")
     url = mms_to_http(url)
     data = self.dman.get_data(url)
     url = mms_url(data)
     listitem = ListItem(url, path=url)
     print "Play url: %s" % url
     setResolvedUrl(self.hndl, self.success, listitem)
Exemplo n.º 6
0
class Main:

    CHANNELS = [
        ("nrk tv direkte", "mms://straumv.nrk.no/nrk_tv_direkte_nrk1_%s"),
        ("nrk tv", "mms://straumV.nrk.no/nrk_tv_nrk1_%s"),
        ("nrk webvid 1", "mms://straumv.nrk.no/nrk_tv_webvid01_%s"),
    ]

    def __init__(self):

        key = Key(sys.argv[2])
        self.hndl = int(sys.argv[1])
        self.success = True

        if not key.url:
            self.parse_channels()
        else:
            self.get_stream(key.url)

    def get_stream(self, url):
        self.get_settings()
        self.dman = DataHandle()
        url = url % self.settings("connection_speed")
        url = mms_to_http(url)
        data = self.dman.get_data(url)
        url = mms_url(data)
        listitem = ListItem(url, path=url)
        print "Play url: %s" % url
        setResolvedUrl(self.hndl, self.success, listitem)

    def get_settings(self):
        self.settings = PluginSettings()
        # Connection speed
        options = ("l", "m", "h")
        index = 11
        self.settings.add("connection_speed", "values", options, index)

    def parse_channels(self):
        for i in self.CHANNELS:
            self.add(i[0], i[1])
        endOfDirectory(self.hndl)

    def add(self, label, url, type="channel", prefix="kanalene", img="", icon="", isdir=False):
        url = Key.build_url(prefix, type=type, url=url)
        li = ListItem(label, iconImage=icon, thumbnailImage=img)
        li.setProperty("IsPlayable", "true")
        ok = addDirectoryItem(self.hndl, url=url, listitem=li, isFolder=isdir)
        return ok
Exemplo n.º 7
0
class Main:

    CHANNELS = [
            ('nrk tv direkte', 'mms://straumv.nrk.no/nrk_tv_direkte_nrk1_%s'),
            ('nrk tv', 'mms://straumV.nrk.no/nrk_tv_nrk1_%s'),
            ('nrk webvid 1', 'mms://straumv.nrk.no/nrk_tv_webvid01_%s')
        ]
  
    
    def __init__(self):

        key = Key( sys.argv[2] )
        self.hndl = int(sys.argv[1])
        self.success = True
        
        if not key.url:
            self.parse_channels()
        else:
            self.get_stream(key.url)
            
    def get_stream(self, url):
        self.get_settings()
        self.dman = DataHandle()
        url = url % self.settings('connection_speed')
        url = mms_to_http( url )
        data = self.dman.get_data(url)
        url = mms_url(data)
        listitem = ListItem( url, path=url)
        print 'Play url: %s' % url
        setResolvedUrl(self.hndl, self.success, listitem)
        
    def get_settings(self):
        self.settings = PluginSettings()
        #Connection speed
        options = ( 'l', 'm', 'h', ); index = 11
        self.settings.add('connection_speed', 'values', options, index)
        
    def parse_channels(self):
        for i in self.CHANNELS:
            self.add(i[0], i[1])
        endOfDirectory(self.hndl)

    def add(self, label, url, type='channel', prefix='kanalene', img='', icon='', isdir=False):
        url = Key.build_url(prefix, type=type, url=url)
        li = ListItem(label, iconImage=icon, thumbnailImage=img)
        li.setProperty('IsPlayable', 'true')
        ok = addDirectoryItem(self.hndl, url=url, listitem=li, isFolder=isdir)
        return ok
Exemplo n.º 8
0
class Main:

    BASEURL = 'mms://straumv.nrk.no/nrk_tv_direkte_nrk%s_%s'
    CHANNELS = [
            ('NRK',  '1', 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk1_100x57.gif'),
            ('NRK2', '2', 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk2_100x57.gif'),
            ('NRK3', '3', 'http://fil.nrk.no/nett-tv/data/stillbilder/nrk3_100x57.gif')
        ]
  
    
    def __init__(self):

        key = Key( sys.argv[2] )
        self.hndl = int(sys.argv[1])
        self.success = True
        
        if not key.id:
            self.parse_channels()
        else:
            self.get_stream(key.id)
            
    def get_stream(self, id):
        self.get_settings()
        self.dman = DataHandle()
        url = mms_to_http( self.BASEURL % (id, self.settings['connection_speed']) )
        data = self.dman.get_data(url)
        url = mms_url(data)
        listitem = ListItem( self.CHANNELS[int(id) - 1][0], path=url)
        setResolvedUrl(self.hndl, self.success, listitem)
        
    def get_settings(self):
        self.settings = PluginSettings()
        #Connection speed
        options = ( 'l', 'm', 'h', ); index = 11
        self.settings.add('connection_speed', 'values', options, index)
        
    def parse_channels(self):
        for i in self.CHANNELS:
            self.add(i[0], i[1], img=i[2])
        endOfDirectory(self.hndl)

    def add(self, label, id, type='channel', prefix='kanalene', img='', icon='', isdir=False):
        url = Key.build_url(prefix, type=type, id=id)
        li = ListItem(label, iconImage=icon, thumbnailImage=img)
        li.setProperty('IsPlayable', 'true')
        ok = addDirectoryItem(self.hndl, url=url, listitem=li, isFolder=isdir)
        return ok
Exemplo n.º 9
0
 def __set_dataman(self, cache):
     self.dman = DataHandle(cache)
     self.dman.default_encoding = ENCODING
Exemplo n.º 10
0
class Api:
    def __set_dataman(self, cache):
        self.dman = DataHandle(cache)
        self.dman.default_encoding = ENCODING

    # - EOM -

    def __init__(self, speed, cache):
        self.__set_dataman(cache)
        self.speed = speed

    @staticmethod
    def _merge_playlists(cat, xml):
        mcount = 0
        icount = 0
        for i in xml:
            if i.key.type == PLAYLIST_VIGNETE:
                i.thumbnail = Plugin.image('news.png')
            elif i.key.type == PLAYLIST_ITEM:
                mcount -= 1
                try:
                    xml[icount].thumbnail = cat[mcount].thumbnail
                    xml[icount].plot = cat[mcount].plot
                except IndexError:
                    pass
            icount += 1
        return xml

    def _get_intro(self, id, arg=None):
        if True == True:

            if id == REGION:
                name = NEWS
                img = 'news.png'
            elif id == NEWS:
                name = NEWS
                img = 'news.png'
            elif id == SPORT:
                name = SPORT
                img = 'sport.png'
            elif id == SUPER:
                name = SUPER
                img = 'kids.png'
            elif id == NATURE:
                name = NATURE
                img = 'ntur.png'
            else:
                name = NEWS
                img = 'news.png'

            title = '%s %s' % (name, 'hovedvignett')
            img = Plugin.image(img)
            key = Key('new', type=PLAYLIST_VIGNETE)
            istart = MediaObj(title=title, thumbnail=img, key=key)
            istart.isPlayable = True
            istart.isFolder = False
            istart.url = Plugin.videopath(name + '_intro_main.avi')

            title = '%s %s' % (name, 'vignett')
            key = Key('new', type=PLAYLIST_VIGNETE)
            imid = MediaObj(title=title, thumbnail=img, key=key)
            imid.isPlayable = True
            imid.isFolder = False
            imid.url = Plugin.videopath(name + '_intro.avi')

            return istart, imid, istart

        else:
            url = uri.playlist(loop=id, type=arg)
            data = self.dman.get_data(url)
            if data:
                tmp_list = extract.playlist(data)
                return tmp_list[0], tmp_list[2], tmp_list[-1]

    def get_all_shows(self):
        url = uri.live_content(BY_CHAR, '@')
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)

    def get_live_shows(self):
        url = uri.live_content()
        data = self.dman.get_data(url, cache=False)
        shows = extract.catalog(data, parent=LIVE, ext=extract.ext_live_show)
        return shows

    def get_shows_by_theme(self, id):
        url = uri.live_content(BY_THEME, id)
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)

    def get_shows_by_character(self, char):
        url = uri.live_content(BY_CHAR, char)
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)

    def get_show(self, id, type):
        url = uri.menu_fragment(id, type)
        data = self.dman.get_data(url)
        return extract.show(data)

    def get_most_viewed_shows(self, days):
        url = uri.most_viewed(days)
        data = self.dman.get_data(url)
        return extract.catalog(data, ext=extract.ext_top_shows)

    def get_show_clip(self, id, parent=None, abs=True):
        url = uri.media_xml(id, self.speed)
        data = self.dman.get_data(url, persistent=True)
        item = extract.show_clip(data)

        if abs == True:
            url = uri.mms_to_http(item.url)
            data = self.dman.get_data(url)
            item.url = extract.mms_url(data)
        item.id = id

        return item

    def get_search_result(self, sstr, page):
        url = uri.search(search=sstr, page=page)
        data = self.dman.get_data(url)
        if data:
            return extract.search(data)

    def get_viewstate(self, ident):
        url = uri.subpath(ident)
        data = self.dman.get_data(url)
        if data:
            return extract.viewstate(data)

    def get_playlist_item(self, id):
        url = uri.playlist(story=id)
        data = self.dman.get_data(url)
        if data:
            return extract.playlist(data)[0]

    def get_playlist(self, ident, type=None):

        if ident == 'distrikt':
            type = region_abbr[type]

        headers = uri.xmsheader
        headers.update(uri.baseheaders)
        viewstate = self.get_viewstate(ident)

        if not viewstate:
            return

        form = uri.build_form(ident, viewstate, cat=type)
        url = uri.subpath(ident)
        data = self.dman.get_data(url, 'POST', form, headers)
        pcat = extract.catalog(data, type)
        pcat.reverse()
        url = uri.playlist(loop=ident, type=type)
        data = self.dman.get_data(url)
        pxml = extract.playlist(data, vignetes=False)
        siv, miv, eiv = self._get_intro(ident, type)
        pxml = self.inject_vignetes(pxml, siv, miv, eiv)

        return self._merge_playlists(pcat, pxml)

    def get_playlist_from_view(self, id, view, subcat):
        headers = uri.xmsheader
        headers.update(uri.baseheaders)

        vstate = self.get_viewstate(id)
        form = uri.build_form(id, vstate, view, subcat)
        url = uri.subpath(id)
        data = self.dman.get_data(url, 'POST', form, headers)

        if view == PROGRAM:
            return extract.show(data)
        else:
            siv, miv, eiv = self._get_intro(id, subcat)
            catalog = extract.catalog(data)
            catalog = self.inject_vignetes(catalog, siv, miv, eiv)
            return catalog

    def inject_vignetes(self, catalog, siv, miv, eiv):
        catalog.insert(0, siv)
        count = 0
        total = len(catalog)

        for i in range(0, total):
            count += 1
            if count % 2 == 0:
                if count < total - 1:
                    catalog.insert(count, miv)
        catalog.append(eiv)

        return catalog

    def get_subtitles(self, id):
        url = uri.super_xml(id)
        data = self.dman.get_data(url)
        subs = extract.subtitles(data)
        subs = convert.sub_to_srt(subs)
        return subs

    def get_video_id(self, index_id):
        url = uri.subpath(SHOW_CLIP_INDEX, str(index_id))
        heads = uri.cookieheader
        heads.update(uri.baseheaders)
        data = self.dman.get_data(url, headers=headers)
        return extract.video_id(data)

    # - EOM -

    def get_path(self, id, type):
        url = uri.path_fragment(id, type)
        data = self.dman.get_data(url)
        path = extract.current_path(data)
        print 'Current path: %s' % path.encode('ascii', 'replace')
        return path

    def get_recommended_shows(self):
        url = uri.subpath()
        heads = uri.cookieheader
        heads.update(uri.baseheaders)
        data = self.dman.get_data(url, headers=heads)
        return extract.recommended(data)

    def get_articles(self):
        url = uri.subpath()
        heads = uri.cookieheader
        heads.update(uri.baseheaders)
        data = self.dman.get_data(url, headers=heads)
        return extract.articles(data)
Exemplo n.º 11
0
 def __set_dataman(self, cache):
     self.dman = DataHandle(cache)
     self.dman.default_encoding = ENCODING
Exemplo n.º 12
0
class Api:
    
    def __set_dataman(self, cache):
        self.dman = DataHandle(cache)
        self.dman.default_encoding = ENCODING
    # - EOM -
    
    def __init__(self, speed, cache):
        self.__set_dataman(cache)
        self.speed = speed

    @staticmethod
    def _merge_playlists(cat, xml):
        mcount = 0
        icount = 0
        for i in xml:
            if i.key.type == PLAYLIST_VIGNETE:
                i.thumbnail = Plugin.image('news.png')  
            elif i.key.type == PLAYLIST_ITEM:
                mcount -= 1
                try:
                    xml[icount].thumbnail = cat[mcount].thumbnail
                    xml[icount].plot = cat[mcount].plot
                except IndexError:
                    pass
            icount += 1
        return xml
    
    
    def _get_intro(self, id, arg=None):
        if True == True:
        
            if   id == REGION: name = NEWS;   img = 'news.png'
            elif id == NEWS:   name = NEWS;   img = 'news.png'
            elif id == SPORT:  name = SPORT;  img = 'sport.png'
            elif id == SUPER:  name = SUPER;  img = 'kids.png'
            elif id == NATURE: name = NATURE; img = 'ntur.png'
            else: 
                name = NEWS; img = 'news.png'
                
            title = '%s %s' % (name, 'hovedvignett')
            img = Plugin.image(img)
            key = Key('new', type=PLAYLIST_VIGNETE)
            istart = MediaObj(title=title, thumbnail=img, key=key)
            istart.isPlayable = True; istart.isFolder = False
            istart.url = Plugin.videopath(name + '_intro_main.avi')
            
            title = '%s %s' % (name, 'vignett')
            key = Key('new', type=PLAYLIST_VIGNETE)
            imid = MediaObj(title=title, thumbnail=img, key=key)
            imid.isPlayable = True; imid.isFolder = False
            imid.url = Plugin.videopath(name + '_intro.avi')
            
            return istart, imid, istart
            
        else:    
            url = uri.playlist(loop=id, type=arg)
            data = self.dman.get_data(url)
            if data:
                tmp_list = extract.playlist(data)
                return tmp_list[0], tmp_list[2], tmp_list[-1]
                
                
    def get_all_shows(self):
        url = uri.live_content(BY_CHAR, '@')
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)
    
    
    def get_live_shows(self):
        url = uri.live_content()
        data = self.dman.get_data(url, cache=False)
        shows = extract.catalog(data, parent=LIVE, ext=extract.ext_live_show)
        return shows
    

        
    def get_shows_by_theme(self, id):
        url = uri.live_content(BY_THEME, id)
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)
        
        
    def get_shows_by_character(self, char):
        url = uri.live_content(BY_CHAR, char)
        data = self.dman.get_data(url)
        if data:
            return extract.catalog(data)
        
    
    def get_show(self, id, type):
        url  = uri.menu_fragment(id, type)
        data = self.dman.get_data(url)
        return extract.show(data)
    
    
    def get_most_viewed_shows(self, days):
        url = uri.most_viewed(days)
        data = self.dman.get_data(url)
        return extract.catalog(data, ext=extract.ext_top_shows)
        
        
    def get_show_clip(self, id, parent=None, abs=True):
        url  = uri.media_xml(id, self.speed)
        data = self.dman.get_data(url, persistent = True)      
        item = extract.show_clip(data)
        
        if abs == True:
            url  = uri.mms_to_http(item.url)
            data = self.dman.get_data(url)
            item.url = extract.mms_url(data)
        item.id = id
        
        return item

        
        
    def get_search_result(self, sstr, page):
        url = uri.search(search=sstr, page=page)
        data = self.dman.get_data(url)
        if data:
            return extract.search(data)
        
        
    def get_viewstate(self, ident):
        url = uri.subpath(ident)
        data = self.dman.get_data(url)
        if data:
            return extract.viewstate(data)
        
    
    def get_playlist_item(self, id):
        url = uri.playlist(story=id)
        data = self.dman.get_data(url)
        if data:
            return extract.playlist(data)[0]
            
            
    def get_playlist(self, ident, type=None):
    
        if ident == 'distrikt':
            type = region_abbr[type]
            
        headers   = uri.xmsheader; headers.update(uri.baseheaders)
        viewstate = self.get_viewstate(ident)
        
        if not viewstate:
            return
            
        form = uri.build_form(ident, viewstate, cat=type)
        url  = uri.subpath(ident)
        data = self.dman.get_data(url, 'POST', form, headers)
        pcat = extract.catalog(data, type); pcat.reverse()
        url  = uri.playlist(loop=ident, type=type)
        data = self.dman.get_data(url)
        pxml = extract.playlist(data, vignetes=False)
        siv, miv, eiv = self._get_intro(ident, type)
        pxml = self.inject_vignetes(pxml, siv, miv, eiv)
        
        return self._merge_playlists(pcat, pxml)
        
        
    def get_playlist_from_view(self, id, view, subcat):
        headers = uri.xmsheader
        headers.update(uri.baseheaders)
        
        vstate = self.get_viewstate(id)
        form   = uri.build_form(id, vstate, view, subcat)
        url    = uri.subpath(id)
        data   = self.dman.get_data(url, 'POST', form, headers)
        
        if view == PROGRAM:
            return extract.show(data)
        else:
            siv, miv, eiv = self._get_intro(id, subcat)
            catalog = extract.catalog(data)
            catalog = self.inject_vignetes(catalog, siv, miv, eiv)
            return catalog   
           
           
    def inject_vignetes(self, catalog, siv, miv, eiv):
        catalog.insert(0, siv); 
        count = 0; total = len(catalog)
        
        for i in range(0, total):
            count += 1
            if count % 2 == 0: 
                if count < total - 1:
                    catalog.insert(count, miv)
        catalog.append(eiv)
        
        return catalog
        
        
    def get_subtitles(self, id):
        url  = uri.super_xml(id)
        data = self.dman.get_data(url)
        subs = extract.subtitles(data)
        subs = convert.sub_to_srt(subs)
        return subs
    
    
    def get_video_id(self, index_id):
        url   = uri.subpath(SHOW_CLIP_INDEX, str(index_id))
        heads = uri.cookieheader; heads.update(uri.baseheaders)
        data  = self.dman.get_data(url, headers=headers)
        return extract.video_id(data)
    # - EOM -
        
        
    def get_path(self, id, type):
        url  = uri.path_fragment(id, type)
        data = self.dman.get_data(url)
        path = extract.current_path(data)
        print 'Current path: %s' % path.encode('ascii', 'replace')
        return path
 
    
    def get_recommended_shows(self):    
        url   = uri.subpath()
        heads = uri.cookieheader; heads.update(uri.baseheaders)
        data  = self.dman.get_data(url, headers=heads)
        return extract.recommended(data)
    
    def get_articles(self):    
        url   = uri.subpath()
        heads = uri.cookieheader; heads.update(uri.baseheaders)
        data  = self.dman.get_data(url, headers=heads)
        return extract.articles(data)