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
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
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
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'])
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'])
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)
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)
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 }