Files
addon/channels/tapmovie.py
Alhaziel01 5348eebe19 - Riscritto News
- Finzioni peliculas -> movies, episodios -> episodes
 - Aggiornato sqlitedict
 - fix minori
2021-09-30 19:41:46 +02:00

104 lines
4.1 KiB
Python

# -*- coding: utf-8 -*-
# ------------------------------------------------------------
# Canale per 'dvdita'
from core import support, httptools
from core.item import Item
from platformcode import logger
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
def mainlist(item):
film = ['/browse/movie']
tvshow = ['/browse/tvshow']
search = ''
# [Voce Menu,['url','action','args',contentType]
top = [('Generi', ['', 'genres', '', 'undefined'])]
return locals()
def episodes(item):
logger.debug(item)
itemlist = []
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 genres(item):
itemlist = []
for n, genre in enumerate(httptools.downloadpage(host + api_url + 'categories', post={}).json.get('categories', [])):
itemlist.append(item.clone(action="movies", genre=genre.get('name'), title=genre.get('value'), n=n))
return support.thumb(itemlist, mode='genre')
def movies(item, text=''):
logger.debug('search', item)
itemlist = []
filter_type = False
if item.genre:
text = item.genre
cmd = 'search/category'
else:
cmd = 'search'
if not text:
filter_type = True
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'
if not filter_type or (filter_type and contentType == item.contentType):
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='episodes' if contentType == 'tvshow' else 'findvideos',
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 movies(item, text)
def findvideos(item):
itemlist = []
if not item.contentSeason: # film
json = httptools.downloadpage(host + api_url + 'movie', post={'movie_id': item.id}).json
else:
json = httptools.downloadpage(host + api_url + 'episode/links', post={'tvshow_id': item.id, 'season_id': item.contentSeason, 'episode_id': item.contentEpisodeNumber}).json
for i in json.get('links', []) + json.get('special', []):
itemlist.append(Item(url=i.get('link')))
return support.server(item, itemlist=itemlist)