def add_directory_item(linkItem, isFolder, playLink, playLinkClass, cover, folderUrl, folder, isMusic, quality = None, itemsCount = None): lang = None langRegexp = re.compile('\s*m\-(\w+)\s*') lang_data = langRegexp.findall(linkItem['class']) if len(lang_data) > 0: lang = str(lang_data[0]) title = "" if isFolder: title = strutils.fix_string(linkItem.text) if (itemsCount): title = "%s (%s)" % (title, strutils.fix_string(itemsCount.text)) lang_quality_el = linkItem.find('font') if lang_quality_el: lang_quality = strutils.fix_string(lang_quality_el.text) title = title.replace(lang_quality, ' ' + lang_quality) if quality is not None: title = "%s [%s]" % (title, quality) else: try: title = str(playLink.find('span', playLinkClass + '-filename-text').string) except: pass if lang is not None: title = lang.upper() + ' - ' + title if playLink is not None and playLink.name == 'a': if 'href' in playLink: playLink = client.get_full_url(str(playLink['href'])) elif 'rel' in playLink: playLink = client.get_full_url(str(playLink['rel'])) else: playLink = '' else: playLink = '' href = linkItem['href'] try: folderRegexp = re.compile("parent_id:\s*'([^']+)") folder = folderRegexp.findall(linkItem['rel'])[0] except: pass if isFolder: li = xbmcgui.ListItem( strutils.html_entities_decode(title), iconImage=fs_ua.thumbnail(cover), thumbnailImage=fs_ua.poster(cover) ) li.setProperty('IsPlayable', 'false') uri = strutils.construct_request({ 'cover': cover, 'href': folderUrl, 'referer': folderUrl, 'mode': 'read_dir', 'folder': folder, 'isMusic': isMusic, 'quality': quality }) xbmcplugin.addDirectoryItem(h, uri, li, isFolder) else: item_type = 'video' if isMusic == 'yes': item_type = 'music' add_folder_file({ 'title': title, 'cover': cover, 'href': href, 'referer': folderUrl, 'type': item_type, 'playLink': playLink })
def add_directory_item(linkItem, isFolder, playLink, playLinkClass, cover, folderUrl, folder, isMusic, quality=None, itemsCount=None): folderRegexp = re.compile('(\d+)') lang = None langRegexp = re.compile('\s*m\-(\w+)\s*') lang_data = langRegexp.findall(linkItem['class']) if len(lang_data) > 0: lang = str(lang_data[0]) title = "" if isFolder: title = strutils.fix_string(linkItem.text) if (itemsCount): title = "%s (%s)" % (title, strutils.fix_string(itemsCount.text)) lang_quality_el = linkItem.find('font') if lang_quality_el: lang_quality = strutils.fix_string(lang_quality_el.text) title = title.replace(lang_quality, ' ' + lang_quality) if quality is not None: title = "%s [%s]" % (title, quality) else: try: title = str( playLink.find('span', playLinkClass + '-filename-text').string) except: pass if lang is not None: title = lang.upper() + ' - ' + title if playLink is not None and playLink.name == 'a': if 'href' in playLink: playLink = client.get_full_url(str(playLink['href'])) elif 'rel' in playLink: playLink = client.get_full_url(str(playLink['rel'])) else: playLink = '' else: playLink = '' href = linkItem['href'] try: folder = folderRegexp.findall(linkItem['rel'])[0] except: pass if isFolder: li = xbmcgui.ListItem(strutils.html_entities_decode(title), iconImage=fs_ua.thumbnail(cover), thumbnailImage=fs_ua.poster(cover)) li.setProperty('IsPlayable', 'false') uri = strutils.construct_request({ 'cover': cover, 'href': folderUrl, 'referer': folderUrl, 'mode': 'read_dir', 'folder': folder, 'isMusic': isMusic, 'quality': quality }) xbmcplugin.addDirectoryItem(h, uri, li, isFolder) else: item_type = 'video' if isMusic == 'yes': item_type = 'music' add_folder_file({ 'title': title, 'cover': cover, 'href': href, 'referer': folderUrl, 'type': item_type, 'playLink': playLink })
def get_material_details(url): data = {} cache_file_name = '%s.json' % hashlib.md5(url).hexdigest() cache_file_path = os.path.join(cache_path, cache_file_name) if xbmcvfs.exists(cache_file_path): fp = open(cache_file_path, 'r') data = json.load(fp) fp.close() return data http = client.GET(url, httpSiteUrl) if http is None: return data cover_regexp = re.compile("url\s*\(([^\)]+)") beautifulSoup = BeautifulSoup(http) info = beautifulSoup.find('div', 'item-info') genre_element_container = info.findAll('span', {"itemprop" : "genre"}) genres = [] for genre_element in genre_element_container: genres.append(strutils.fix_string(genre_element.find('span').string.strip())) title = strutils.fix_string(beautifulSoup.find('div', 'b-tab-item__title-inner').find('span').string) original_title = strutils.html_entities_decode(beautifulSoup.find('div', 'b-tab-item__title-origin').string) description = beautifulSoup.find('p', 'item-decription').string.encode('utf-8') poster = fs_ua.poster(client.get_full_url(beautifulSoup.find('div', 'poster-main').find('img')['src'])) print poster images_container = beautifulSoup.find('div', 'b-tab-item__screens') image_elements = images_container.findAll('a') images = [] for image_element in image_elements: images.append( client.get_full_url( fs_ua.poster( cover_regexp.findall(str(image_element['style']).strip())[0] ) ) ) rating_positive = beautifulSoup.find('div', 'm-tab-item__vote-value_type_yes').string.strip() rating_negative = beautifulSoup.find('div', 'm-tab-item__vote-value_type_no').string.strip() data = { 'title': title.strip(), 'original_title': original_title.strip(), 'poster': poster, 'description': description, 'images': images, 'genres': genres, 'rating_positive': rating_positive, 'rating_negative': rating_negative } fp = open(cache_file_path, 'w') json.dump(data, fp) fp.close() return data
def get_material_details(url): data = {} cache_file_name = '%s.json' % hashlib.md5(url).hexdigest() cache_file_path = os.path.join(cache_path, cache_file_name) if xbmcvfs.exists(cache_file_path): fp = open(cache_file_path, 'r') data = json.load(fp) fp.close() return data http = client.GET(url, httpSiteUrl) if http is None: return data cover_regexp = re.compile("url\s*\(([^\)]+)") beautifulSoup = BeautifulSoup(http) info = beautifulSoup.find('div', 'item-info') genre_element_container = info.findAll('span', {"itemprop": "genre"}) genres = [] for genre_element in genre_element_container: genres.append( strutils.fix_string(genre_element.find('span').string.strip())) title = strutils.fix_string( beautifulSoup.find('div', 'b-tab-item__title-inner').find('span').string) original_title = strutils.html_entities_decode( beautifulSoup.find('div', 'b-tab-item__title-origin').string) description = beautifulSoup.find('p', 'item-decription').string.encode('utf-8') poster = fs_ua.poster( client.get_full_url( beautifulSoup.find('div', 'poster-main').find('img')['src'])) print poster images_container = beautifulSoup.find('div', 'b-tab-item__screens') image_elements = images_container.findAll('a') images = [] for image_element in image_elements: images.append( client.get_full_url( fs_ua.poster( cover_regexp.findall(str( image_element['style']).strip())[0]))) rating_positive = beautifulSoup.find( 'div', 'm-tab-item__vote-value_type_yes').string.strip() rating_negative = beautifulSoup.find( 'div', 'm-tab-item__vote-value_type_no').string.strip() data = { 'title': title.strip(), 'original_title': original_title.strip(), 'poster': poster, 'description': description, 'images': images, 'genres': genres, 'rating_positive': rating_positive, 'rating_negative': rating_negative } fp = open(cache_file_path, 'w') json.dump(data, fp) fp.close() return data