diff --git a/channels/streamingcommunity.py b/channels/streamingcommunity.py index 7d8e8dd1..09d14ab0 100644 --- a/channels/streamingcommunity.py +++ b/channels/streamingcommunity.py @@ -4,7 +4,11 @@ # ------------------------------------------------------------ import json, re, sys -import urllib.parse +PY3 = False +if sys.version_info[0] >= 3: PY3 = True + +if PY3: import urllib.parse as urllib_parse +else: import urlparse as urllib_parse from core import support, channeltools, httptools, jsontools from platformcode import logger, config @@ -66,7 +70,7 @@ def genres(item): data_page = get_data(item.url) args = data_page['props']['genres'] for arg in args: - itemlist.append(item.clone(title=support.typo(arg['name'], 'bold'), url=host+'/browse/genre?g='+urllib.parse.quote(arg['name']), action='peliculas', genre=True)) + itemlist.append(item.clone(title=support.typo(arg['name'], 'bold'), url=host+'/browse/genre?g='+urllib_parse.quote(arg['name']), action='peliculas', genre=True)) support.thumb(itemlist, genre=True) return itemlist diff --git a/core/httptools.py b/core/httptools.py old mode 100755 new mode 100644 diff --git a/core/resolverdns.py b/core/resolverdns.py index e6ffe80f..dd2d89a9 100644 --- a/core/resolverdns.py +++ b/core/resolverdns.py @@ -40,13 +40,28 @@ class CipherSuiteAdapter(HTTPAdapter): self.ssl_ciphers = ssl_ciphers super(CipherSuiteAdapter, self).__init__(**kwargs) if override_dns: + + # hack[3/3] function that use doh for host name resolution + def override_dns_connection(address, *args, **kwargs): + """Wrap urllib3's create_connection to resolve the name elsewhere""" + # resolve hostname to an ip address; use your own + # resolver here, as otherwise the system resolver will be used. + host, port = address + hostname = self.getIp(host) + if not hostname: + hostname = host #fallback + logger.debug("Override dns failed, fallback to normal dns resolver") + + return connection.original_create_connection((hostname, port), *args, **kwargs) + # hack[2/3] patch urllib3 create connection with custom function - connection.create_connection = CipherSuiteAdapter.override_dns_connection + connection.original_create_connection = connection.create_connection + connection.create_connection = override_dns_connection def flushDns(domain, **kwargs): del db['dnscache'][domain] - def getIp(domain): + def getIp(self, domain): cache = db['dnscache'].get(domain, {}) ip = None if type(cache) != dict or (cache.get('datetime') and @@ -60,7 +75,7 @@ class CipherSuiteAdapter(HTTPAdapter): # IPv6 address if ':' in ip: ip = '[' + ip + ']' - CipherSuiteAdapter.writeToCache(domain, ip) + self.writeToCache(domain, ip) except Exception: logger.error('Failed to resolve hostname, fallback to normal dns') import traceback @@ -70,7 +85,7 @@ class CipherSuiteAdapter(HTTPAdapter): logger.info('Cache DNS: ' + domain + ' = ' + str(ip)) return ip - def writeToCache(domain, ip): + def writeToCache(self, domain, ip): db['dnscache'][domain] = {'ip': ip, 'datetime': current_date} def init_poolmanager(self, *pool_args, **pool_kwargs): @@ -93,16 +108,6 @@ class CipherSuiteAdapter(HTTPAdapter): logger.info('Flushing dns cache for ' + domain) CipherSuiteAdapter.flushDns(domain, **kwargs) return self.send(request, flushedDns=True, **kwargs) - - # hack[3/3] function that use doh for host name resolution - def override_dns_connection(address, *args, **kwargs): - """Wrap urllib3's create_connection to resolve the name elsewhere""" - # resolve hostname to an ip address; use your own - # resolver here, as otherwise the system resolver will be used. - host, port = address - hostname = CipherSuiteAdapter.getIp(host) - if not hostname: - hostname = host #fallback - logger.debug("Override dns failed, fallback to normal dns resolver") - - return CipherSuiteAdapter.original_create_connection((hostname, port), *args, **kwargs) + except Exception as e: + logger.error(e) + raise e diff --git a/lib/babelfish/__init__.py b/lib/babelfish/__init__.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/__init__.py b/lib/babelfish/converters/__init__.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/alpha2.py b/lib/babelfish/converters/alpha2.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/alpha3b.py b/lib/babelfish/converters/alpha3b.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/alpha3t.py b/lib/babelfish/converters/alpha3t.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/countryname.py b/lib/babelfish/converters/countryname.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/name.py b/lib/babelfish/converters/name.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/opensubtitles.py b/lib/babelfish/converters/opensubtitles.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/scope.py b/lib/babelfish/converters/scope.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/converters/type.py b/lib/babelfish/converters/type.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/country.py b/lib/babelfish/country.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/data/iso-3166-1.txt b/lib/babelfish/data/iso-3166-1.txt old mode 100755 new mode 100644 diff --git a/lib/babelfish/data/iso-639-3.tab b/lib/babelfish/data/iso-639-3.tab old mode 100755 new mode 100644 diff --git a/lib/babelfish/data/iso15924-utf8-20131012.txt b/lib/babelfish/data/iso15924-utf8-20131012.txt old mode 100755 new mode 100644 diff --git a/lib/babelfish/data/opensubtitles_languages.txt b/lib/babelfish/data/opensubtitles_languages.txt old mode 100755 new mode 100644 diff --git a/lib/babelfish/exceptions.py b/lib/babelfish/exceptions.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/language.py b/lib/babelfish/language.py old mode 100755 new mode 100644 diff --git a/lib/babelfish/script.py b/lib/babelfish/script.py old mode 100755 new mode 100644 diff --git a/lib/future/backports/test/pystone.py b/lib/future/backports/test/pystone.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/__init__.py b/lib/rebulk/__init__.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/__version__.py b/lib/rebulk/__version__.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/builder.py b/lib/rebulk/builder.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/chain.py b/lib/rebulk/chain.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/debug.py b/lib/rebulk/debug.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/formatters.py b/lib/rebulk/formatters.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/introspector.py b/lib/rebulk/introspector.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/loose.py b/lib/rebulk/loose.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/match.py b/lib/rebulk/match.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/pattern.py b/lib/rebulk/pattern.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/processors.py b/lib/rebulk/processors.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/rebulk.py b/lib/rebulk/rebulk.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/remodule.py b/lib/rebulk/remodule.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/rules.py b/lib/rebulk/rules.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/toposort.py b/lib/rebulk/toposort.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/utils.py b/lib/rebulk/utils.py old mode 100755 new mode 100644 diff --git a/lib/rebulk/validators.py b/lib/rebulk/validators.py old mode 100755 new mode 100644 diff --git a/servers/clicknupload.py b/servers/clicknupload.py old mode 100755 new mode 100644 diff --git a/servers/crunchyroll.py b/servers/crunchyroll.py old mode 100755 new mode 100644 diff --git a/servers/debriders/realdebrid.json b/servers/debriders/realdebrid.json old mode 100755 new mode 100644 diff --git a/servers/debriders/realdebrid.py b/servers/debriders/realdebrid.py old mode 100755 new mode 100644 diff --git a/servers/decrypters/adfly.py b/servers/decrypters/adfly.py old mode 100755 new mode 100644 diff --git a/servers/decrypters/linkbucks.py b/servers/decrypters/linkbucks.py old mode 100755 new mode 100644 diff --git a/servers/decrypters/longurl.py b/servers/decrypters/longurl.py old mode 100755 new mode 100644 diff --git a/servers/facebook.py b/servers/facebook.py old mode 100755 new mode 100644 diff --git a/servers/fastplay.json b/servers/fastplay.json old mode 100755 new mode 100644 diff --git a/servers/gamovideo.json b/servers/gamovideo.json old mode 100755 new mode 100644 diff --git a/servers/gamovideo.py b/servers/gamovideo.py old mode 100755 new mode 100644 diff --git a/servers/googlevideo.py b/servers/googlevideo.py old mode 100755 new mode 100644 diff --git a/servers/hugefiles.py b/servers/hugefiles.py old mode 100755 new mode 100644 diff --git a/servers/mediafire.py b/servers/mediafire.py old mode 100755 new mode 100644 diff --git a/servers/mega.py b/servers/mega.py old mode 100755 new mode 100644 diff --git a/servers/netutv.json b/servers/netutv.json old mode 100755 new mode 100644 diff --git a/servers/netutv.py b/servers/netutv.py old mode 100755 new mode 100644 diff --git a/servers/sendvid.json b/servers/sendvid.json old mode 100755 new mode 100644 diff --git a/servers/sendvid.py b/servers/sendvid.py old mode 100755 new mode 100644 diff --git a/servers/streamingcommunityws.py b/servers/streamingcommunityws.py old mode 100755 new mode 100644 index ba4d44ff..d4a4ede2 --- a/servers/streamingcommunityws.py +++ b/servers/streamingcommunityws.py @@ -1,5 +1,10 @@ # -*- coding: utf-8 -*- -import urllib.parse +import sys +PY3 = False +if sys.version_info[0] >= 3: PY3 = True + +if PY3: import urllib.parse as urllib +else: import urllib import ast import xbmc @@ -35,7 +40,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= # scws_id = urlparse(server_url).path.split('/')[-1] masterPlaylistParams = ast.literal_eval(iframeParams[0]) - url = iframeParams[1] + '?{}&n=1'.format(urllib.parse.urlencode(masterPlaylistParams)) + url = iframeParams[1] + '?{}&n=1'.format(urllib.urlencode(masterPlaylistParams)) # info = support.match(url, patron=r'LANGUAGE="([^"]+)",\s*URI="([^"]+)|(http.*?rendition=(\d+)[^\s]+)').matches # diff --git a/servers/torrent.py b/servers/torrent.py old mode 100755 new mode 100644 diff --git a/servers/uploadedto.py b/servers/uploadedto.py old mode 100755 new mode 100644 diff --git a/servers/uptobox.py b/servers/uptobox.py old mode 100755 new mode 100644 diff --git a/servers/vidtodo.json b/servers/vidtodo.json old mode 100755 new mode 100644 diff --git a/servers/vidtodo.py b/servers/vidtodo.py old mode 100755 new mode 100644 diff --git a/servers/vidup.json b/servers/vidup.json old mode 100755 new mode 100644 diff --git a/servers/vidup.py b/servers/vidup.py old mode 100755 new mode 100644 diff --git a/servers/vk.json b/servers/vk.json old mode 100755 new mode 100644 diff --git a/servers/vk.py b/servers/vk.py old mode 100755 new mode 100644 diff --git a/servers/yourupload.json b/servers/yourupload.json old mode 100755 new mode 100644 diff --git a/servers/yourupload.py b/servers/yourupload.py old mode 100755 new mode 100644 diff --git a/servers/youtube.json b/servers/youtube.json old mode 100755 new mode 100644 diff --git a/servers/zippyshare.py b/servers/zippyshare.py old mode 100755 new mode 100644 diff --git a/tests/run.sh b/tests/run.sh old mode 100755 new mode 100644