Completato 1337x
This commit is contained in:
@@ -6,5 +6,14 @@
|
|||||||
"thumbnail": "1337x.png",
|
"thumbnail": "1337x.png",
|
||||||
"banner": "1337x.png",
|
"banner": "1337x.png",
|
||||||
"categories": ["movie", "tvshow", "torrent"],
|
"categories": ["movie", "tvshow", "torrent"],
|
||||||
"settings": []
|
"settings": [
|
||||||
|
{
|
||||||
|
"id": "itaSearch",
|
||||||
|
"type": "bool",
|
||||||
|
"label": "Cerca contenuti in italiano",
|
||||||
|
"default": false,
|
||||||
|
"enabled": true,
|
||||||
|
"visible": true
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,95 +1,183 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Canale per 133x
|
# Canale per 1337x
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
from core import httptools, support, jsontools
|
import inspect
|
||||||
from platformcode import logger
|
from core import support
|
||||||
import requests
|
from platformcode import logger, config
|
||||||
|
|
||||||
# host = support.config.get_channel_url()
|
# host = support.config.get_channel_url()
|
||||||
host = 'https://www.1337x.to'
|
host = 'https://www.1337x.to'
|
||||||
# headers = {
|
|
||||||
# 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
|
|
||||||
# 'accept-encoding': 'gzip, deflate, br',
|
|
||||||
# 'accept-language': 'it,en;q=0.9,it-IT;q=0.8,en-GB;q=0.7,en-US;q=0.6',
|
|
||||||
# 'cache-control': 'no-cache',
|
|
||||||
# 'pragma': 'no-cache',
|
|
||||||
# 'referer': 'https://www.1337x.to/',
|
|
||||||
# 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.62'}
|
|
||||||
|
|
||||||
# def getData(item):
|
|
||||||
# support.dbg()
|
|
||||||
# json = jsontools.load(base64.b64decode(support.match(item, patron=r'window.park\s*=\s*"([^"]+)').match))
|
|
||||||
# data = support.match(json['page_url'], headers=json['page_headers']).data
|
|
||||||
# return data
|
|
||||||
|
|
||||||
@support.menu
|
@support.menu
|
||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
|
|
||||||
film = ['/movie-lib-sort/all/it/release/desc/all/1/']
|
|
||||||
|
|
||||||
tvshow = ['/popular-movies',
|
|
||||||
('Popolari', ['/popular-movies', 'popular'])]
|
|
||||||
|
|
||||||
# menu = [
|
menu = [('Film ITA {bullet bold}',['/movie-lib-sort/all/it/popularity/desc/all/1/', 'peliculas', '', 'movie']),
|
||||||
# ('BDRiP {film}', ['/categoria.php?active=0&category=1&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
('Film {submenu}',['/movie-library/1/', 'peliculas', 'filter', 'movie']),
|
||||||
# ('Cerca BDRiP... {submenu} {film}', ['/torrent-ita/1/', 'search', ['search', 'movie', True], 'movie']),
|
('Serie TV {bullet bold}',['/series-library/', 'az', '', 'tvshow'])]
|
||||||
# ('DVD {film}', ['/categoria.php?active=0&category=20&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
|
||||||
# ('Cerca DVD... {submenu} {film}', ['/torrent-ita/20/', 'search', ['search', 'movie', True], 'movie']),
|
search = ''
|
||||||
# ('Screener {film}', ['/categoria.php?active=0&category=19&order=data&by=DESC&page=', 'peliculas', [0, 'movie', True], 'undefined']),
|
|
||||||
# ('Cerca Screener.. {submenu} {film}', ['/torrent-ita/19/', 'search', ['search', 'movie', True], 'movie']),
|
|
||||||
# ('Serie TV', ['/categoria.php?active=0&category=15&order=data&by=DES&page=', 'peliculas', [0 , 'tvshow', True], 'tvshow']),
|
|
||||||
# ('Cerca Serie TV.. {submenu}', ['/torrent-ita/15/', 'search', ['search', 'tvshow',True], 'tvshow']),
|
|
||||||
# ('Anime', ['/categoria.php?active=0&category=5&order=data&by=DESC&page=', 'peliculas', [0, 'anime', True], 'tvshow']),
|
|
||||||
# ('Cerca Anime.. {submenu}', ['/torrent-ita/5/', 'search', ['search', 'anime', True], 'tvshow']),
|
|
||||||
# ('Musica', ['/categoria.php?active=0&category=2&order=data&by=DESC&page=', 'peliculas', [0, 'music', False], 'music']),
|
|
||||||
# ('Cerca Musica.. {submenu}', ['/torrent-ita/2/', 'search', ['search', 'music', False], 'music']),
|
|
||||||
# ('Audiolibri {musica}', ['/categoria.php?active=0&category=18&order=data&by=DESC&page=', 'peliculas', [0, 'music', False], 'music']),
|
|
||||||
# ('Cerca Audiolibri.. {submenu}', ['/torrent-ita/18/', 'search', ['search', 'music', False], 'music']),
|
|
||||||
# # mostrerebbe anche risultati non "multimediali" e allungherebbero inutilmente la ricerca globale
|
|
||||||
# # ('Altro {film}', ['/categoria.php?active=0&category=4&order=data&by=DESC&page=', 'peliculas', [0, 'other', False]]),
|
|
||||||
# # ('Cerca altro.. {submenu}', ['/torrent-ita/4/', 'search', ['search', 'other', False]]),
|
|
||||||
# # ('Cerca Tutto... {color kod bold}', ['/argh.php?search=', 'search', ['search', 'all', False]])
|
|
||||||
# ]
|
|
||||||
|
|
||||||
return locals()
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
@support.scrape
|
def moviefilter(item):
|
||||||
def peliculas(item):
|
from platformcode import platformtools
|
||||||
patron = r'<img alt="[^"]*" data-original="(?P<thumb>[^"]+)(?:[^>]+>){15}(?P<title>[^<]+)(?:[^>]+>){18,23}\s*<a href="(?P<url>[^"]+)'
|
|
||||||
patronNext = r'"([^"]+)">>>'
|
item.args = ''
|
||||||
return locals()
|
controls = []
|
||||||
|
data = support.match(item).data
|
||||||
|
|
||||||
|
patronBlock = r'<select name="{}"[^>]+>(.+?)</select>'
|
||||||
|
patron = r'value="([^"]+)">([^<]+)'
|
||||||
|
|
||||||
|
genres = support.match(data, patronBlock=patronBlock.format('genre'), patron=patron).matches
|
||||||
|
years = support.match(data, patronBlock=patronBlock.format('year'), patron=patron).matches
|
||||||
|
langs = support.match(data, patronBlock=patronBlock.format('lang'), patron=patron).matches
|
||||||
|
sorts = support.match(data, patronBlock=patronBlock.format('sortby'), patron=patron).matches
|
||||||
|
orders = support.match(data, patronBlock=patronBlock.format('sort'), patron=patron).matches
|
||||||
|
|
||||||
|
item.genreValues = [x[0] for x in genres]
|
||||||
|
item.yearValues = [x[0] for x in years]
|
||||||
|
item.langValues = [x[0] for x in langs]
|
||||||
|
item.sortValues = [x[0] for x in sorts]
|
||||||
|
item.orderValues = [x[0] for x in orders]
|
||||||
|
|
||||||
|
genres = [g[1] for g in genres]
|
||||||
|
years = [g[1] for g in years]
|
||||||
|
langs = [g[1] for g in langs]
|
||||||
|
sorts = [g[1] for g in sorts]
|
||||||
|
orders = [g[1] for g in orders]
|
||||||
|
|
||||||
|
controls.append({'id': 'lang', 'label': 'Lingua', 'type': 'list', 'enabled':True, 'visible':True, 'lvalues':langs, 'default': 0})
|
||||||
|
controls.append({'id': 'genre', 'label': 'Genere', 'type': 'list', 'enabled':True, 'visible':True, 'lvalues':genres, 'default': 0})
|
||||||
|
controls.append({'id': 'year', 'label': 'Anno', 'type': 'list', 'enabled':True, 'visible':True, 'lvalues':years, 'default': 0})
|
||||||
|
controls.append({'id': 'sort', 'label': 'Anno', 'type': 'list', 'enabled':True, 'visible':True, 'lvalues':sorts, 'default': 0})
|
||||||
|
controls.append({'id': 'order', 'label': 'Anno', 'type': 'list', 'enabled':True, 'visible':True, 'lvalues':orders, 'default': 0})
|
||||||
|
return platformtools.show_channel_settings(list_controls=controls, item=item, caption='Filtro', callback='filtered')
|
||||||
|
|
||||||
|
|
||||||
|
def filtered(item, values):
|
||||||
|
|
||||||
|
genre = item.genreValues[values['genre']]
|
||||||
|
lang = item.langValues[values['lang']]
|
||||||
|
sortby = item.sortValues[values['sort']]
|
||||||
|
order = item.orderValues[values['order']]
|
||||||
|
year = item.yearValues[values['year']]
|
||||||
|
|
||||||
|
return f'{host}/movie-lib-sort/{genre}/{lang}/{sortby}/{order}/{year}/1/'
|
||||||
|
|
||||||
|
|
||||||
|
def az(item):
|
||||||
|
import string
|
||||||
|
itemlist = [item.clone(title='1-9', url=f'{item.url}num/1/', action='peliculas', thumbnail=support.thumb('az'))]
|
||||||
|
for letter in list(string.ascii_lowercase):
|
||||||
|
itemlist.append(item.clone(title=letter.upper(), url=f'{item.url}{letter}/1/', action='peliculas', thumbnail=support.thumb('az')))
|
||||||
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
def search(item, text):
|
def search(item, text):
|
||||||
support.info(item, text)
|
support.info('search', text)
|
||||||
if 'all' in item.args:
|
item.args = 'search'
|
||||||
item.url += text
|
if config.get_setting('itaSearch', channel=item.channel, default=False):
|
||||||
else:
|
text += ' ita'
|
||||||
item.url += text + '.html'
|
text = text.replace(' ', '+')
|
||||||
|
item.url = f'{host}/search/{text}/1/'
|
||||||
try:
|
try:
|
||||||
return peliculas(item)
|
return peliculas(item)
|
||||||
# Cattura la eccezione così non interrompe la ricerca globle se il canale si rompe!
|
# Cattura la eccezione così non interrompe la ricerca globle se il canale si rompe!
|
||||||
except:
|
except:
|
||||||
import sys
|
import sys
|
||||||
for line in sys.exc_info():
|
for line in sys.exc_info():
|
||||||
support.logger.error("search except: %s" % line)
|
support.logger.error("search except: ", line)
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
@support.scrape
|
||||||
|
def peliculas(item):
|
||||||
|
if item.args == 'filter':
|
||||||
|
item.url = moviefilter(item)
|
||||||
|
|
||||||
|
data = support.match(item).data
|
||||||
|
if item.args == 'search':
|
||||||
|
sceneTitle = 'undefined'
|
||||||
|
patron = r'<a href="(?P<url>[^"]+)">(?P<title>[^<]+)<(?:[^>]+>){3,7}(?P<seed>[^<]+)<(?:[^>]+>){6}(?P<size>[^<]+)<span'
|
||||||
|
patronNext = r'"([^"]+)">>>'
|
||||||
|
elif item.contentType == 'movie':
|
||||||
|
patron = r'<img alt="[^"]*" data-original="(?P<thumb>[^"]+)(?:[^>]+>){15}(?P<title>[^<]+)(?:[^>]+>){18,23}\s*<a href="(?P<url>[^"]+)'
|
||||||
|
patronNext = r'"([^"]+)">>>'
|
||||||
|
else:
|
||||||
|
action = 'seasons'
|
||||||
|
patron = r'<img src="(?P<thumb>[^"]+)(?:[^>]+>){4}\s*<a href="(?P<url>[^"]+)[^>]+>(?P<title>[^<]+)'
|
||||||
|
|
||||||
|
if (item.args == 'search' or item.contentType != 'movie') and inspect.stack()[4][3] not in ['get_channel_results']:
|
||||||
|
def itemlistHook(itemlist):
|
||||||
|
lastUrl = support.match(data, patron=r'href="([^"]+)">Last').match
|
||||||
|
if lastUrl:
|
||||||
|
currentPage = support.match(item.url, string=True, patron=r'/(\d+)/').match
|
||||||
|
nextPage = int(currentPage) + 1
|
||||||
|
support.nextPage(itemlist, item, next_page=item.url.replace(f'/{currentPage}', f'/{nextPage}'), function_or_level='peliculas')
|
||||||
|
return itemlist
|
||||||
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
|
@support.scrape
|
||||||
|
def seasons(item):
|
||||||
|
item.contentType == 'season'
|
||||||
|
action = 'episodios'
|
||||||
|
patron = r'<li>\s*<a href="(?P<url>[^"]+)[^>]+>\s*<img alt="[^"]*"\ssrc="(?P<thumb>[^"]+)(?:([^>]+)>){2}\s*(?P<title>\w+ (?P<season>\d+))'
|
||||||
|
return locals()
|
||||||
|
|
||||||
|
@support.scrape
|
||||||
|
def episodios(item):
|
||||||
|
patron = r'<img src="(?P<thumb>[^"]+)(?:[^>]+>){13}\s*(?P<season>\d+)x(?P<episode>\d+)\s*<span class="seperator">(?:[^>]+>){2}\s*<a href="(?P<url>[^"]+)">(?P<title>[^<]+)'
|
||||||
|
def itemlistHook(itemlist):
|
||||||
|
itemlist.reverse()
|
||||||
|
return itemlist
|
||||||
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
def findvideos(item):
|
def findvideos(item):
|
||||||
from lib.guessit import guessit
|
|
||||||
itemlist = []
|
itemlist = []
|
||||||
items = support.match(item.url, patron=r'<a href="([^"]+)">([^<]+)<(?:[^>]+>){3}([^<]+)<(?:[^>]+>){6}([^<]+)<span').matches
|
item.disableAutoplay = True
|
||||||
|
if item.args == 'search':
|
||||||
|
itemlist.append(item.clone(server='torrent', action='play'))
|
||||||
|
else:
|
||||||
|
from lib.guessit import guessit
|
||||||
|
|
||||||
for url, title, seed, size in items:
|
items = support.match(item.url, patron=r'<a href="([^"]+)">([^<]+)<(?:[^>]+>){3}([^<]+)<(?:[^>]+>){6}([^<]+)<span').matches
|
||||||
title = guessit(title).get('title', '')
|
|
||||||
itemlist.append(item.clone(title = f'{title} [Seed={seed}] [{size}]', url=host + url, server='torrent', action='play'))
|
for url, title, seed, size in items:
|
||||||
|
parsedTitle = guessit(title)
|
||||||
|
|
||||||
|
title = support.scrapertools.unescape(parsedTitle.get('title', ''))
|
||||||
|
|
||||||
|
lang = ''
|
||||||
|
if parsedTitle.get('language'):
|
||||||
|
langs = parsedTitle.get('language')
|
||||||
|
if isinstance(langs, list):
|
||||||
|
lang = 'MULTI'
|
||||||
|
else:
|
||||||
|
lang = vars(langs).get('alpha3').upper()
|
||||||
|
if not (lang.startswith('MUL') or lang.startswith('ITA')):
|
||||||
|
subs = parsedTitle.get('subtitle_language')
|
||||||
|
if isinstance(subs, list):
|
||||||
|
lang = 'Multi-Sub'
|
||||||
|
else:
|
||||||
|
lang = vars(subs).get('alpha3').upper()
|
||||||
|
if lang:
|
||||||
|
title = f'{title} [{lang}]'
|
||||||
|
|
||||||
|
sizematch = support.match(size, patron='(\d+(?:\.\d+)?)\s* (\w+)').match
|
||||||
|
sizenumber = float(sizematch[0])
|
||||||
|
if sizematch[1].lower() == 'gb':
|
||||||
|
sizenumber = sizenumber * 1024
|
||||||
|
|
||||||
|
itemlist.append(item.clone(title = f'{title} [{seed} SEEDS] [{size}]', seed=int(seed), size=sizenumber, url=host + url, server='torrent', action='play'))
|
||||||
|
itemlist.sort(key=lambda it: (it.seed, it.size), reverse=True)
|
||||||
|
|
||||||
Videolibrary = True if 'movie' in item.args else False
|
Videolibrary = True if 'movie' in item.args else False
|
||||||
return support.server(item, itemlist=itemlist, Videolibrary=Videolibrary)
|
return support.server(item, itemlist=itemlist, Videolibrary=Videolibrary, Sorted=False)
|
||||||
|
|
||||||
|
|
||||||
def play(item):
|
def play(item):
|
||||||
|
|||||||
@@ -412,6 +412,19 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t
|
|||||||
if parsedTitle.get('episode_title'):
|
if parsedTitle.get('episode_title'):
|
||||||
longtitle += s + parsedTitle.get('episode_title')
|
longtitle += s + parsedTitle.get('episode_title')
|
||||||
infolabels['episodeName'] = parsedTitle.get('episode_title')
|
infolabels['episodeName'] = parsedTitle.get('episode_title')
|
||||||
|
if parsedTitle.get('language'):
|
||||||
|
langs = parsedTitle.get('language')
|
||||||
|
if isinstance(langs, list):
|
||||||
|
lang = 'MULTI'
|
||||||
|
else:
|
||||||
|
lang = vars(langs).get('alpha3').upper()
|
||||||
|
if not (lang.startswith('MUL') or lang.startswith('ITA')):
|
||||||
|
subs = parsedTitle.get('subtitle_language')
|
||||||
|
if isinstance(subs, list):
|
||||||
|
lang = 'Multi-Sub'
|
||||||
|
else:
|
||||||
|
lang = vars(subs).get('alpha3').upper()
|
||||||
|
|
||||||
except:
|
except:
|
||||||
import traceback
|
import traceback
|
||||||
logger.error(traceback.format_exc())
|
logger.error(traceback.format_exc())
|
||||||
@@ -450,7 +463,7 @@ def scrapeBlock(item, args, block, patron, headers, action, pagination, debug, t
|
|||||||
infoLabels=infolabels,
|
infoLabels=infolabels,
|
||||||
thumbnail=item.prevthumb if item.prevthumb else item.thumbnail if not scraped["thumb"] else scraped["thumb"],
|
thumbnail=item.prevthumb if item.prevthumb else item.thumbnail if not scraped["thumb"] else scraped["thumb"],
|
||||||
args=item.args,
|
args=item.args,
|
||||||
contentSerieName= title if contentType not in ['movie'] and function != 'episodios' or contentType in ['undefined'] else item.contentSerieName,
|
contentSerieName= title if contentType not in ['movie'] and function not in ['episodios', 'seasons'] or contentType in ['undefined'] else item.contentSerieName,
|
||||||
contentTitle= title if contentType in ['movie', 'undefined'] and function == 'peliculas' else item.contentTitle,
|
contentTitle= title if contentType in ['movie', 'undefined'] and function == 'peliculas' else item.contentTitle,
|
||||||
contentLanguage = lang1,
|
contentLanguage = lang1,
|
||||||
contentSeason= infolabels.get('season', ''),
|
contentSeason= infolabels.get('season', ''),
|
||||||
@@ -608,7 +621,7 @@ def scrape(func):
|
|||||||
|
|
||||||
if itemlist and action != 'play' and 'patronMenu' not in args and 'patronGenreMenu' not in args \
|
if itemlist and action != 'play' and 'patronMenu' not in args and 'patronGenreMenu' not in args \
|
||||||
and not stackCheck(['add_tvshow', 'get_newest']) and (function not in ['episodios', 'mainlist'] \
|
and not stackCheck(['add_tvshow', 'get_newest']) and (function not in ['episodios', 'mainlist'] \
|
||||||
or (function in ['episodios'] and config.get_setting('episode_info') and itemlist[0].season)):
|
or (function in ['episodios', 'seasons'] and config.get_setting('episode_info') and itemlist[0].season)):
|
||||||
# dbg()
|
# dbg()
|
||||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||||
|
|
||||||
@@ -757,7 +770,7 @@ def dooplay_menu(item, type):
|
|||||||
return locals()
|
return locals()
|
||||||
|
|
||||||
|
|
||||||
def menuItem(itemlist, filename, title='', action='', url='', contentType='undefined', args=[], style=True):
|
def menuItem(itemlist, filename, title='', action='', url='', contentType='undefined', args=[], style=True, folder=True):
|
||||||
# Function to simplify menu creation
|
# Function to simplify menu creation
|
||||||
|
|
||||||
# Call typo function
|
# Call typo function
|
||||||
@@ -775,7 +788,8 @@ def menuItem(itemlist, filename, title='', action='', url='', contentType='undef
|
|||||||
extra = extra,
|
extra = extra,
|
||||||
args = args,
|
args = args,
|
||||||
contentType = contentType,
|
contentType = contentType,
|
||||||
globalsearch = not style
|
globalsearch = not style,
|
||||||
|
folder = folder
|
||||||
))
|
))
|
||||||
|
|
||||||
|
|
||||||
@@ -821,7 +835,8 @@ def menu(func):
|
|||||||
url = host + var[0] if len(var) > 0 else '',
|
url = host + var[0] if len(var) > 0 else '',
|
||||||
action = var[1] if len(var) > 1 else 'peliculas',
|
action = var[1] if len(var) > 1 else 'peliculas',
|
||||||
args=var[2] if len(var) > 2 else '',
|
args=var[2] if len(var) > 2 else '',
|
||||||
contentType= var[3] if len(var) > 3 else 'movie')
|
contentType= var[3] if len(var) > 3 else 'movie',
|
||||||
|
folder = var[4] if len(var) > 4 else True)
|
||||||
|
|
||||||
# Make MAIN MENU
|
# Make MAIN MENU
|
||||||
elif dictUrl[name] is not None:
|
elif dictUrl[name] is not None:
|
||||||
@@ -844,7 +859,8 @@ def menu(func):
|
|||||||
url = host + var[0] if len(var) > 0 else '',
|
url = host + var[0] if len(var) > 0 else '',
|
||||||
action = var[1] if len(var) > 1 else 'peliculas',
|
action = var[1] if len(var) > 1 else 'peliculas',
|
||||||
args=var[2] if len(var) > 2 else '',
|
args=var[2] if len(var) > 2 else '',
|
||||||
contentType= var[3] if len(var) > 3 else 'movie' if name == 'film' else 'tvshow')
|
contentType= var[3] if len(var) > 3 else 'movie' if name == 'film' else 'tvshow',
|
||||||
|
folder = var[4] if len(var) > 4 else True)
|
||||||
# add search menu for category
|
# add search menu for category
|
||||||
if 'search' not in args: menuItem(itemlist, filename, config.get_localized_string(70741) % title + '… {submenu bold}', 'search', host + url, contentType='movie' if name == 'film' else 'tvshow', style=not global_search)
|
if 'search' not in args: menuItem(itemlist, filename, config.get_localized_string(70741) % title + '… {submenu bold}', 'search', host + url, contentType='movie' if name == 'film' else 'tvshow', style=not global_search)
|
||||||
|
|
||||||
@@ -860,7 +876,8 @@ def menu(func):
|
|||||||
url = host + var[0] if len(var) > 0 else '',
|
url = host + var[0] if len(var) > 0 else '',
|
||||||
action = var[1] if len(var) > 1 else 'peliculas',
|
action = var[1] if len(var) > 1 else 'peliculas',
|
||||||
args=var[2] if len(var) > 2 else '',
|
args=var[2] if len(var) > 2 else '',
|
||||||
contentType= var[3] if len(var) > 3 else 'movie',)
|
contentType= var[3] if len(var) > 3 else 'movie',
|
||||||
|
folder = var[4] if len(var) > 4 else True)
|
||||||
|
|
||||||
if single_search:
|
if single_search:
|
||||||
menuItem(itemlist, filename, config.get_localized_string(70741) % '… {bold}', 'search', host + dictUrl['search'], style=not global_search)
|
menuItem(itemlist, filename, config.get_localized_string(70741) % '… {bold}', 'search', host + dictUrl['search'], style=not global_search)
|
||||||
@@ -1243,7 +1260,7 @@ def pagination(itemlist, item, page, perpage, function_level=1):
|
|||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=True, patronTag=None, Videolibrary=True):
|
def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=True, patronTag=None, Videolibrary=True, Sorted=True):
|
||||||
logger.debug()
|
logger.debug()
|
||||||
|
|
||||||
if not data and not itemlist:
|
if not data and not itemlist:
|
||||||
@@ -1253,7 +1270,7 @@ def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=Tru
|
|||||||
itemlist = itemlist + itemList
|
itemlist = itemlist + itemList
|
||||||
verifiedItemlist = []
|
verifiedItemlist = []
|
||||||
|
|
||||||
def getItem(videoitem):
|
def getItem(n, videoitem):
|
||||||
# if not videoitem.server:
|
# if not videoitem.server:
|
||||||
# s = servertools.get_server_from_url(videoitem.url)
|
# s = servertools.get_server_from_url(videoitem.url)
|
||||||
# videoitem.server = s[2] if s else 'directo'
|
# videoitem.server = s[2] if s else 'directo'
|
||||||
@@ -1299,6 +1316,7 @@ def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=Tru
|
|||||||
vi.thumbnail = videoitem.thumbnail
|
vi.thumbnail = videoitem.thumbnail
|
||||||
vi.forcethumb = True
|
vi.forcethumb = True
|
||||||
videoitem = vi
|
videoitem = vi
|
||||||
|
videoitem.position = n
|
||||||
return videoitem
|
return videoitem
|
||||||
|
|
||||||
# non threaded for webpdb
|
# non threaded for webpdb
|
||||||
@@ -1309,14 +1327,18 @@ def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=Tru
|
|||||||
# verifiedItemlist.append(it)
|
# verifiedItemlist.append(it)
|
||||||
|
|
||||||
with futures.ThreadPoolExecutor() as executor:
|
with futures.ThreadPoolExecutor() as executor:
|
||||||
thL = [executor.submit(getItem, videoitem) for videoitem in itemlist if videoitem.url or videoitem.video_urls]
|
thL = [executor.submit(getItem, n, videoitem) for n,videoitem in enumerate(itemlist) if videoitem.url or videoitem.video_urls]
|
||||||
for it in futures.as_completed(thL):
|
for it in futures.as_completed(thL):
|
||||||
if it.result() and not config.get_setting("black_list", server=it.result().server.lower()):
|
if it.result() and not config.get_setting("black_list", server=it.result().server.lower()):
|
||||||
verifiedItemlist.append(it.result())
|
verifiedItemlist.append(it.result())
|
||||||
try:
|
|
||||||
verifiedItemlist.sort(key=lambda it: int(re.sub(r'\D','',it.quality)))
|
if not Sorted:
|
||||||
except:
|
verifiedItemlist.sort(key=lambda it: it.position)
|
||||||
verifiedItemlist.sort(key=lambda it: it.quality, reverse=True)
|
# if Sorted:
|
||||||
|
# try:
|
||||||
|
# verifiedItemlist.sort(key=lambda it: int(re.sub(r'\D','',it.quality)))
|
||||||
|
# except:
|
||||||
|
# verifiedItemlist.sort(key=lambda it: it.quality, reverse=True)
|
||||||
if patronTag:
|
if patronTag:
|
||||||
addQualityTag(item, verifiedItemlist, data, patronTag)
|
addQualityTag(item, verifiedItemlist, data, patronTag)
|
||||||
|
|
||||||
@@ -1325,7 +1347,8 @@ def server(item, data='', itemlist=[], headers='', CheckLinks=True, Download=Tru
|
|||||||
checklinks_number = config.get_setting('checklinks_number')
|
checklinks_number = config.get_setting('checklinks_number')
|
||||||
verifiedItemlist = servertools.check_list_links(verifiedItemlist, checklinks_number)
|
verifiedItemlist = servertools.check_list_links(verifiedItemlist, checklinks_number)
|
||||||
|
|
||||||
verifiedItemlist = servertools.sort_servers(verifiedItemlist)
|
if Sorted:
|
||||||
|
verifiedItemlist = servertools.sort_servers(verifiedItemlist)
|
||||||
|
|
||||||
if Videolibrary and item.contentChannel != 'videolibrary':
|
if Videolibrary and item.contentChannel != 'videolibrary':
|
||||||
videolibrary(verifiedItemlist, item)
|
videolibrary(verifiedItemlist, item)
|
||||||
|
|||||||
@@ -320,7 +320,7 @@ def findvideos(item, itemlist=[]):
|
|||||||
platformtools.render_items(itemlist, item)
|
platformtools.render_items(itemlist, item)
|
||||||
if not serverlist:
|
if not serverlist:
|
||||||
platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(60347))
|
platformtools.dialog_notification(config.get_localized_string(20000), config.get_localized_string(60347))
|
||||||
elif len(serverlist) == 1 and serverlist[0].server != 'torrent':
|
elif len(serverlist) == 1:
|
||||||
# If there is only one server play it immediately
|
# If there is only one server play it immediately
|
||||||
play(itemlist[0].clone(no_return=True))
|
play(itemlist[0].clone(no_return=True))
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -2011,7 +2011,7 @@ def serverWindow(item, itemlist):
|
|||||||
|
|
||||||
if itemlist:
|
if itemlist:
|
||||||
reopen = False
|
reopen = False
|
||||||
if config.get_setting('autoplay'):
|
if config.get_setting('autoplay') and not item.disableAutoplay:
|
||||||
reopen = True
|
reopen = True
|
||||||
from core import autoplay
|
from core import autoplay
|
||||||
autoplay.start(itemlist, item)
|
autoplay.start(itemlist, item)
|
||||||
|
|||||||
Reference in New Issue
Block a user