diff --git a/core/httptools.py b/core/httptools.py index 163bc8d8..3273931c 100755 --- a/core/httptools.py +++ b/core/httptools.py @@ -12,11 +12,10 @@ except ImportError: import urllib, urlparse, cookielib -import inspect, os, time, json +import os, time, json from threading import Lock from core.jsontools import to_utf8 from platformcode import config, logger -from platformcode.logger import WebErrorException from core import scrapertools # Get the addon version @@ -42,6 +41,13 @@ if HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT == 0: HTTPTOOLS_DEFAULT_DOWNLOAD_TIMEOUT = # Random use of User-Agents, if nad is not specified HTTPTOOLS_DEFAULT_RANDOM_HEADERS = False +domainCF = list() +channelsCF = ['guardaserieclick', 'casacinema', 'dreamsub', 'ilgeniodellostreaming', 'piratestreaming', 'altadefinizioneclick'] +otherCF = ['altadefinizione-nuovo.link', 'wstream.video', 'akvideo.stream', 'backin.net'] +for ch in channelsCF: + domainCF.append(urlparse.urlparse(config.get_channel_url(name=ch)).hostname) +domainCF.extend(otherCF) + def get_user_agent(): # Returns the global user agent to be used when necessary for the url. return default_headers["User-Agent"] @@ -253,10 +259,9 @@ def downloadpage(url, **opt): url = scrapertools.unescape(url) load_cookies() domain = urlparse.urlparse(url).netloc + global domainCF CF = False - if domain in ['www.guardaserie.media', 'casacinema.space', 'wstream.video', 'akvideo.stream', 'backin.net', - 'dreamsub.stream', 'altadefinizione-nuovo.link', 'ilgeniodellostreaming.si', 'www.piratestreaming.gratis', - 'altadefinizione.style']: + if domain in domainCF: from lib import cloudscraper session = cloudscraper.create_scraper() CF = True diff --git a/platformcode/config.py b/platformcode/config.py index 29e3d329..0a511e47 100644 --- a/platformcode/config.py +++ b/platformcode/config.py @@ -19,6 +19,8 @@ PLUGIN_NAME = "kod" __settings__ = xbmcaddon.Addon(id="plugin.video." + PLUGIN_NAME) __language__ = __settings__.getLocalizedString +channels_data = list() + def get_addon_core(): return __settings__ @@ -97,12 +99,13 @@ def is_xbmc(): def get_videolibrary_support(): return True -def get_channel_url(findhostMethod=None): +def get_channel_url(findhostMethod=None, name=None): from core import jsontools import inspect frame = inspect.stack()[1] - name = os.path.basename(frame[0].f_code.co_filename).replace('.py', '') + if not name: + name = os.path.basename(frame[0].f_code.co_filename).replace('.py', '') if findhostMethod: url = jsontools.get_node_from_file(name, 'url') if not url: @@ -112,9 +115,11 @@ def get_channel_url(findhostMethod=None): else: ROOT_DIR = xbmc.translatePath(__settings__.getAddonInfo('Path')) LOCAL_FILE = os.path.join(ROOT_DIR, "channels.json") - with open(LOCAL_FILE) as f: - data = jsontools.load(f.read()) - return data[name] + global channels_data + if not channels_data: + with open(LOCAL_FILE) as f: + channels_data = jsontools.load(f.read()) + return channels_data[name] def get_system_platform(): """ fonction: pour recuperer la platform que xbmc tourne """