Beispiel #1
0
def list(modes, defaultMode, *playModes):
    if playModes:  # must contain at least one item
        params = get_params()
        mode = params.get('mode', defaultMode)
        fn = modes.get(mode, None)
        if fn:
            res = fn()
            if mode in playModes:
                if res is None:
                    dialog = xbmcgui.Dialog()
                    title = xbmcaddon.Addon().getAddonInfo('name')
                    text = translation(31043)
                    dialog.ok(title, text)
                    return None
                else:
                    libmediathek3.play(res,
                                       download_dir=params.get(
                                           'download_dir', None))
            else:
                if not (res is None):
                    addEntries(res)
                    endOfDirectory()
            return True  # OK
    raise NotImplementedError()
Beispiel #2
0
def addEntries(l):
    lists = []
    doneList = []

    for d in l:
        if str(d) in doneList:  #primitive methode to filter duplicated entries
            continue
        doneList.append(str(d))

        if '_overridepath' in d:
            u = d['_overridepath']
        else:
            u = _buildUri(d)
        newd = {}
        for key in d:
            if key.startswith('_'):
                if isinstance(d[key], unicode):
                    d[key] = d[key].encode('utf-8', 'ignore')
                newd[key[1:]] = d[key]
            elif isinstance(d[key], unicode):
                newd[key] = d[key].encode('utf-8', 'ignore')
            else:
                newd[key] = d[key]
        d = newd

        if 'type' in d and d['type'] == 'nextPage':
            d['name'] = translation(31040)
            if not 'mode' in d:
                d['mode'] = get_params()['mode']
        if isinstance(d["name"], unicode):
            d["name"] = d["name"].encode('utf-8')
        d["name"] = clearString(d["name"])
        if 'airedISO8601' in d or 'airedISO8601A' in d:
            d['aired'], d['airedtime'] = _airedISO8601(d)

        if 'type' in d and d['type'] == 'date' and 'airedtime' in d:
            d["name"] = '(' + str(d["airedtime"]) + ') ' + d["name"]
        elif 'type' in d and d['type'] == 'date' and 'time' in d:
            d["name"] = '(' + str(d["date"]) + ') ' + d["name"]

        ilabels = {
            "Title": clearString(d.get('name', '')),
            "Plot": clearString(d.get('plot', '')),
            "Plotoutline": clearString(d.get('plot', '')),
            "Duration": d.get('duration', ''),
            "Mpaa": d.get('mpaa', ''),
            "Aired": d.get('aired', ''),
            "Studio": d.get('channel', ''),
        }
        if 'epoch' in d:
            ilabels['aired'] = time.strftime("%Y-%m-%d",
                                             time.gmtime(float(d['epoch'])))
        if 'episode' in d:
            ilabels['episode'] = d['episode']
        if 'season' in d:
            ilabels['season'] = d['season']
        if 'plot' in d:
            ilabels['plot'] = d['plot']
            ilabels['plotoutline'] = d['plot']
        if 'plotoutline' in d:
            ilabels['plotoutline'] = d['plotoutline']
        if 'tvshowtitle' in d:
            ilabels['tvshowtitle'] = d['tvshowtitle']
            #ilabels['tagline'] = d['tvshowtitle']
            #ilabels['album'] = d['tvshowtitle']
        if 'rating' in d:
            ilabels['rating'] = d['rating']
        if 'type' in d and d['type'] != 'nextPage':
            if d['type'] == 'video' or d['type'] == 'live' or d[
                    'type'] == 'date' or d['type'] == 'clip':
                ilabels['mediatype'] = 'video'
            elif d['type'] == 'shows' or d['type'] == 'season':
                ilabels['mediatype'] = 'season'
            elif d['type'] == 'episode':
                ilabels['mediatype'] = 'episode'
            else:
                ilabels['mediatype'] = 'video'

        ok = True
        liz = xbmcgui.ListItem(clearString(d.get('name', '')))
        if d['type'] == 'audio':
            liz.setInfo(type="music", infoLabels=ilabels)
        else:
            liz.setInfo(type="Video", infoLabels=ilabels)
        liz.addStreamInfo('subtitle', {'language': 'deu'})
        art = {}
        art['thumb'] = d.get('thumb')
        art['landscape'] = d.get('thumb')
        art['poster'] = d.get('thumb')
        art['fanart'] = d.get('fanart', d.get('thumb', fanart))
        art['icon'] = d.get('channelLogo', '')
        liz.setArt(art)

        if 'customprops' in d:
            for prop in d['customprops']:
                liz.setProperty(prop, d['customprops'][prop])

        if d.get('type',
                 None) == 'video' or d.get('type', None) == 'live' or d.get(
                     'type',
                     None) == 'date' or d.get('type', None) == 'clip' or d.get(
                         'type', None) == 'episode' or d.get(
                             'type', None) == 'audio' or d.get(
                                 'type', None) == 'sport':
            #xbmcplugin.setContent( handle=int( sys.argv[ 1 ] ), content="episodes" )
            liz.setProperty('IsPlayable', 'true')
            lists.append([u, liz, False])
        else:
            lists.append([u, liz, True])

    if len(l) > 0:
        type = l[0]['_type']
        if type == 'video' or type == 'live' or type == 'date' or type == 'clip' or type == 'episode':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content="episodes")
        elif type == 'shows' or type == 'season':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content="tvshows")
        elif type == 'sport':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content="sport")
        else:
            xbmcplugin.setContent(handle=int(sys.argv[1]), content="files")

    xbmcplugin.addDirectoryItems(int(sys.argv[1]), lists)
Beispiel #3
0
def addEntries(l):
    lists = []
    doneList = []

    download_dir = getSetting('download_dir')

    for d in l:
        if str(d) in doneList:  #primitive methode to filter duplicated entries
            continue
        doneList.append(str(d))

        if '_overridepath' in d:
            u = d['_overridepath']
        else:
            u = _buildUri(d)
        newd = {}
        for key in d:
            if sys.version_info[0] < 3:  # for Python 2
                if isinstance(d[key], unicode):
                    d[key] = d[key].encode('utf-8', 'ignore')
            if key.startswith('_'):
                newd[key[1:]] = d[key]
            else:
                newd[key] = d[key]
        d = newd

        if 'type' in d and d['type'] == 'nextPage':
            d['name'] = translation(31040)
            if not 'mode' in d:
                d['mode'] = get_params()['mode']
        if sys.version_info[0] < 3:  # for Python 2
            if isinstance(d['name'], unicode):
                d['name'] = d['name'].encode('utf-8')
        d['name'] = clearString(d['name'])
        if 'airedISO8601' in d:
            d['aired'], d['airedtime'] = _airedISO8601(d)

        if d.get('type', None) == 'date' and d.get('airedtime', None):
            d['name'] = '[COLOR orange]' + str(
                d['airedtime']) + '[/COLOR]  ' + d['name']

        ilabels = {
            'Title': clearString(d.get('name', '')),
            'Plot': clearString(d.get('plot', '')),
            'Plotoutline': clearString(d.get('plot', '')),
            'Duration': d.get('duration', ''),
            'Mpaa': d.get('mpaa', ''),
            'Aired': d.get('aired', ''),
            'Studio': d.get('channel', ''),
        }
        if 'epoch' in d:
            ilabels['aired'] = time.strftime('%Y-%m-%d',
                                             time.gmtime(float(d['epoch'])))
        if 'episode' in d:
            ilabels['Episode'] = d['episode']
        if 'Season' in d:
            ilabels['Season'] = d['season']
        if 'tvshowtitle' in d:
            ilabels['tvshowtitle'] = d['tvshowtitle']
            ilabels['tagline'] = d['tvshowtitle']
            ilabels['album'] = d['tvshowtitle']
        if 'rating' in d:
            ilabels['rating'] = d['rating']
        if 'type' in d and d['type'] != 'nextPage':
            if d['type'] == 'video' or d['type'] == 'live' or d[
                    'type'] == 'date' or d['type'] == 'clip':
                ilabels['mediatype'] = 'video'
            elif d['type'] == 'shows' or d['type'] == 'season':
                ilabels['mediatype'] = 'season'
            elif d['type'] == 'episode':
                ilabels['mediatype'] = 'episode'
            elif d['type'] != 'dir':
                ilabels['mediatype'] = 'video'

        ok = True
        liz = xbmcgui.ListItem(clearString(d.get('name', '')))
        if d.get('type', None) == 'audio':
            liz.setInfo(type='music', infoLabels=ilabels)
        else:
            liz.setInfo(type='video', infoLabels=ilabels)
        liz.addStreamInfo('subtitle', {'language': 'deu'})
        art = {}
        art['thumb'] = d.get('thumb')
        art['landscape'] = d.get('thumb')
        art['poster'] = d.get('thumb')
        art['fanart'] = d.get('fanart', d.get('thumb', fanart))
        art['icon'] = d.get('channelLogo', '')
        liz.setArt(art)

        if 'customprops' in d:
            for prop in d['customprops']:
                liz.setProperty(prop, d['customprops'][prop])

        if d.get('type',
                 None) == 'video' or d.get('type', None) == 'live' or d.get(
                     'type',
                     None) == 'date' or d.get('type', None) == 'clip' or d.get(
                         'type', None) == 'episode' or d.get('type',
                                                             None) == 'audio':
            #xbmcplugin.setContent( handle=int( sys.argv[ 1 ] ), content='episodes' )
            liz.setProperty('IsPlayable', 'true')
            if d.get('type', None) == 'live':
                liz.setProperty('starttime', '1')
                liz.setProperty('totaltime', '1')
            if download_dir and d.get('type', None) in ('video', 'date'):
                liz.addContextMenuItems([
                    ('Download', 'RunPlugin(%s&download_dir=%s)' %
                     (u, quote_plus(download_dir)))
                ])
            lists.append([u, liz, False])
        else:
            lists.append([u, liz, True])

    if len(l) > 0:
        type = l[0]['_type']
        if type == 'video' or type == 'live':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content='videos')
        elif type == 'date' or type == 'clip' or type == 'episode':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content='episodes')
        elif type == 'shows' or type == 'season':
            xbmcplugin.setContent(handle=int(sys.argv[1]), content='tvshows')
        else:
            xbmcplugin.setContent(handle=int(sys.argv[1]), content='files')

    xbmcplugin.addDirectoryItems(int(sys.argv[1]), lists)