diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index 31f2275a..79c764b7 100644 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -9,6 +9,7 @@ from platformcode import config, logger from platformcode import platformtools from platformcode import launcher from time import sleep +from platformcode.config import get_setting __channel__ = "autoplay" @@ -117,7 +118,7 @@ def start(itemlist, item): # Obtiene los ajustes des autoplay para este canal settings_node = channel_node.get('settings', {}) - if settings_node['active']: + if get_setting('autoplay') or settings_node['active']: url_list_valid = [] autoplay_list = [] autoplay_b = [] @@ -142,7 +143,7 @@ def start(itemlist, item): # 2: Solo servidores # 3: Solo calidades # 4: No ordenar - if settings_node['custom_servers'] and settings_node['custom_quality']: + if (settings_node['custom_servers'] and settings_node['custom_quality']) or get_setting('autoplay'): priority = settings_node['priority'] # 0: Servidores y calidades o 1: Calidades y servidores elif settings_node['custom_servers']: priority = 2 # Solo servidores @@ -391,14 +392,15 @@ def init(channel, list_servers, list_quality, reset=False): # Se comprueba que no haya calidades ni servidores duplicados if 'default' not in list_quality: list_quality.append('default') - list_servers = list(set(list_servers)) - list_quality = list(set(list_quality)) + # list_servers = list(set(list_servers)) + # list_quality = list(set(list_quality)) # Creamos el nodo del canal y lo añadimos channel_node = {"servers": list_servers, "quality": list_quality, "settings": { "active": False, + "plan_b": True, "custom_servers": False, "custom_quality": False, "priority": 0}} @@ -455,7 +457,7 @@ def check_value(channel, itemlist): for item in itemlist: if item.server.lower() not in server_list and item.server !='': - server_list.append(item.server) + server_list.append(item.server.lower()) change = True if item.quality not in quality_list and item.quality !='': quality_list.append(item.quality) @@ -672,7 +674,7 @@ def is_active(channel): # Obtiene los ajustes des autoplay para este canal settings_node = channel_node.get('settings', {}) - return settings_node.get('active', False) + return settings_node.get('active', False) or get_setting('autoplay') def reset(item, dict): diff --git a/plugin.video.alfa/lib/unshortenit.py b/plugin.video.alfa/lib/unshortenit.py index b7165a5e..5287b02d 100755 --- a/plugin.video.alfa/lib/unshortenit.py +++ b/plugin.video.alfa/lib/unshortenit.py @@ -26,7 +26,7 @@ def find_in_text(regex, text, flags=re.IGNORECASE | re.DOTALL): class UnshortenIt(object): - _adfly_regex = r'adf\.ly|j\.gs|q\.gs|u\.bb|ay\.gy|atominik\.com|tinyium\.com|microify\.com|threadsphere\.bid|clearload\.bid|activetect\.net|swiftviz\.net|briskgram\.net|activetect\.net|baymaleti\.net|thouth\.net' + _adfly_regex = r'adf\.ly|j\.gs|q\.gs|u\.bb|ay\.gy|atominik\.com|tinyium\.com|microify\.com|threadsphere\.bid|clearload\.bid|activetect\.net|swiftviz\.net|briskgram\.net|activetect\.net|baymaleti\.net|thouth\.net|uclaut.net' _linkbucks_regex = r'linkbucks\.com|any\.gs|cash4links\.co|cash4files\.co|dyo\.gs|filesonthe\.net|goneviral\.com|megaline\.co|miniurls\.co|qqc\.co|seriousdeals\.net|theseblogs\.com|theseforums\.com|tinylinks\.co|tubeviral\.com|ultrafiles\.net|urlbeat\.net|whackyvidz\.com|yyv\.co' _adfocus_regex = r'adfoc\.us' _lnxlu_regex = r'lnx\.lu' @@ -76,7 +76,7 @@ class UnshortenIt(object): if re.search(self._cryptmango_regex, uri, re.IGNORECASE): return self._unshorten_cryptmango(uri) - return uri, 200 + return uri, 0 def unwrap_30x(self, uri, timeout=10): def unwrap_30x(uri, timeout=10): @@ -442,12 +442,15 @@ class UnshortenIt(object): r = httptools.downloadpage(uri, timeout=self._timeout, cookies=False) html = r.data - uri = re.findall(r']+)>', html)[0] + if 'embed' in uri: + uri = re.findall(r']*)>', html)[0] + else: + uri = re.findall(r']+)>', html)[0] return uri, r.code except Exception as e: - return uri, str(e) + return uri, 0 def _unshorten_cryptmango(self, uri): try: diff --git a/plugin.video.alfa/platformcode/platformtools.py b/plugin.video.alfa/platformcode/platformtools.py index eda11d9a..b9b1beef 100644 --- a/plugin.video.alfa/platformcode/platformtools.py +++ b/plugin.video.alfa/platformcode/platformtools.py @@ -19,7 +19,7 @@ import xbmcplugin from channelselector import get_thumb from platformcode import unify from core import channeltools -from core import trakt_tools +from core import trakt_tools, scrapertoolsV2 from core.item import Item from platformcode import logger @@ -739,15 +739,53 @@ def get_seleccion(default_action, opciones, seleccion, video_urls): seleccion = dialog_select(config.get_localized_string(30163), opciones) # Ver en calidad baja elif default_action == 1: - seleccion = 0 + resolutions = [] + for url in video_urls: + res = calcResolution(url[0]) + if res: + resolutions.append(res) + if resolutions: + seleccion = resolutions.index(min(resolutions)) + else: + seleccion = 0 # Ver en alta calidad elif default_action == 2: - seleccion = len(video_urls) - 1 + resolutions = [] + for url in video_urls: + res = calcResolution(url[0]) + if res: + resolutions.append(res) + if resolutions: + seleccion = resolutions.index(max(resolutions)) + else: + seleccion = len(video_urls) - 1 else: seleccion = 0 return seleccion +def calcResolution(option): + match = scrapertoolsV2.find_single_match(option, '([0-9]{2,4})x([0-9]{2,4})') + resolution = False + if match: + resolution = int(match[0])*int(match[1]) + else: + if '240p' in option: + resolution = 320 * 240 + elif '360p' in option: + resolution = 480 * 360 + elif ('480p' in option) or ('480i' in option): + resolution = 720 * 480 + elif ('576p' in option) or ('576p' in option): + resolution = 720 * 576 + elif ('720p' in option) or ('HD' in option): + resolution = 1280 * 720 + elif ('1080p' in option) or ('1080i' in option) or ('Full HD' in option): + resolution = 1920 * 1080 + + return resolution + + def show_channel_settings(**kwargs): """ Muestra un cuadro de configuracion personalizado para cada canal y guarda los datos al cerrarlo. diff --git a/plugin.video.alfa/resources/language/English/strings.po b/plugin.video.alfa/resources/language/English/strings.po index bc9d9672..2cdf9131 100644 --- a/plugin.video.alfa/resources/language/English/strings.po +++ b/plugin.video.alfa/resources/language/English/strings.po @@ -4931,3 +4931,6 @@ msgctxt "#70561" msgid "Search Similar msgstr "" +msgctxt "#70562" +msgid "autoplay" +msgstr "Enable autoplay in all channels" \ No newline at end of file diff --git a/plugin.video.alfa/resources/language/Italian/strings.po b/plugin.video.alfa/resources/language/Italian/strings.po index e53d690e..43a4812a 100644 --- a/plugin.video.alfa/resources/language/Italian/strings.po +++ b/plugin.video.alfa/resources/language/Italian/strings.po @@ -4920,3 +4920,6 @@ msgid "Search Similar msgstr "Cerca Simili" +msgctxt "#70562" +msgid "autoplay" +msgstr "Abilita autoplay in tutti i canali" \ No newline at end of file diff --git a/plugin.video.alfa/resources/language/Spanish/strings.po b/plugin.video.alfa/resources/language/Spanish/strings.po index 8986f352..cd36581a 100644 --- a/plugin.video.alfa/resources/language/Spanish/strings.po +++ b/plugin.video.alfa/resources/language/Spanish/strings.po @@ -4931,7 +4931,9 @@ msgctxt "#70561" msgid "Search Similar" msgstr "Buscar Similares" - +msgctxt "#70562" +msgid "autoplay" +msgstr "Habilitar reproducción automática en todos los canales" diff --git a/plugin.video.alfa/resources/settings.xml b/plugin.video.alfa/resources/settings.xml index a39cd184..5c95ae12 100644 --- a/plugin.video.alfa/resources/settings.xml +++ b/plugin.video.alfa/resources/settings.xml @@ -3,6 +3,7 @@ + diff --git a/plugin.video.alfa/servers/decrypters/expurl.py b/plugin.video.alfa/servers/decrypters/expurl.py index e3b025fe..3d7e217c 100755 --- a/plugin.video.alfa/servers/decrypters/expurl.py +++ b/plugin.video.alfa/servers/decrypters/expurl.py @@ -1,23 +1,14 @@ # -*- coding: utf-8 -*- -import urlparse - from lib import unshortenit -SERVICES_SHORT = ["adf.ly", "sh.st", "bit.ly", "ul.to"] - - def expand_url(url): e = unshortenit.UnshortenIt() + estado = 200 - while Es_Corto(url): + while estado != 0: long_url, estado = e.unshorten(url) url = long_url return long_url - -def Es_Corto(url): - server = urlparse.urlsplit(url).netloc - Corto = (server in SERVICES_SHORT) - return Corto