示例#1
0
def displayMovies(request_obj, response_obj):
    url = request_obj.get_data()['movieCategoryUrl']
    print "indisplay" + url
    if request_obj.get_data().has_key('page'):
        url_parts = url.split('?')
        
        url_part_A = ''
        url_part_B = ''
        if len(url_parts) == 2:
            url_part_A = url_parts[0]
            url_part_B = '?' + url_parts[1]
        else:
            url_part_A = url
        if url_part_A[len(url_part_A) - 1] != '/':
            url_part_A = url_part_A + '/'
        url = url_part_A + 'page/' + request_obj.get_data()['page'] + url_part_B

    contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'content'})
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)

    movieTags = soup.findChildren('div', {'class':'post'})
    print "intags" + str(movieTags)
    if len(movieTags) == 0:
        movieTags = soup.findChildren('div', {'class':'videopost'})
    for movieTag in movieTags:
        item = __retrieveAndCreateMovieItem__(movieTag)
        response_obj.addListItem(item)
    
    response_obj.set_xbmc_content_type('movies')
    try:
        pagesInfoTag = soup.findChild('div', {'class':'navigation'})

        current_page = int(pagesInfoTag.find('span', {'class':'page current'}).getText())
        #print current_page
        pages = pagesInfoTag.findChildren('a', {'class':'page'})
        #print pages
        last_page = int(pages[len(pages) - 1].getText())
    
        if current_page < last_page:
            for page in range(current_page + 1, last_page + 1):
                createItem = False
                if page == last_page:
                    pageName = AddonUtils.getBoldString('              ->              Last Page #' + str(page))
                    createItem = True
                elif page <= current_page + 4:
                    pageName = AddonUtils.getBoldString('              ->              Page #' + str(page))
                    createItem = True
                if createItem:
                    item = ListItem()
                    item.add_request_data('movieCategoryUrl', request_obj.get_data()['movieCategoryUrl'])
                    item.add_request_data('page', str(page))
                
                    
                    item.set_next_action_name('Movies_List_Next_Page')
                    xbmcListItem = xbmcgui.ListItem(label=pageName)
                    item.set_xbmc_list_item_obj(xbmcListItem)
                    response_obj.addListItem(item)
    except: pass
示例#2
0
def displayMovies(request_obj, response_obj):
    url = request_obj.get_data()["movieCategoryUrl"]
    if request_obj.get_data().has_key("page"):
        url_parts = url.split("?")

        url_part_A = ""
        url_part_B = ""
        if len(url_parts) == 2:
            url_part_A = url_parts[0]
            url_part_B = "?" + url_parts[1]
        else:
            url_part_A = url
        if url_part_A[len(url_part_A) - 1] != "/":
            url_part_A = url_part_A + "/"
        url = url_part_A + "page/" + request_obj.get_data()["page"] + url_part_B
    contentDiv = BeautifulSoup.SoupStrainer("div", {"id": "content"})
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)
    movieTags = soup.findChildren("div", {"class": "post"})
    for movieTag in movieTags:
        item = __retrieveAndCreateMovieItem__(movieTag)
        response_obj.addListItem(item)

    response_obj.set_xbmc_content_type("movies")

    pagesInfoTag = soup.findChild("div", {"class": "navigation"})
    print pagesInfoTag
    current_page = int(pagesInfoTag.find("span", {"class": "page current"}).getText())
    print current_page
    pages = pagesInfoTag.findChildren("a", {"class": "page"})
    print pages
    last_page = int(pages[len(pages) - 1].getText())

    if current_page < last_page:
        for page in range(current_page + 1, last_page + 1):
            createItem = False
            if page == last_page:
                pageName = AddonUtils.getBoldString("              ->              Last Page #" + str(page))
                createItem = True
            elif page <= current_page + 4:
                pageName = AddonUtils.getBoldString("              ->              Page #" + str(page))
                createItem = True
            if createItem:
                item = ListItem()
                item.add_request_data("movieCategoryUrl", request_obj.get_data()["movieCategoryUrl"])
                item.add_request_data("page", str(page))

                item.set_next_action_name("Movies_List_Next_Page")
                xbmcListItem = xbmcgui.ListItem(label=pageName)
                item.set_xbmc_list_item_obj(xbmcListItem)
                response_obj.addListItem(item)
示例#3
0
def __preparePlayListItem__(video_items, source):
    video_playlist_items = []
    video_source_img = None
    video_source_name = None
    for item in video_items:
        video_item = {}
        video_item['videoLink'] = item.get_request_data()['videoLink']
        video_item['videoTitle'] = item.get_request_data()['videoTitle']
        video_playlist_items.append(video_item)
        video_source_img = item.get_moving_data()['videoSourceImg']
        video_source_name = item.get_moving_data()['videoSourceName']
    Logger.logDebug('IMAGE :: ')
    Logger.logDebug(video_source_img)
    Logger.logDebug(type(video_source_img))
    item = ListItem()
    item.add_request_data('videoPlayListItems', video_playlist_items)
    item.add_moving_data('isContinuousPlayItem', True)
    item.add_moving_data('videoSourceName', video_source_name)
    item.set_next_action_name('Play_AllStreams')
    xbmcListItem = xbmcgui.ListItem(
        label='[COLOR blue]' + AddonUtils.getBoldString('Continuous Play') +
        '[/COLOR]' + ' | ' + 'Source #' + source + ' | ' + 'Parts = ' +
        str(len(video_playlist_items)),
        iconImage=video_source_img,
        thumbnailImage=video_source_img)
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item
示例#4
0
def __preparePlayListItem__(video_source_id, video_source_img, video_playlist_items):
    item = ListItem()
    item.add_request_data('videoPlayListItems', video_playlist_items)
    item.set_next_action_name('SnapAndDirectPlayList')
    xbmcListItem = xbmcgui.ListItem(label=AddonUtils.getBoldString('DirectPlay') + ' | ' + 'Source #' + str(video_source_id) + ' | ' + 'Parts = ' + str(len(video_playlist_items)) , iconImage=video_source_img, thumbnailImage=video_source_img)
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item
示例#5
0
def displayTVShowEpisodes(request_obj, response_obj):
    url = request_obj.get_data()['tvChannelUrl']
    contentDiv = GetContent(url)
    newcontent = ''.join(contentDiv.encode("utf-8").splitlines()).replace('\t','')
    contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'content'})
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)
    videoBoxes =re.compile("<div id='videobox'>(.+?)</h3><div style='clear: both;'>").findall(newcontent)
    for videoBox in videoBoxes:
        #imgTag = videoBox.findChild('img')
        imageUrl = re.compile('<img [^>]*src=["\']?([^>^"^\']+)["\']?[^>]*>').findall(str(videoBox))[0]
        match=re.compile('createSummaryThumb\("(.+?)","(.+?)","(.+?)",').findall(str(videoBox))
        if(len(match)>0):
            episodeName = match[0][1]
            episodeUrl = str(match[0][2])
            
            item = ListItem()
            item.add_request_data('episodeName', episodeName)
            item.add_request_data('episodeUrl', episodeUrl)
            item.set_next_action_name('Show_Episode_VLinks')
            xbmcListItem = xbmcgui.ListItem(label=episodeName, iconImage=imageUrl, thumbnailImage=imageUrl)
            item.set_xbmc_list_item_obj(xbmcListItem)
            response_obj.addListItem(item)
    pageTag = soup.findChild('div', {'class':'postnav'})
    if(pageTag !=None):
        olderPageTag = pageTag.findChild('a', {'class':'blog-pager-older-link'})
    else:
        olderPageTag = None
    if olderPageTag is not None:
        item = ListItem()
        item.add_request_data('tvChannelUrl', str(olderPageTag['href']))
        pageName = AddonUtils.getBoldString('              ->              Next Page')
        item.set_next_action_name('Show_Episodes_Next_Page')
        xbmcListItem = xbmcgui.ListItem(label=pageName)
        item.set_xbmc_list_item_obj(xbmcListItem)
        response_obj.addListItem(item)
示例#6
0
def __preparePlayListItem__(video_source_id, video_source_img, video_playlist_items):
    item = ListItem()
    item.add_request_data('videoPlayListItems', video_playlist_items)
    item.set_next_action_name('SnapAndDirectPlayList')
    xbmcListItem = xbmcgui.ListItem(label=AddonUtils.getBoldString('DirectPlay') + ' | ' + 'Source #' + str(video_source_id) + ' | ' + 'Parts = ' + str(len(video_playlist_items)) , iconImage=video_source_img, thumbnailImage=video_source_img)
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item
示例#7
0
def displayTVShowEpisodes(request_obj, response_obj):
    url = request_obj.get_data()['tvChannelUrl']
    contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'content'})
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)
    videoBoxes = soup.findChildren('div', {'id':'videobox'})
    for videoBox in videoBoxes:
        imgTag = videoBox.findChild('img')
        imageUrl = str(imgTag['src'])
        metaTag = videoBox.findChild('div', {'class':'meta'})
        aTag = metaTag.findChild('a')
        episodeName = aTag.getText()
        episodeUrl = str(aTag['href'])
        
        item = ListItem()
        item.add_request_data('episodeName', episodeName)
        item.add_request_data('episodeUrl', episodeUrl)
        item.set_next_action_name('Show_Episode_VLinks')
        xbmcListItem = xbmcgui.ListItem(label=episodeName, iconImage=imageUrl, thumbnailImage=imageUrl)
        item.set_xbmc_list_item_obj(xbmcListItem)
        response_obj.addListItem(item)
        
    pageTag = soup.findChild('div', {'class':'postnav'})
    olderPageTag = pageTag.findChild('a', {'class':'blog-pager-older-link'})
    if olderPageTag is not None:
        item = ListItem()
        item.add_request_data('tvChannelUrl', str(olderPageTag['href']))
        pageName = AddonUtils.getBoldString('              ->              Next Page')
        item.set_next_action_name('Show_Episodes_Next_Page')
        xbmcListItem = xbmcgui.ListItem(label=pageName)
        item.set_xbmc_list_item_obj(xbmcListItem)
        response_obj.addListItem(item)
示例#8
0
def __preparePlayListItem__(video_source_id, video_source_img, video_source_name, video_playlist_items):
    item = ListItem()
    item.add_request_data('videoPlayListItems', video_playlist_items)
    item.set_next_action_name('SnapAndDirectPlayList')
    item.add_moving_data('isContinuousPlayItem', True)
    item.add_moving_data('videoSourceName', video_source_name)
    xbmcListItem = xbmcgui.ListItem(label='[COLOR blue]' + AddonUtils.getBoldString('Continuous Play') + '[/COLOR]' + ' | ' + 'Source #' + str(video_source_id) + ' | ' + 'Parts = ' + str(len(video_playlist_items)) , iconImage=video_source_img, thumbnailImage=video_source_img)
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item
示例#9
0
def retrieveTVShowEpisodes(request_obj, response_obj):
    Container().ga_client.reportContentUsage('dr_tvshow', request_obj.get_data()['tvShowName'])
    url = request_obj.get_data()['tvShowUrl']
    if request_obj.get_data().has_key('page'):
        url = url + '&page=' + request_obj.get_data()['page']
    contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'contentBody'})
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)
    
    if not request_obj.get_data().has_key('page'):
        threads = soup.find('ol', {'class':'stickies', 'id':'stickies'})
        __retrieveTVShowEpisodes__(threads, response_obj)
    
    threads = soup.find('ol', {'class':'threads', 'id':'threads'})
    __retrieveTVShowEpisodes__(threads, response_obj)
            
    pagesDiv = soup.find('div', {'class':'threadpagenav'})
    if pagesDiv is not None:
        pagesInfoTag = pagesDiv.find('a', {'class':re.compile(r'\bpopupctrl\b')})
        if pagesInfoTag is not None:
            pageInfo = re.compile('Page (.+?) of (.+?) ').findall(pagesInfoTag.getText() + ' ')
            currentPage = int(pageInfo[0][0])
            totalPages = int(pageInfo[0][1])
            for page in range(1, totalPages + 1):
                if page != currentPage:
                    item = ListItem()
                    item.add_request_data('tvShowName', request_obj.get_data()['tvShowName'])
                    item.add_request_data('tvShowUrl', request_obj.get_data()['tvShowUrl'])
                    if page != 1:
                        item.add_request_data('page', str(page))
                    pageName = ''
                    if page < currentPage:
                        pageName = AddonUtils.getBoldString('              <-              Page #' + str(page))
                    else:
                        pageName = AddonUtils.getBoldString('              ->              Page #' + str(page))
                        
                    item.set_next_action_name('Show_Episodes_Next_Page')
                    xbmcListItem = xbmcgui.ListItem(label=pageName)
                    item.set_xbmc_list_item_obj(xbmcListItem)
                    response_obj.addListItem(item)
示例#10
0
def __displayTVShows__(tvShowsList, channelType, finished=False):
    items = []
    for tvShow in tvShowsList:
        tvShowName = tvShow['name']
        if finished:
            tvShowName = tvShowName + ' [' + AddonUtils.getBoldString('finished') + '] '
        item = ListItem()
        item.add_request_data('channelType', channelType)
        item.add_request_data('tvShowName', tvShowName)
        item.add_request_data('tvShowUrl', tvShow['url'])
        item.set_next_action_name('Show_Episodes')
        xbmcListItem = xbmcgui.ListItem(label=tvShowName)
        item.set_xbmc_list_item_obj(xbmcListItem)
        items.append(item)
    return items
示例#11
0
def retrieveTVShowEpisodes(request_obj, response_obj):
    contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'content'})
    url = request_obj.get_data()['tvShowUrl']
    channelType = request_obj.get_data()['channelType']
    if request_obj.get_data().has_key('page'):
        url = url + 'page/' + request_obj.get_data()['page']
    soup = HttpClient().getBeautifulSoup(url=url, parseOnlyThese=contentDiv)
    for aTag in soup.findAll('a', {'rel':'bookmark'}):
        episodeName = aTag.getText()
        try:
            time.strptime(episodeName, '%B %d, %Y')
            continue
        except:
            if re.search('Written Episode', episodeName):
                pass
            else:
                item = ListItem()
                item.add_request_data('episodeName', episodeName)
                item.add_request_data('episodeUrl', str(aTag['href']))
                item.set_next_action_name(channelType + '_Episode_VLinks')
                xbmcListItem = xbmcgui.ListItem(label=episodeName)
                item.set_xbmc_list_item_obj(xbmcListItem)
                response_obj.addListItem(item)
            
    pagesDiv = soup.find('div', {'class':'wp-pagenavi'})
    if pagesDiv is not None:
        pagesInfoTag = pagesDiv.find('span', {'class':'pages'}, recursive=False)
        if pagesInfoTag is not None:
            pageInfo = re.compile('Page (.+?) of (.+?) ').findall(pagesInfoTag.getText() + ' ')
            currentPage = int(pageInfo[0][0].replace(',',''))
            totalPages = int(pageInfo[0][1].replace(',',''))
            for page in range(1, totalPages + 1):
                if page == 1 or page == totalPages or page == currentPage - 1 or page == currentPage + 1:
                    if page != currentPage:
                        item = ListItem()
                        item.add_request_data('channelType', channelType)
                        item.add_request_data('tvShowName', request_obj.get_data()['tvShowName'])
                        item.add_request_data('tvShowUrl', request_obj.get_data()['tvShowUrl'])
                        if page != 1:
                            item.add_request_data('page', str(page))
                        pageName = AddonUtils.getBoldString('              ->              Page #' + str(page))
                            
                        item.set_next_action_name('Show_Episodes_Next_Page')
                        xbmcListItem = xbmcgui.ListItem(label=pageName)
                        item.set_xbmc_list_item_obj(xbmcListItem)
                        response_obj.addListItem(item)
示例#12
0
def __preparePlayListItem__(video_source_id, video_source_img, video_playlist_items):
    item = ListItem()
    item.add_request_data("videoPlayListItems", video_playlist_items)
    item.set_next_action_name("SnapAndDirectPlayList")
    xbmcListItem = xbmcgui.ListItem(
        label=AddonUtils.getBoldString("DirectPlay")
        + " | "
        + "Source #"
        + str(video_source_id)
        + " | "
        + "Parts = "
        + str(len(video_playlist_items)),
        iconImage=video_source_img,
        thumbnailImage=video_source_img,
    )
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item
示例#13
0
def __displayTVShows__(tvShowsList, channelType, finished=False):
    items = []
    for tvShow in tvShowsList:
        tvShowName = tvShow['name']
        if finished:
            tvShowName = tvShowName + ' [' + AddonUtils.getBoldString('finished') + '] '
        item = ListItem()
        item.add_request_data('channelType', channelType)
        item.add_request_data('tvShowName', tvShowName)
        item.add_request_data('tvShowUrl', tvShow['url'])
        item.set_next_action_name('Show_Episodes')
        xbmcListItem = xbmcgui.ListItem(label=tvShowName)
        contextMenuItems = []
        data = '?actionId=' + urllib.quote_plus("add_Fav_TVShow") + '&data=' + urllib.quote_plus(AddonUtils.encodeData({"channelType":channelType, "tvShowName":tvShowName, "tvShowUrl":tvShow['url']}))
        contextMenuItems.append(('Add to favourite shows', 'XBMC.RunPlugin(%s?%s)' % (sys.argv[0], data)))
        xbmcListItem.addContextMenuItems(contextMenuItems, replaceItems=True)
        item.set_xbmc_list_item_obj(xbmcListItem)
        items.append(item)
    return items
示例#14
0
def __preparePlayListItem__(video_items, source):
    video_playlist_items = []
    video_source_img = None
    video_source_name = None
    for item in video_items:
        video_item = {}
        video_item['videoLink'] = item.get_request_data()['videoLink']
        video_item['videoTitle'] = item.get_request_data()['videoTitle']
        video_playlist_items.append(video_item)
        video_source_img = item.get_moving_data()['videoSourceImg']
        video_source_name = item.get_moving_data()['videoSourceName']
    Logger.logDebug('IMAGE :: ')
    Logger.logDebug(video_source_img)
    Logger.logDebug(type(video_source_img))
    item = ListItem()
    item.add_request_data('videoPlayListItems', video_playlist_items)
    item.add_moving_data('isContinuousPlayItem', True)
    item.add_moving_data('videoSourceName', video_source_name)
    item.set_next_action_name('Play_AllStreams')
    xbmcListItem = xbmcgui.ListItem(label='[COLOR blue]' + AddonUtils.getBoldString('Continuous Play') + '[/COLOR]' + ' | ' + 'Source #' + source + ' | ' + 'Parts = ' + str(len(video_playlist_items)) , iconImage=video_source_img, thumbnailImage=video_source_img)
    item.set_xbmc_list_item_obj(xbmcListItem)
    return item