Exemple #1
0
def get_serial_logo(tp, serie_obj):
    if tp == 'uaj':
        img = common.get_text(serie_obj.find('simg'))
        bimg = common.get_text(serie_obj.find('bimg'))
    else:
        mark = common.get_text(serie_obj.find('mark'))
        img = common.rootURL[tp] + "static/c/s/" + mark + ".jpg"
        bimg = common.rootURL[tp] + "static/c/b/" + mark + ".jpg"
    return img, bimg
Exemple #2
0
def show_episodes(_pv):
    s = get_all_episodes_xml(_pv['id'], _pv['tp'])
    if s is None:
        common.show_message(common.lang(30003), common.lang(30004))
        return False
    root = ET.fromstring(s)
    serie = root.find('series')
    if serie is not None:
        series_info = hdout_series.get_serial_channel(_pv['tp'], serie)
        mark = common.get_text(serie.find('mark'))
        server = common.get_text(serie.find('server'))
        type = common.get_text(serie.find('type'))
        episodes = serie.findall('season/item')
        simg, bimg = hdout_series.get_serial_logo(_pv['tp'], serie)
        if episodes is not None:
            episode_items = []
            for episode in episodes:
                # last_update = parserDateTime(episode.find('item/tmark')[0].text)
                id = common.get_text(episode.find('id_episodes'))
                series = common.get_text(episode.find('series'))

                snum = int(common.get_text(episode.find('snum')))
                enum = int(common.get_text(episode.find('enum')))
                vnum = common.get_text(episode.find('vnum'))
                # title = gettext(episode, 'title')
                # etitle = gettext(episode, 'etitle')

                img = get_episode_logo(_pv, _pv['tp'], type, server, mark, series, snum, enum)
                if img is None:
                    img = simg
                ftitle = get_episode_title(episode, snum, enum)
                url = sys.argv[0] + '?f=show_episode&id=' + id + "&tp=" + _pv['tp']

                item = xbmcgui.ListItem(ftitle, iconImage=img, thumbnailImage=img)
                item.setInfo(type='video', infoLabels={
                    'id': "hdout_tv_episode_" + id,
                    'title': ftitle,
                    'plot': series_info['info'],
                    'season': snum,
                    'episode': enum})
                item.setProperty('fanart_image', bimg)
                item.setArt({'poster': img})
                item.setProperty('IsPlayable', 'true')
                watched_obj = root.find("aview/i[@id='%s']" % id)
                if watched_obj is not None:
                    item.setInfo('Video', {'playcount': 1})
                    item.addContextMenuItems(
                        [(lang(30314),
                          'XBMC.RunPlugin(%s?f=unmark_viewed&id=%s&tp=%s)' % (sys.argv[0], id, _pv['tp']),)])
                else:
                    item.addContextMenuItems(
                        [(lang(30313), 'XBMC.RunPlugin(%s?f=mark_viewed&id=%s&tp=%s)' % (sys.argv[0], id, _pv['tp']),)])

                episode_items.append((url, item, True,))
            # episode_items = episode_items.reverse()
            xbmcplugin.addDirectoryItems(common.handle, episode_items, len(episode_items))
            xbmcplugin.addSortMethod(common.handle, xbmcplugin.SORT_METHOD_EPISODE)
            xbmcplugin.endOfDirectory(common.handle)
 def set_options_from_xml(self):
     searchoptionsdom = minidom.parse(self.SEARCHOPTIONSPATH)
     searchoptionnodes = searchoptionsdom.getElementsByTagName(
         'searchoption')
     for searchoptionnode in searchoptionnodes:
         name = searchoptionnode.getAttribute('long')
         short = searchoptionnode.getAttribute('short')
         desc = get_text(searchoptionnode.childNodes).strip()
         func = None
         if name in self.arg_action_dict:
             func = self.arg_action_dict[name]
         elif name in self.flag_action_dict:
             func = self.flag_action_dict[name]
         else:
             raise ValueError('Unknown search option: %s' % name)
         option = SearchOption(short, name, desc, func)
         self.options.append(option)
         if name in self.arg_action_dict:
             self.arg_dict[name] = option
             if short:
                 self.arg_dict[short] = option
         elif name in self.flag_action_dict:
             self.flag_dict[name] = option
             if short:
                 self.flag_dict[short] = option
Exemple #4
0
def show_new_series_list(afv, rfv, tp, s):
    if tp == 'uaj':
        return show_new_series_list_ucc(afv, rfv, tp, s)
    root = ET.fromstring(s)
    favorites = root.findall('fp/favorites/item/series')
    fav_series = {}
    for fav_item in favorites:
        fav_serie = common.get_text(fav_item)
        fav_series[fav_serie]=fav_serie
    days = root.findall('fp/episodesbyday/day')
    series = {}
    array_of_series = []
    for day in days:
        series_obj = day.findall('seriesday')
        for serie_obj in series_obj:
            series_id = serie_obj.find('seriesitem/item/id_series').text
            if series_id not in series.keys():
                series[series_id] = {
                    'firstday': common.parser_date_time(serie_obj.find('item/tmark').text),
                    'serie': serie_obj
                }
                array_of_series.append(series_id)
            else:
                new_time = common.parser_date_time(serie_obj.find('item/tmark').text)
                if series[series_id]['firstday'] < new_time:
                    series[series_id] = {'firstDay': new_time, 'serie': serie_obj}

    array_of_series.sort(
        key=lambda serieid: series[series_id]['firstday'])
    channel_items = []
    for serie_id in array_of_series:
        episode_objs = series[serie_id]['serie'].findall('item')
        list_of_episodes = u""
        for episodeObj in episode_objs:
            list_of_episodes += \
                u"[%02dx%02d]" % \
                (int(episodeObj.find('snum').text),
                 int(episodeObj.find('enum').text)) + u' '
        list_of_episodes += u'\n'
        serie_obj = series[serie_id]['serie'].find('seriesitem/item')
        serie_channel = get_serial_channel(tp, serie_obj, series[serie_id]['firstday'], list_of_episodes)

        url = sys.argv[0] + '?f=show_episodes&id=' + serie_id + '&tp=' + tp
        item = get_list_item_for_serie_channel(serie_channel, tp,
                                               (serie_channel['id'] not in fav_series),
                                               (serie_channel['id'] in fav_series))
        channel_items.append((url, item, True,))

    xbmcplugin.addDirectoryItems(handle, channel_items, len(channel_items))
    # xbmcplugin.addSortMethod(handle, xbmcplugin.SORT_METHOD_TITLE)
    xbmcplugin.endOfDirectory(handle)
    return True
Exemple #5
0
 def __populate_filetypes(self):
     filetypedom = minidom.parse(FILETYPESPATH)
     filetypenodes = filetypedom.getElementsByTagName('filetype')
     for filetypenode in filetypenodes:
         name = filetypenode.getAttribute('name')
         extnode = filetypenode.getElementsByTagName('extensions')[0]
         exts = set(get_text(extnode.childNodes).split())
         self.filetypes[name] = exts
     self.filetypes['text'] = \
         self.filetypes['text'].union(self.filetypes['code'],
                                      self.filetypes['xml'])
     self.filetypes['searchable'] = \
         self.filetypes['binary'].union(self.filetypes['archive'],
                                        self.filetypes['text'])
Exemple #6
0
 def __populate_filetypes(self):
     filetypedom = minidom.parse(self.FILETYPESPATH)
     filetypenodes = filetypedom.getElementsByTagName('filetype')
     for filetypenode in filetypenodes:
         name = filetypenode.getAttribute('name')
         extnode = filetypenode.getElementsByTagName('extensions')[0]
         exts = set(get_text(extnode.childNodes).split())
         self.filetypes[name] = exts
     self.filetypes['text'] = \
         self.filetypes['text'].union(self.filetypes['code'],
                                      self.filetypes['xml'])
     self.filetypes['searchable'] = \
         self.filetypes['binary'].union(self.filetypes['archive'],
                                        self.filetypes['text'])
Exemple #7
0
def fn(board_etree, scenario_etree, allocation_etree):
    # this dictonary mapped with 'address start':'mem range'
    ram_range = {}

    vm_count = common.count_nodes("//*[local-name() = 'vm']", scenario_etree)
    hv_ram_size = VM_NUM_MAP_TOTAL_HV_RAM_SIZE[vm_count]

    ivshmem_enabled = common.get_text("//IVSHMEM_ENABLED", scenario_etree)
    total_shm_size = 0
    if ivshmem_enabled == 'y':
        raw_shmem_regions = scenario_etree.xpath("//IVSHMEM_REGION/text()")
        for raw_shm in raw_shmem_regions:
            if raw_shm.strip() == '':
                continue
            raw_shm_splited = raw_shm.split(',')
            if len(raw_shm_splited) == 3 and raw_shm_splited[0].strip() != '' \
                    and raw_shm_splited[1].strip() != '' and len(raw_shm_splited[2].strip().split(':')) >= 1:
                try:
                    size = raw_shm_splited[1].strip()
                    int_size = int(size) * 0x100000
                    total_shm_size += int_size
                except Exception as e:
                    print(e)
    hv_ram_size += total_shm_size
    assert (hv_ram_size <= HV_RAM_SIZE_MAX)

    # reseve 16M memory for hv sbuf, ramoops, etc.
    reserved_ram = 0x1000000
    # We recommend to put hv ram start address high than 0x10000000 to
    # reduce memory conflict with GRUB/SOS Kernel.
    hv_start_offset = 0x10000000
    total_size = reserved_ram + hv_ram_size
    for start_addr in list(board_cfg_lib.USED_RAM_RANGE):
        if hv_start_offset <= start_addr < 0x80000000:
            del board_cfg_lib.USED_RAM_RANGE[start_addr]
    ram_range = board_cfg_lib.get_ram_range()
    avl_start_addr = board_cfg_lib.find_avl_memory(ram_range, str(total_size),
                                                   hv_start_offset)
    hv_start_addr = int(avl_start_addr, 16) + int(hex(reserved_ram), 16)
    hv_start_addr = common.round_up(hv_start_addr, MEM_ALIGN)
    board_cfg_lib.USED_RAM_RANGE[hv_start_addr] = total_size

    common.append_node("/acrn-config/hv/MEMORY/HV_RAM_START",
                       hex(hv_start_addr), allocation_etree)
    common.append_node("/acrn-config/hv/MEMORY/HV_RAM_SIZE", hex(hv_ram_size),
                       allocation_etree)
Exemple #8
0
 def set_options_from_xml(self):
     searchoptionsdom = minidom.parse(SEARCHOPTIONSPATH)
     searchoptionnodes = searchoptionsdom.getElementsByTagName('searchoption')
     for searchoptionnode in searchoptionnodes:
         name = searchoptionnode.getAttribute('long')
         short = searchoptionnode.getAttribute('short')
         desc = get_text(searchoptionnode.childNodes).strip()
         func = None
         if name in self.arg_action_dict:
             func = self.arg_action_dict[name]
         elif name in self.bool_flag_action_dict:
             func = self.bool_flag_action_dict[name]
         else:
             raise ValueError('Unknown search option: %s' % name)
         option = SearchOption(short, name, desc, func)
         self.longarg_dict[name] = name
         if short:
             self.longarg_dict[short] = name
         self.options.append(option)
Exemple #9
0
def get_serial_channel(tp, xml_obj, last_update_time=None, list_of_episodes=None):
    serie_obj = xml_obj
    title = common.get_text(serie_obj.find('title'))
    etitle = common.get_text(serie_obj.find('etitle'))

    mark = common.get_text(serie_obj.find('mark'))
    tpi = common.get_text(serie_obj.find('type'))
    genre = common.get_text(serie_obj.find('genre'))
    country = common.get_text(serie_obj.find('country'))
    years = common.get_text(serie_obj.find('years'))
    imbdb = common.get_text(serie_obj.find('imdb'))
    hdout_rate = common.get_text(serie_obj.find('hdout_rate'))
    imbd_rate = common.get_text(serie_obj.find('imdb_rate'))
    kinopoisk_rate = common.get_text(serie_obj.find('kinopoisk_rate'))
    status = u"Закончен" if common.get_text(serie_obj.find('closed')) == "1" else u"В эфире"
    info = u""
    if tp == 'uaj':
        img = common.rootURL[tp] + "/" + common.get_text(serie_obj.find('simg'))
        bimg = common.rootURL[tp] + "/" + common.get_text(serie_obj.find('bimg'))
        if title is None:
            title = ""
        if etitle and len(etitle) > 1:
            title += " [" + etitle + "]"
    else:
        (img, bimg) = get_serial_logo(tp, serie_obj)
        if tpi == '1':
            title = u"[SD] " + title + " (" + etitle + ")"
        else:
            title = u"[HD] " + title + " (" + etitle + ")"
    if last_update_time is not None:
        info += u"Обновлено:" + last_update_time.strftime('%Y-%m-%d %H:%M') + u'\n'
    info += country + u", " + genre + u" " + years + u"\n"

    info = info \
           + (list_of_episodes if list_of_episodes is not None else u"") + u'\n'\
           + common.strip_html(common.get_text(serie_obj.find('info')))
    return {
        'id': common.get_text(serie_obj.find('id_series')),
        'title': title,
        'etitle': etitle,
        'big_image': bimg,
        'small_image': img,
        'genre': genre,
        'country': country,
        'years': years,
        'year': (years.split('_')[0].split('-')[0]),
        'info': info,
        'status': status,
        'hdout_rate': hdout_rate,
        'kinopoisk_rate': kinopoisk_rate,
        'imdb': imbdb,
        'imdb_rate': imbd_rate
    }