Ejemplo n.º 1
0
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
        })
Ejemplo n.º 2
0
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
        })
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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