diff --git a/channels/tapmovie.py b/channels/tapmovie.py index 7c5863d1..057f63fa 100644 --- a/channels/tapmovie.py +++ b/channels/tapmovie.py @@ -4,9 +4,13 @@ from core import support, httptools from core.item import Item +import sys +if sys.version_info[0] >= 3: from concurrent import futures +else: from concurrent_py2 import futures host = support.config.get_channel_url() api_url = '/api/v2/' +per_page = 24 @support.menu @@ -16,7 +20,7 @@ def mainlist(item): search = '' # [Voce Menu,['url','action','args',contentType] - # top = [('Generi', ['', 'genres', '', 'undefined'])] + top = [('Generi', ['', 'genres', '', 'undefined'])] return locals() @@ -31,7 +35,7 @@ def peliculas(item): itemlist.append(item.clone(id=i.get('id'), title=i.get('title'), contentTitle=i.get('title'), contentSerieName='' if movie else i.get('title'), contentPlot=i.get('description'), thumbnail=i.get('poster'), fanart=i.get('backdrop'), year=i.get('year'), action=action, - url='{}/{}/{}-{}'.format(host, item.contentType, i.get('id'), support.scrapertools.slugify(i.get('title'))))) + url='{}/{}/{}-{}'.format('https://filmigratis.org', item.contentType, i.get('id'), support.scrapertools.slugify(i.get('title'))))) support.tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) return itemlist @@ -40,32 +44,62 @@ def episodios(item): support.info(item) itemlist = [] - for season in httptools.downloadpage(host + api_url + 'tvshow', post={'tvshow_id': item.id}).json.get('season', []): - season_id = season['season_number'] - for episode in httptools.downloadpage(host + api_url + 'episodes', post={'tvshow_id': item.id, 'season_id': season_id}).json.get('episodes', []): - itemlist.append(item.clone(action="findvideos", contentSeason=season_id, contentEpisodeNumber=episode['episode_number'], id=item.id, - title=str(season_id)+'x'+episode['episode_number'], contentType='episode')) + with futures.ThreadPoolExecutor() as executor: + thL = [] + for season in httptools.downloadpage(host + api_url + 'tvshow', post={'tvshow_id': item.id}).json.get('season', []): + season_id = season['season_number'] + thL.append(executor.submit(httptools.downloadpage, host + api_url + 'episodes', post={'tvshow_id': item.id, 'season_id': season_id})) + for th in futures.as_completed(thL): + for episode in th.result().json.get('episodes', []): + itemlist.append(item.clone(action="findvideos", contentSeason=episode['season_id'], contentEpisodeNumber=episode['episode_number'], id=item.id, + title=episode['season_id']+'x'+episode['episode_number'], contentType='episode')) + support.scraper.sort_episode_list(itemlist) support.videolibrary(itemlist, item) support.download(itemlist, item) return itemlist -def search(item, text): +def genres(item): + itemlist = [] + for n, genre in enumerate(httptools.downloadpage(host + api_url + 'categories', post={}).json.get('categories', [])): + itemlist.append(item.clone(action="search_", genre=genre.get('name'), title=genre.get('value'), n=n)) + return support.thumb(itemlist, genre=True) + + +def search_(item, text=''): support.info('search', item) itemlist = [] - for result in httptools.downloadpage(host + api_url + 'search', post={'search': text}).json.get('results', []): + if item.genre: + text = item.genre + cmd = 'search/category' + else: + cmd = 'search' + + try: + page = int(item.url.split('?p=')[1]) + except: + page = 1 + results = httptools.downloadpage(host + api_url + cmd, post={'search': text, 'page': page}).json.get('results', []) + for result in results: contentType = 'movie' if result['type'] == 'FILM' else 'tvshow' itemlist.append(item.clone(id=result.get('id'), title=result.get('title'), contentTitle=result.get('title'), contentSerieName='' if contentType == 'movie' else result.get('title'), contentPlot=result.get('description'), thumbnail=result.get('poster'), fanart=result.get('backdrop'), year=result.get('year'), action='episodios' if contentType == 'tvshow' else 'findvideos', - url='{}/{}/{}-{}'.format(host, contentType, result.get('id'), support.scrapertools.slugify(result.get('title'))), + url='{}/{}/{}-{}'.format('https://filmigratis.org', contentType, result.get('id'), support.scrapertools.slugify(result.get('title'))), contentType=contentType)) support.tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + if len(results) >= per_page: + page += 1 + support.nextPage(itemlist, item, next_page='https://filmigratis.org/category/' + str(item.n) + '/' + item.genre + '?p=' + str(page)) return itemlist +def search(item, text): + return search_(item, text) + + def findvideos(item): itemlist = [] if not item.contentSeason: # film