def getLastTvShow(self, streamItem=False): """ Method to get all last tv show @return a list of StreamItem """ href = '/' # ___ Initialize the list to return elementList = [] # ___ Get the response response = self.openPage(href) if response and response.getcode() == 200: content = response.read() linksPattern = re.compile( '(.*)(window\.__NUXT__=)(.*?)(;</script>)(.*)', re.DOTALL) match = linksPattern.match(content) if match is not None: jsonEl = json.loads(match.group(3)) for movie in jsonEl['data'][0]['nouveaux']['series']: title = movie['name'] href = '/series/' + strUtil.remove_special_char( title).replace(' ', '-').lower() + '-' + str( movie['customID']) + '.html' year = movie['releaseYear'] quality = movie['quality'] langClass = movie['language'] lang = None subtitle = None if langClass == 'vf': lang = 'FR' else: lang = 'VO' subtitle = 'FR' title = strUtil.cleanTitle(title) title = strUtil.deleteAccent(title) self.__LOGGER__.log("Clean title: " + str(title), xbmc.LOGDEBUG) # __ Create the element element = StreamItem(title) element.setHref(href) element.setYear(year) element.setQuality(quality) element.setLang(lang) if subtitle is not None: element.setSubTitle(subtitle) element.setSourceId(self.ID) element.setId(str(movie['customID'])) element.setIconImage(movie['poster']) element.setTvShowName(title) element.setType(StreamItem.TYPE_TVSHOW) element.setAction(StreamItem.ACTION_DISPLAY_SEASONS) elementList.append(element) return elementList
def getMovieList(self, streamItem=False): """ Method to get a list of movie @return a list of StreamItem """ href = '/categories/films/page/1' page = 1 if streamItem and streamItem.isPage(): page = streamItem.getPage() href = streamItem.getHref() # ___ Initialize the list to return elementList = [] # ___ Get the response response = self.openPage(href) if response and response.getcode() == 200: content = response.read() linksPattern = re.compile( '(.*)(window\.__NUXT__=)(.*?)(;</script>)(.*)', re.DOTALL) match = linksPattern.match(content) if match is not None: jsonEl = json.loads(match.group(3)) for movie in jsonEl['data'][0]['elements']: href = '/films/' + strUtil.remove_special_char( movie['name']).replace(' ', '-').lower() + '-' + str( movie['customID']) + '.html' year = movie['releaseYear'] quality = movie['quality'] langClass = movie['language'] lang = None subtitle = None if langClass == 'vf': lang = 'FR' else: lang = 'VO' subtitle = 'FR' title = strUtil.cleanTitle(movie['name']) title = strUtil.deleteAccent(title) self.__LOGGER__.log("Clean title: " + str(title), xbmc.LOGDEBUG) # __ Create the element element = StreamItem(title) element.setHref(href) element.setYear(year) element.setQuality(quality) element.setLang(lang) if subtitle is not None: element.setSubTitle(subtitle) element.setAction(StreamItem.ACTION_DISPLAY_LINKS) element.setType(StreamItem.TYPE_MOVIE) element.setSourceId(self.ID) element.setId(str(movie['customID'])) element.setIconImage(movie['poster']) elementList.append(element) if streamItem: element = streamItem.copy() page = page + 1 element.setType(StreamItem.TYPE_PAGE) element.setPage(page) element.setTitle('Page ' + str(element.getPage())) element.setHref('/categories/films/page/' + str(page)) elementList.append(element) else: page = page + 1 element = StreamItem('Page ' + str(element.getPage())) element.setType(StreamItem.TYPE_PAGE) element.setPage(page) element.setTitle('Page ' + str(element.getPage())) element.setAction(StreamItem.ACTION_DISPLAY_TYPE_LIST) element.setSubType(StreamItem.SUBTYPE_LIST) element.setHref('/categories/films/page/' + str(page)) elementList.append(element) return elementList
def getMovieContent(self, streamItem, page, response): """ Generic method to get movie content @param response: the html response @param subtype: the subtype for streamItem """ elementList = [] if response and response.getcode() == 200: content = response.read() soup = BeautifulSoup(content) if soup is not None: movies = soup.find('section', { 'class': 'box' }).findAll( 'div', {'class': 'column is-one-quarter-desktop is-half-mobile'}) for movie in movies: title = movie.find( 'img', {'class': 'image-fix'})['alt'].encode('UTF-8') title = strUtil.unescapeHtml(str(title)) self.__LOGGER__.log("Finded title: " + title, xbmc.LOGDEBUG) href = movie.find('a')['href'] year = strUtil.getYearFromTitle(title) quality = movie.find( 'div', { 'class': re.compile('(media-content)(.*)') }).text.encode('UTF-8') langClass = movie.find('img', {'class': 'language-image'})['src'] lang = None subtitle = None if langClass == '/vf.png': lang = 'FR' else: lang = 'VO' subtitle = 'FR' title = strUtil.cleanTitle(title) self.__LOGGER__.log("Clean title: " + str(title), xbmc.LOGDEBUG) # __ Create the element element = StreamItem(title) element.setHref(href) element.setYear(year) element.setQuality(quality) element.setLang(lang) element.setSubTitle(subtitle) element.setAction(StreamItem.ACTION_DISPLAY_LINKS) element.setType(StreamItem.TYPE_MOVIE) element.setSourceId(self.ID) element.setIconImage( movie.find('img', {'class': 'image-fix'})['src']) # __ Add the element to the list elementList.append(element) nextPage = StreamItem(constant.__addon__.getLocalizedString(70010)) nextPage.setIconImage(icons.getIcon('nextpage')) nextPage.setType(StreamItem.TYPE_MOVIE) nextPage.setAction(StreamItem.ACTION_DISPLAY_TYPE_LIST) nextPage.setSubType(streamItem.getSubType()) nextPage.setPage(int(page) + 1) elementList.append(nextPage) return elementList