def __retrieve_tv_shows__(tv_channel_url): tv_channel = {} tv_channel["running_tvshows"] = [] tv_channel["finished_tvshows"] = [] logging.getLogger().debug('TV Channel URL: ' + tv_channel_url) tv_shows = tv_channel["running_tvshows"] if tv_channel_url is None: return tv_shows tv_channel_url = BASE_WSITE_URL + tv_channel_url logging.getLogger().debug(tv_channel_url) contentDiv = BeautifulSoup.SoupStrainer('li', {'class':'categories'}) soup = HttpClient().get_beautiful_soup(url=tv_channel_url, parseOnlyThese=contentDiv) # soup = BeautifulSoup.BeautifulSoup(HttpClient().get_html_content(url=tv_channel_url)).findAll('div', {'id':'forumbits', 'class':'forumbits'})[0] for title_tag in soup.findAll('li'): aTag = title_tag.findNext('a') tv_show_url = str(aTag['href']) if tv_show_url[0:4] != "http": tv_show_url = BASE_WSITE_URL + '/' + tv_show_url tv_show_name = aTag.getText() if not re.search('Completed Shows', tv_show_name, re.IGNORECASE): tv_shows.append({"name":http.unescape(tv_show_name), "url":tv_show_url, "iconimage":""}) else: tv_shows = tv_channel["finished_tvshows"] return tv_channel
def __retrieve_tv_shows__(tv_channel_url): tv_channel = {} tv_channel["running_tvshows"] = [] tv_channel["finished_tvshows"] = [] logging.getLogger().debug('TV Channel URL: ' + tv_channel_url) tv_shows = tv_channel["running_tvshows"] if tv_channel_url is None: return tv_shows tv_channel_url = BASE_WSITE_URL + tv_channel_url logging.getLogger().debug(tv_channel_url) contentDiv = BeautifulSoup.SoupStrainer('li', {'class': 'categories'}) soup = HttpClient().get_beautiful_soup(url=tv_channel_url, parseOnlyThese=contentDiv) # soup = BeautifulSoup.BeautifulSoup(HttpClient().get_html_content(url=tv_channel_url)).findAll('div', {'id':'forumbits', 'class':'forumbits'})[0] for title_tag in soup.findAll('li'): aTag = title_tag.findNext('a') tv_show_url = str(aTag['href']) if tv_show_url[0:4] != "http": tv_show_url = BASE_WSITE_URL + '/' + tv_show_url tv_show_name = aTag.getText() if not re.search('Completed Shows', tv_show_name, re.IGNORECASE): tv_shows.append({ "name": http.unescape(tv_show_name), "url": tv_show_url, "iconimage": "" }) else: tv_shows = tv_channel["finished_tvshows"] return tv_channel
def load_tv_show_episodes(req_attrib, modelMap): logging.getLogger().debug('load tv show episodes...') url = req_attrib['tv-show-url'] tv_show_url = req_attrib['tv-show-url'] tv_show_name = req_attrib['tv-show-name'] channel_type = req_attrib['channel-type'] channel_name = req_attrib['channel-name'] currentPage = 1 if req_attrib.has_key('tv-show-page') and req_attrib['tv-show-page'] != '': currentPage = int(req_attrib['tv-show-page']) if currentPage != 1: url = url + 'page/' + req_attrib['tv-show-page'] + '/' logging.getLogger().debug('load tv show episodes...' + url) contentDiv = BeautifulSoup.SoupStrainer('div', {'id': 'left-div'}) soup = HttpClient().get_beautiful_soup(url=url + '?tag=video', parseOnlyThese=contentDiv) # soup = BeautifulSoup.BeautifulSoup(HttpClient().get_html_content(url=url)).findAll('div', {'id':'contentBody'})[0] tv_show_episode_items = [] threads = soup.findAll('h2', {'class': 'titles'}) tv_show_episode_items.extend( __retrieveTVShowEpisodes__(threads, tv_show_name, channel_type, channel_name)) logging.getLogger().debug('In DTB: total tv show episodes: %s' % str(len(tv_show_episode_items))) pagesDiv = soup.findChild('p', {'class': 'pagination'}) if pagesDiv is not None: pagesInfoTags = pagesDiv.findAllNext('a') for pagesInfoTag in pagesInfoTags: logging.getLogger().debug(pagesInfoTag) pageInfo = re.compile('page/(.+?)/').findall(pagesInfoTag['href']) if len(pageInfo) > 0: if re.search('Old', pagesInfoTag.getText(), re.IGNORECASE): item = xbmcgui.ListItem(label='<< Older Entries') elif re.search('Next', pagesInfoTag.getText(), re.IGNORECASE): item = xbmcgui.ListItem(label='Next Entries >>') item.setProperty('tv-show-page', pageInfo[0][0]) item.setProperty('channel-type', channel_type) item.setProperty('channel-name', channel_name) item.setProperty('tv-show-name', tv_show_name) item.setProperty('tv-show-url', tv_show_url) tv_show_episode_items.append(item) else: item = xbmcgui.ListItem(label='Newest Entries >>') item.setProperty('tv-show-page', '1') item.setProperty('channel-type', channel_type) item.setProperty('channel-name', channel_name) item.setProperty('tv-show-name', tv_show_name) item.setProperty('tv-show-url', tv_show_url) tv_show_episode_items.append(item) modelMap['tv_show_episode_items'] = tv_show_episode_items
def load_tv_show_episodes(req_attrib, modelMap): logging.getLogger().debug('load tv show episodes...') url = req_attrib['tv-show-url'] tv_show_url = req_attrib['tv-show-url'] tv_show_name = req_attrib['tv-show-name'] channel_type = req_attrib['channel-type'] channel_name = req_attrib['channel-name'] currentPage = 1 if req_attrib.has_key('tv-show-page') and req_attrib['tv-show-page'] != '': currentPage = int(req_attrib['tv-show-page']) if currentPage != 1: url = url + 'page/' + req_attrib['tv-show-page'] + '/' logging.getLogger().debug('load tv show episodes...' + url) contentDiv = BeautifulSoup.SoupStrainer('div', {'id':'left-div'}) soup = HttpClient().get_beautiful_soup(url=url + '?tag=video', parseOnlyThese=contentDiv) # soup = BeautifulSoup.BeautifulSoup(HttpClient().get_html_content(url=url)).findAll('div', {'id':'contentBody'})[0] tv_show_episode_items = [] threads = soup.findAll('h2', {'class':'titles'}) tv_show_episode_items.extend(__retrieveTVShowEpisodes__(threads, tv_show_name, channel_type, channel_name)) logging.getLogger().debug('In DTB: total tv show episodes: %s' % str(len(tv_show_episode_items))) pagesDiv = soup.findChild('p', {'class':'pagination'}) if pagesDiv is not None: pagesInfoTags = pagesDiv.findAllNext('a') for pagesInfoTag in pagesInfoTags: logging.getLogger().debug(pagesInfoTag) pageInfo = re.compile('page/(.+?)/').findall(pagesInfoTag['href']) if len(pageInfo) > 0: if re.search('Old', pagesInfoTag.getText(), re.IGNORECASE): item = xbmcgui.ListItem(label='<< Older Entries') elif re.search('Next', pagesInfoTag.getText(), re.IGNORECASE): item = xbmcgui.ListItem(label='Next Entries >>') item.setProperty('tv-show-page', pageInfo[0][0]) item.setProperty('channel-type', channel_type) item.setProperty('channel-name', channel_name) item.setProperty('tv-show-name', tv_show_name) item.setProperty('tv-show-url', tv_show_url) tv_show_episode_items.append(item) else: item = xbmcgui.ListItem(label='Newest Entries >>') item.setProperty('tv-show-page', '1') item.setProperty('channel-type', channel_type) item.setProperty('channel-name', channel_name) item.setProperty('tv-show-name', tv_show_name) item.setProperty('tv-show-url', tv_show_url) tv_show_episode_items.append(item) modelMap['tv_show_episode_items'] = tv_show_episode_items