diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/__init__.py b/__init__.py old mode 100644 new mode 100755 diff --git a/addon.xml b/addon.xml old mode 100644 new mode 100755 index 7cb35b9f..7850757a --- a/addon.xml +++ b/addon.xml @@ -1,11 +1,10 @@ - - + - + video diff --git a/channels.json b/channels.json old mode 100644 new mode 100755 index 471db3ac..0aab8240 --- a/channels.json +++ b/channels.json @@ -1,28 +1,27 @@ { "direct": { "altadefinizione01": "https://altadefinizione01.pet", - "animealtadefinizione": "https://www.animealtadefinizione.it", + "animealtadefinizione": "http://ww38.animealtadefinizione.it", "animeforce": "https://www.animeforce.it", "animesaturn": "https://www.animesaturn.cx", "animeunity": "https://www.animeunity.tv", "animeworld": "https://www.animeworld.so", "aniplay": "https://aniplay.co", "casacinema": "https://casacinema.media", - "cb01anime": "https://cineblog01.red", + "cb01anime": "https://cb01new.one", "cinemalibero": "https://cinemalibero.cafe", "cinetecadibologna": "http://cinestore.cinetecadibologna.it", "dinostreaming": "https://dinostreaming.it", "discoveryplus": "https://www.discoveryplus.com", "dreamsub": "https://www.animeworld.so", - "eurostreaming": "https://eurostreaming.diy", - "eurostreaming_actor": "https://eurostreaming.futbol", + "eurostreaming": "https://eurostreaming.lifestyle", + "eurostreaming_actor": "https://eurostreaming.my", "filmstreaming": "https://film-streaming-ita.cam", "guardaseriecam": "https://guardaserie.kitchen", "hd4me": "https://hd4me.net", "ilcorsaronero": "https://ilcorsaronero.link", "ilgeniodellostreaming_cam": "https://ilgeniodellostreaming.foo", "italiafilm": "https://italia-film.biz", - "lordchannel": "https://lordchannel.com", "mediasetplay": "https://mediasetinfinity.mediaset.it", "mondoserietv": "http://ww25.mondoserietv.club/?subid1=20230304-0434-261c-9cb0-a0044930e0a9", "paramount": "https://www.mtv.it", @@ -30,9 +29,9 @@ "plutotv": "https://pluto.tv", "raiplay": "https://www.raiplay.it", "serietvu": "http://ww1.serietvu.live/?sub1=47fb879a-5325-11ee-94a7-cc35006f53d1", - "streamingcommunity": "https://streamingcommunity.buzz", - "streamingita": "https://streamingita.digital", - "tantifilm": "https://tantifilm.hair", + "streamingcommunity": "https://streamingcommunity.prof", + "streamingita": "https://streamingita.click", + "tantifilm": "https://tantifilm.name", "toonitalia": "https://toonitalia.xyz" }, "findhost": { @@ -42,4 +41,4 @@ "cineblog01": "https://cb01.uno", "filmpertutti": "https://filmpertuttiii.nuovo.live" } -} \ No newline at end of file +} diff --git a/channels/0example.json.txt b/channels/0example.json.txt old mode 100644 new mode 100755 diff --git a/channels/0example.py.txt b/channels/0example.py.txt old mode 100644 new mode 100755 diff --git a/channels/1337x.json b/channels/1337x.json old mode 100644 new mode 100755 diff --git a/channels/1337x.py b/channels/1337x.py old mode 100644 new mode 100755 diff --git a/channels/__init__.py b/channels/__init__.py old mode 100644 new mode 100755 diff --git a/channels/accuradio.json b/channels/accuradio.json old mode 100644 new mode 100755 diff --git a/channels/accuradio.py b/channels/accuradio.py old mode 100644 new mode 100755 diff --git a/channels/altadefinizione.json b/channels/altadefinizione.json old mode 100644 new mode 100755 diff --git a/channels/altadefinizione.py b/channels/altadefinizione.py old mode 100644 new mode 100755 diff --git a/channels/altadefinizione01.json b/channels/altadefinizione01.json old mode 100644 new mode 100755 diff --git a/channels/altadefinizione01.py b/channels/altadefinizione01.py old mode 100644 new mode 100755 diff --git a/channels/altadefinizioneclick.json b/channels/altadefinizioneclick.json old mode 100644 new mode 100755 diff --git a/channels/altadefinizioneclick.py b/channels/altadefinizioneclick.py old mode 100644 new mode 100755 diff --git a/channels/altadefinizionecommunity.json b/channels/altadefinizionecommunity.json old mode 100644 new mode 100755 diff --git a/channels/altadefinizionecommunity.py b/channels/altadefinizionecommunity.py old mode 100644 new mode 100755 diff --git a/channels/animealtadefinizione.json b/channels/animealtadefinizione.json old mode 100644 new mode 100755 diff --git a/channels/animealtadefinizione.py b/channels/animealtadefinizione.py old mode 100644 new mode 100755 diff --git a/channels/animeforce.json b/channels/animeforce.json old mode 100644 new mode 100755 diff --git a/channels/animeforce.py b/channels/animeforce.py old mode 100644 new mode 100755 diff --git a/channels/animesaturn.json b/channels/animesaturn.json old mode 100644 new mode 100755 diff --git a/channels/animesaturn.py b/channels/animesaturn.py old mode 100644 new mode 100755 diff --git a/channels/animeunity.json b/channels/animeunity.json old mode 100644 new mode 100755 diff --git a/channels/animeunity.py b/channels/animeunity.py old mode 100644 new mode 100755 index cfcdf98e..13fa9f07 --- a/channels/animeunity.py +++ b/channels/animeunity.py @@ -4,7 +4,7 @@ # ------------------------------------------------------------ import cloudscraper, json, copy, inspect -from core import jsontools, support, httptools +from core import jsontools, support, httptools, scrapertools from platformcode import autorenumber # support.dbg() @@ -53,7 +53,7 @@ def genres(item): # support.dbg() itemlist = [] - genres = json.loads(support.match(response.text, patron='genres="([^"]+)').match.replace('"','"')) + genres = json.loads(support.match(response.data, patron='genres="([^"]+)').match.replace('"','"')) for genre in genres: item.args['genres'] = [genre] @@ -65,10 +65,10 @@ def years(item): itemlist = [] from datetime import datetime - current_year = datetime.today().year - oldest_year = int(support.match(response.text, patron='anime_oldest_date="([^"]+)').match) + next_year = datetime.today().year + 1 + oldest_year = int(support.match(response.data, patron='anime_oldest_date="([^"]+)').match) - for year in list(reversed(range(oldest_year, current_year + 1))): + for year in list(reversed(range(oldest_year, next_year + 1))): item.args['year']=year itemlist.append(item.clone(title=support.typo(year,'bold'), action='peliculas')) return itemlist @@ -116,23 +116,33 @@ def news(item): support.info() item.contentType = 'episode' itemlist = [] - import cloudscraper - session = cloudscraper.create_scraper() - fullJs = json.loads(support.match(session.get(item.url).text, headers=headers, patron=r'items-json="([^"]+)"').match.replace('"','"')) + fullJs = json.loads(support.match(httptools.downloadpage(item.url).data, headers=headers, patron=r'items-json="([^"]+)"').match.replace('"','"')) js = fullJs['data'] for it in js: - if it.get('anime', {}).get('title'): + if it.get('anime', {}).get('title') or it.get('anime', {}).get('title_eng'): + title_name = it['anime']['title'] if it.get('anime', {}).get('title') else it['anime']['title_eng'] + pattern = r'[sS](?P\d+)[eE](?P\d+)' + match = scrapertools.find_single_match(it['file_name'], pattern) + full_episode = '' + if match: + season, episode = match + full_episode = ' - S' + season + ' E' + episode + else: + pattern = r'[._\s]Ep[._\s]*(?P\d+)' + episode = scrapertools.find_single_match(it['file_name'], pattern) + if episode: + full_episode = ' - E' + episode itemlist.append( - item.clone(title= support.typo(it['anime']['title'] + ' - EP. ' + it['number'], 'bold'), - fulltitle=it['anime']['title'], - thumbnail=it['anime']['imageurl'], + item.clone(title = support.typo(title_name + full_episode, 'bold'), + fulltitle = it['anime']['title'], + thumbnail = it['anime']['imageurl'], forcethumb = True, - scws_id=it.get('scws_id', ''), - # video_url=it.get('link', ''), - plot=it['anime']['plot'], - action='findvideos') + scws_id = it.get('scws_id', ''), + url = '{}/anime/{}-{}'.format(item.url, it['anime']['id'],it['anime']['slug']), + plot = it['anime']['plot'], + action = 'findvideos') ) if 'next_page_url' in fullJs: itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'),thumbnail=support.thumb(), url=fullJs['next_page_url'])) @@ -255,4 +265,4 @@ def findvideos(item): # if info: # for url, res in info: # urls.append(['hls [{}]'.format(res), url]) -# return urls \ No newline at end of file +# return urls diff --git a/channels/animeuniverse.json b/channels/animeuniverse.json old mode 100644 new mode 100755 diff --git a/channels/animeuniverse.py b/channels/animeuniverse.py old mode 100644 new mode 100755 diff --git a/channels/animeworld.json b/channels/animeworld.json old mode 100644 new mode 100755 diff --git a/channels/animeworld.py b/channels/animeworld.py old mode 100644 new mode 100755 diff --git a/channels/aniplay.json b/channels/aniplay.json old mode 100644 new mode 100755 diff --git a/channels/aniplay.py b/channels/aniplay.py old mode 100644 new mode 100755 diff --git a/channels/casacinema.json b/channels/casacinema.json old mode 100644 new mode 100755 diff --git a/channels/casacinema.py b/channels/casacinema.py old mode 100644 new mode 100755 diff --git a/channels/cb01anime.json b/channels/cb01anime.json old mode 100644 new mode 100755 diff --git a/channels/cb01anime.py b/channels/cb01anime.py old mode 100644 new mode 100755 diff --git a/channels/cineblog01.json b/channels/cineblog01.json old mode 100644 new mode 100755 diff --git a/channels/cineblog01.py b/channels/cineblog01.py old mode 100644 new mode 100755 diff --git a/channels/cinemalibero.json b/channels/cinemalibero.json old mode 100644 new mode 100755 diff --git a/channels/cinemalibero.py b/channels/cinemalibero.py old mode 100644 new mode 100755 diff --git a/channels/cinetecadibologna.json b/channels/cinetecadibologna.json old mode 100644 new mode 100755 diff --git a/channels/cinetecadibologna.py b/channels/cinetecadibologna.py old mode 100644 new mode 100755 diff --git a/channels/dinostreaming.json b/channels/dinostreaming.json old mode 100644 new mode 100755 diff --git a/channels/dinostreaming.py b/channels/dinostreaming.py old mode 100644 new mode 100755 diff --git a/channels/discoveryplus.json b/channels/discoveryplus.json old mode 100644 new mode 100755 diff --git a/channels/discoveryplus.py b/channels/discoveryplus.py old mode 100644 new mode 100755 diff --git a/channels/dreamsub.json b/channels/dreamsub.json old mode 100644 new mode 100755 diff --git a/channels/dreamsub.py b/channels/dreamsub.py old mode 100644 new mode 100755 diff --git a/channels/eurostreaming.json b/channels/eurostreaming.json old mode 100644 new mode 100755 index f8a40b65..9b30be7c --- a/channels/eurostreaming.json +++ b/channels/eurostreaming.json @@ -1,10 +1,10 @@ { "id": "eurostreaming", "name": "Eurostreaming", - "active": true, + "active": false, "language": ["ita", "sub-ita"], "thumbnail": "eurostreaming.png", "banner": "eurostreaming.png", "categories": ["tvshow", "anime", "vos"], "settings": [] -} \ No newline at end of file +} diff --git a/channels/eurostreaming.py b/channels/eurostreaming.py old mode 100644 new mode 100755 diff --git a/channels/eurostreaming_actor.json b/channels/eurostreaming_actor.json old mode 100644 new mode 100755 diff --git a/channels/eurostreaming_actor.py b/channels/eurostreaming_actor.py old mode 100644 new mode 100755 diff --git a/channels/filmpertutti.json b/channels/filmpertutti.json old mode 100644 new mode 100755 diff --git a/channels/filmpertutti.py b/channels/filmpertutti.py old mode 100644 new mode 100755 diff --git a/channels/filmstreaming.json b/channels/filmstreaming.json old mode 100644 new mode 100755 diff --git a/channels/filmstreaming.py b/channels/filmstreaming.py old mode 100644 new mode 100755 diff --git a/channels/guardaseriecam.json b/channels/guardaseriecam.json old mode 100644 new mode 100755 diff --git a/channels/guardaseriecam.py b/channels/guardaseriecam.py old mode 100644 new mode 100755 diff --git a/channels/guardaserieclick.json b/channels/guardaserieclick.json old mode 100644 new mode 100755 diff --git a/channels/guardaserieclick.py b/channels/guardaserieclick.py old mode 100644 new mode 100755 diff --git a/channels/guardaserieicu.json b/channels/guardaserieicu.json old mode 100644 new mode 100755 diff --git a/channels/guardaserieicu.py b/channels/guardaserieicu.py old mode 100644 new mode 100755 diff --git a/channels/hd4me.json b/channels/hd4me.json old mode 100644 new mode 100755 diff --git a/channels/hd4me.py b/channels/hd4me.py old mode 100644 new mode 100755 diff --git a/channels/ilcorsaronero.json b/channels/ilcorsaronero.json old mode 100644 new mode 100755 diff --git a/channels/ilcorsaronero.py b/channels/ilcorsaronero.py old mode 100644 new mode 100755 index 81b0da61..b68c5ff0 --- a/channels/ilcorsaronero.py +++ b/channels/ilcorsaronero.py @@ -3,56 +3,33 @@ # Canale per ilcorsaronero # ------------------------------------------------------------ -from core import support - -# def findhost(url): -# data = support.httptools.downloadpage(url).data -# url = support.scrapertools.find_single_match(data, '
  • [^"<]+' - else: - patron = r'>(?P[^"<]+)' - patron += ']+>[^<]+<[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P[^<]+)<[^>]+>[^>]+>[^>]+>
    [^"]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P[^<]+)' + sceneTitle = item.args[2] def itemHook(item): if not sceneTitle: @@ -62,33 +39,23 @@ def peliculas(item): return item - if 'search' not in item.args: - item.url += str(item.args[0]) - def itemlistHook(itemlist): - args = item.args - args[0] += 1 - support.nextPage(itemlist, item, next_page=item.url, function_or_level="peliculas") - # itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), args=args, thumbnail=support.thumb())) - return itemlist + patron = r'[^"]+)"\s*>(?P.*?)</a>[^>]+>[^>]+>[^>]+>(?P<seed>.*?)<' + patronNext = r'<a href="(?P<url>[^"]+)".*?Next</span>' return locals() - def search(item, text): - support.info(item, text) - if 'all' in item.args: - item.url += text - else: - item.url += text + '.html' + item.url = "{}/search?{}".format(host, support.urlencode({'q': text})) + item.args = 'search' + try: return peliculas(item) - # Cattura la eccezione così non interrompe la ricerca globle se il canale si rompe! + except: import sys for line in sys.exc_info(): - support.logger.error("search except: %s" % line) + logger.error("search except: %s" % line) return [] - def findvideos(item): if item.contentType == 'tvshow': item.contentType = 'episode' Videolibrary = True if 'movie' in item.args else False diff --git a/channels/ilgeniodellostreaming.json b/channels/ilgeniodellostreaming.json old mode 100644 new mode 100755 diff --git a/channels/ilgeniodellostreaming.py b/channels/ilgeniodellostreaming.py old mode 100644 new mode 100755 diff --git a/channels/ilgeniodellostreaming_cam.json b/channels/ilgeniodellostreaming_cam.json old mode 100644 new mode 100755 diff --git a/channels/ilgeniodellostreaming_cam.py b/channels/ilgeniodellostreaming_cam.py old mode 100644 new mode 100755 diff --git a/channels/italiafilm.json b/channels/italiafilm.json old mode 100644 new mode 100755 diff --git a/channels/italiafilm.py b/channels/italiafilm.py old mode 100644 new mode 100755 diff --git a/channels/italiaserie.json b/channels/italiaserie.json old mode 100644 new mode 100755 diff --git a/channels/italiaserie.py b/channels/italiaserie.py old mode 100644 new mode 100755 diff --git a/channels/la7.json b/channels/la7.json old mode 100644 new mode 100755 diff --git a/channels/la7.py b/channels/la7.py old mode 100644 new mode 100755 diff --git a/channels/lordchannel.json b/channels/lordchannel.json deleted file mode 100644 index 53942fe6..00000000 --- a/channels/lordchannel.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "id": "lordchannel", - "name": "LordChannel", - "active": true, - "language": ["ita", "sub-ita"], - "thumbnail": "lordchannel.png", - "banner": "lordchannel.png", - "categories": ["anime", "tvshow", "movie"], - "settings": [] -} diff --git a/channels/lordchannel.py b/channels/lordchannel.py deleted file mode 100644 index 2700c679..00000000 --- a/channels/lordchannel.py +++ /dev/null @@ -1,78 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------ -# Canale per lordchannel.py -# ------------------------------------------------------------ - -from core import httptools, support, scrapertools -from core.item import Item -from platformcode import config, logger - -host = config.get_channel_url() -headers = [['Referer', host]] - -@support.menu -def mainlist(item): - - film = ['/film/', - ] - tvshow = ['/serietv/', - ] - - anime = ['/anime/anime-ita/', - ('Anime SUB-Ita', ['/anime/anime-sub-ita/','peliculas']), - ] - search = '' - return locals() - - -@support.scrape -def peliculas(item): - if item.args == 'search': - action = 'check' - patron= r'<div class="col-6.*?<img\s.*?src="(?P<thumb>[^"]+).*?<h3.*?<a\shref="(?P<url>[^"]+).*?>(?P<title>.*?)</a' - patronNext = r'<li class="paginator__item paginator__item--next">.*?href="(?P<url>[^"]+)' - return locals() - -@support.scrape -def episodios(item): - patronBlock=r'<div class="accordion__card.*?<span>.*?:\s*(?P<season>\d*?)\s*</span>(?P<block>.*?)</table>' - patron=r'<tr>\s<th class="episode-link".*?href="(?P<url>[^"]+).*?>(?P<episode>\d+).*?_blank">(?P<title>.*?)</a>' - downloadEnabled = False - return locals() - -def check(item): - item.data = httptools.downloadpage(item.url).data - if 'episode-link' in item.data.lower(): - item.contentType = 'tvshow' - return episodios(item) - else: - item.contentType = 'movie' - return findvideos(item) - - -def search(item, text): - item.url = "{}/cerca/?{}".format(host, support.urlencode({'q': text})) - item.args = 'search' - - try: - return peliculas(item) - - except: - import sys - for line in sys.exc_info(): - logger.error("search except: %s" % line) - return [] - -def findvideos(item): - video_url = item.url - - if item.contentType == 'movie': - video_url = support.match(video_url, patron=r'<a\shref="(?P<url>[^"]+)"\sclass="btn-streaming streaming_btn">').match - - video_url = support.match(video_url, patron=r'<video-js.*?src="(?P<url>[^"]+)').match - - if (video_url == ''): - return [] - - item = item.clone(server='directo', url=video_url, no_return=True) - return support.server(item,itemlist=[item], Download=False, Videolibrary=False) diff --git a/channels/mediasetplay.json b/channels/mediasetplay.json old mode 100644 new mode 100755 diff --git a/channels/mediasetplay.py b/channels/mediasetplay.py old mode 100644 new mode 100755 index ec1ca95c..6e104edb --- a/channels/mediasetplay.py +++ b/channels/mediasetplay.py @@ -48,17 +48,19 @@ pagination = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100][config.get_setting('pagin def mainlist(item): top = [('Dirette {bold}', ['', 'live'])] - menu = [('Film {bullet bold}', ['/cinema', 'peliculas', {'uxReference':'filmUltimiArrivi'}, 'movie']), - ('Film Più Visti {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmPiuVisti24H'}, 'movie']), + menu = [('Film Più Visti {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmPiuVisti24H'}, 'movie']), + ('Film ultimi arrivi {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmUltimiArrivi'}, 'movie']), ('Film Da Non Perdere {submenu}', ['/cinema', 'peliculas', {'uxReference':'filmClustering'}, 'movie']), - ('Fiction / Serie TV {bullet bold}', ['/fiction', 'peliculas', {'uxReference':'fictionSerieTvDelMomento'}, 'tvshow']), + ('Fiction e Serie Tv del momento {submenu}', ['/fiction', 'peliculas', {'uxReference':'fictionSerieTvDelMomento'}, 'tvshow']), ('Serie TV Piu Viste {submenu}', ['/fiction', 'peliculas', {'uxReference':'serieTvPiuViste24H'}, 'tvshow']), - ('Le Serie Soap Del Momento {submenu}', ['/cinema', 'peliculas', {'uxReference':'fictionSerieTvParamsGenre', 'params': 'genre≈Soap opera'}, 'tvshow']), - ('Programmi TV{ bullet bold}', ['/programmitv', 'peliculas', {'uxReference':'stagioniPrimaSerata'}, 'tvshow']), - ('Kids {bullet bold}', ['/kids', 'peliculas', {'uxReference':'kidsMediaset' }, 'undefined']), + ('Soap del momento {submenu}', ['/cinema', 'peliculas', {'uxReference':'fictionSerieTvParamsGenre', 'params': 'genre≈Soap opera'}, 'tvshow']), + ('Programmi TV Prima serata{ submenu}', ['/programmitv', 'peliculas', {'uxReference':'stagioniPrimaSerata'}, 'tvshow']), + ('Programmi TV Daytime{ submenu}', ['/programmitv', 'peliculas', {'uxReference':'stagioniDaytime'}, 'tvshow']), + ('Talent e reality {submenu}', ['/talent', 'peliculas', {'uxReference':'multipleBlockProgrammiTv', 'userContext' :'iwiAeyJwbGF0Zm9ybSI6IndlYiJ9Aw'}, 'tvshow']), + ('Kids Evergreen {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsMediaset' }, 'undefined']), ('Kids Boing {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsBoing' }, 'undefined']), ('Kids Cartoonito {submenu}', ['/kids', 'peliculas', {'uxReference':'kidsCartoonito' }, 'undefined']), - ('Documentari {bullet bold}', ['/documentari', 'peliculas', {'uxReference': 'documentariPiuVisti24H'}, 'undefined']), + ('Documentari più visti {submenu}', ['/documentari', 'peliculas', {'uxReference': 'documentariPiuVisti24H'}, 'undefined']), ] search = '' diff --git a/channels/mediasetplay.py.old b/channels/mediasetplay.py.old old mode 100644 new mode 100755 diff --git a/channels/metalvideo.json b/channels/metalvideo.json old mode 100644 new mode 100755 index bb2e792a..462ea84a --- a/channels/metalvideo.json +++ b/channels/metalvideo.json @@ -1,7 +1,7 @@ { "id": "metalvideo", "name": "Metal Video", - "active": true, + "active": false, "language": ["*"], "thumbnail": "metalvideo.png", "banner": "metalvideo.png", diff --git a/channels/metalvideo.py b/channels/metalvideo.py old mode 100644 new mode 100755 diff --git a/channels/mondoserietv.json b/channels/mondoserietv.json old mode 100644 new mode 100755 diff --git a/channels/mondoserietv.py b/channels/mondoserietv.py old mode 100644 new mode 100755 diff --git a/channels/paramount.json b/channels/paramount.json old mode 100644 new mode 100755 diff --git a/channels/paramount.py b/channels/paramount.py old mode 100644 new mode 100755 diff --git a/channels/piratestreaming.json b/channels/piratestreaming.json old mode 100644 new mode 100755 diff --git a/channels/piratestreaming.py b/channels/piratestreaming.py old mode 100644 new mode 100755 diff --git a/channels/plutotv.json b/channels/plutotv.json old mode 100644 new mode 100755 diff --git a/channels/plutotv.py b/channels/plutotv.py old mode 100644 new mode 100755 diff --git a/channels/raiplay.json b/channels/raiplay.json old mode 100644 new mode 100755 diff --git a/channels/raiplay.py b/channels/raiplay.py old mode 100644 new mode 100755 diff --git a/channels/serietvu.json b/channels/serietvu.json old mode 100644 new mode 100755 diff --git a/channels/serietvu.py b/channels/serietvu.py old mode 100644 new mode 100755 diff --git a/channels/streamingcommunity.json b/channels/streamingcommunity.json old mode 100644 new mode 100755 diff --git a/channels/streamingcommunity.py b/channels/streamingcommunity.py old mode 100644 new mode 100755 index 52a53074..09d14ab0 --- a/channels/streamingcommunity.py +++ b/channels/streamingcommunity.py @@ -162,9 +162,9 @@ def peliculas(item): if not item.newest: item.mainThumb = item.thumbnail if recordlist: - itemlist.append(item.clone(action='peliculas',title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), thumbnail=support.thumb(), page=page, records=recordlist)) + itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), thumbnail=support.thumb(), page=page, records=recordlist)) elif len(itemlist) >= 20: - itemlist.append(item.clone(action='peliculas',title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), thumbnail=support.thumb(), records=[], page=page + 1)) + itemlist.append(item.clone(title=support.typo(support.config.get_localized_string(30992), 'color kod bold'), thumbnail=support.thumb(), records=[], page=page + 1)) support.tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) support.check_trakt(itemlist) diff --git a/channels/streamingita.json b/channels/streamingita.json old mode 100644 new mode 100755 diff --git a/channels/streamingita.py b/channels/streamingita.py old mode 100644 new mode 100755 diff --git a/channels/streamtime.json b/channels/streamtime.json old mode 100644 new mode 100755 diff --git a/channels/streamtime.py b/channels/streamtime.py old mode 100644 new mode 100755 diff --git a/channels/tantifilm.json b/channels/tantifilm.json old mode 100644 new mode 100755 index eaae7c2b..bb55adb7 --- a/channels/tantifilm.json +++ b/channels/tantifilm.json @@ -2,10 +2,10 @@ "id": "tantifilm", "name": "Tantifilm", "language": ["ita"], - "active": false, + "active": true, "thumbnail": "tantifilm.png", "banner": "tantifilm.png", - "categories": ["tvshow", "movie", "anime"], + "categories": ["tvshow", "movie"], "not_active": ["include_in_newest_anime", "include_in_newest_peliculas"], "settings": [] } diff --git a/channels/tantifilm.py b/channels/tantifilm.py old mode 100644 new mode 100755 index 74ea3327..551ba66d --- a/channels/tantifilm.py +++ b/channels/tantifilm.py @@ -12,26 +12,14 @@ from platformcode import config host = config.get_channel_url() headers = [['Referer', host]] -player_iframe = r'<iframe.*?src="([^"]+)"[^>]+></iframe>\s*<div class="player' +player_iframe = r'<iframe.*?src="([^"]+)"[^>]+></iframe>\s*<\/div' @support.menu def mainlist(item): - logger.debug() top = [('Generi', ['', 'genres'])] - - film = ['/film', - ('Al Cinema', ['/watch-genre/al-cinema/']), - ('HD', ['/watch-genre/altadefinizione/']), - ('Sub-ITA', ['/watch-genre/sub-ita/'])] - - tvshow = ['/serie-tv/', - ('HD', ['/watch-genre/serie-altadefinizione/']), - ('Miniserie', ['/watch-genre/miniserie-1/']), - ('Programmi TV', ['/watch-genre/programmi-tv/'])] - - anime = ['/watch-genre/anime/'] - + film = ['/film'] + tvshow = ['/serie-tv/'] search = '' return locals() @@ -48,10 +36,9 @@ def genres(item): return locals() -def search(item, texto): - logger.debug(texto) - - item.url = host + "/?s=" + texto +def search(item, text): + item.url = "{}/?{}".format(host, support.urlencode({'story': text,'do':'search', 'subaction':'search'})) + #item.url = host + "/?story=" + texto try: item.args = 'search' return peliculas(item) @@ -63,89 +50,34 @@ def search(item, texto): logger.error("%s" % line) return [] - -@support.scrape -def newest(categoria): - if categoria == 'series': - item = Item(url=host + '/aggiornamenti-serie-tv') - data = support.match(item).data.replace('<u>','').replace('</u>','') - item.contentType = 'episode' - patronBlock = r'Aggiornamenti (?:Giornalieri )?Serie TV.*?<div class="sp-body folded">(?P<block>.*?)</div>' - patron = r'<p>(?P<title>.*?)\((?P<year>[0-9]{4})[^\)]*\)[^<]+<a href="(?P<url>[^"]+)">(?P<episode>[^ ]+) (?P<lang>[Ss][Uu][Bb].[Ii][Tt][Aa])?(?P<title2>[^<]+)?' - return locals() - - @support.scrape def peliculas(item): action = 'check' item.contentType = 'undefined' if item.args == 'search': - patron = r'<a href="(?P<url>[^"]+)" title="Permalink to\s*(?P<title>[^"]+) \((?P<year>[0-9]+)[^<]*\)[^"]*"[^>]+>\s*<img[^s]+src="(?P<thumb>[^"]+)".*?<div class="calitate">\s*<p>(?P<quality>[^<]+)<\/p>' + patron = r'<div class="film.*?<a href="(?P<url>[^"]+)"(?:[^>]+)?>?\s*(?:<img[^s]+src="(?P<thumb>[^"]+)"[^>]+>\s*)?<p>(?P<title>[^<]+?)(?P<lang>[sS][uU][bB]\-[iI][tT][aA]+)?(?:[ ]?\((?P<year>\d{4})-?(?:\d{4})?).*?\)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*(?P<quality>[a-zA-Z]+)?' else: - patronNext = r'<a class="nextpostslink" rel="next" href="([^"]+)">' - patron = r'<div class="mediaWrap mediaWrapAlt">\s*<a href="(?P<url>[^"]+)"(?:[^>]+)?>?\s*(?:<img[^s]+src="(?P<thumb>[^"]+)"[^>]+>\s*)?<\/a>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+?)(?P<lang>[sS][uU][bB]\-[iI][tT][aA]+)?(?:[ ]?\((?P<year>\d{4})-?(?:\d{4})?)\).[^<]+[^>]+><\/a>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*(?P<quality>[a-zA-Z-0-9\.]+)?' - patronBlock = r'<div id="main_col">(?P<block>.*?)<!\-\- main_col \-\->' + patronNext = r'<b class="nextpostslink">.*?<a href="([^"]+)">' + if 'serie-tv' in item.url: + patron = r'<div class="mediaWrap mediaWrapAlt">\s*<a href="(?P<url>[^"]+)"(?:[^>]+)?>?\s*(?:<img[^s]+src="(?P<thumb>[^"]+)"[^>]+>\s*)?<\/a>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+?)(?P<lang>[sS][uU][bB]\-[iI][tT][aA]+)?(?:[ ]?\((?P<year>\d{4})-?(?:\d{4})?).*?\)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*(?P<quality>[a-zA-Z]+)?' + else: + patron = r'<div class="mediaWrap mediaWrapAlt">\s*<a href="(?P<url>[^"]+)"(?:[^>]+)?>?\s*(?:<img[^s]+src="(?P<thumb>[^"]+)"[^>]+>\s*)?<\/a>[^>]+>[^>]+>[^>]+>(?P<title>[^<]+?)(?P<lang>[sS][uU][bB]\-[iI][tT][aA]+)?(?:[ ]?\((?P<year>\d{4})-?(?:\d{4})?).*?\)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>\s*(?P<quality>[a-zA-Z]+)?' + patronBlock = r'<div id="dle-content">(?P<block>.*?)<!\-\- main_col \-\->' return locals() - @support.scrape def episodios(item): - def get_season(pageData, seas_url, season): - data = '' - episodes = support.match(pageData if pageData else seas_url, patronBlock=patron_episode, patron=patron_option).matches - for episode_url, episode in episodes: - title = season + "x" + episode.zfill(2) + ' - ' + item.fulltitle - data += title + '|' + episode_url + '\n' - return data - - patron_season = 'Stagioni<\/a>.*?<ul class="nav navbar-nav">(.*?)<\/ul>' - patron_episode = 'Episodio<\/a>.*?<ul class="nav navbar-nav">(?P<block>.*?)<\/ul>' - patron_option = r'<a href="([^"]+?)".*?>[^>]+></i>\s*(\d+)' - - if item.data: - url = support.match(item.data, patron=player_iframe).match - item.data = '' - else: - url = support.match(item, patron=player_iframe).match - seasons = support.match(url, patronBlock=patron_season, patron=patron_option) - - data = '' - - import sys - if sys.version_info[0] >= 3: from concurrent import futures - else: from concurrent_py2 import futures - with futures.ThreadPoolExecutor() as executor: - thL = [] - for i, season in enumerate(seasons.matches): - thL.append(executor.submit(get_season, '', season[0], season[1])) - for res in futures.as_completed(thL): - if res.result(): - data += res.result() - patron = r'(?P<season>\d+)x(?P<episode>\d+)\s*-\s*(?P<title>[^\|]+)\|(?P<url>[^ ]+)' - # debug = True + patron = r'data-num="(?P<season>.*?)x(?P<episode>.*?)"\s*data-title="(?P<title>[^"]+)(?P<lang>[sS][uU][bB]\-[iI][tT][aA]+)?".*?<div class="mirrors"(?P<server_links>.*?)<!---' action = 'findvideos' - - def itemlistHook(itemlist): - itemlist.sort(key=lambda item: (item.infoLabels['season'], item.infoLabels['episode'])) - return itemlist - return locals() - def check(item): item.data = support.match(item.url, headers=headers).data check = support.match(item.data, patron=r'<div class="category-film">(.*?)</div>').match if 'sub' in check.lower(): item.contentLanguage = 'Sub-ITA' logger.debug("CHECK : ", check) - # if 'anime' in check.lower(): - # item.contentType = 'tvshow' - # logger.debug('select = ### è una anime ###') - # try: - # return episodios(item) - # except: - # pass if 'serie' in check.lower(): item.contentType = 'tvshow' return episodios(item) @@ -156,36 +88,14 @@ def check(item): def findvideos(item): - logger.debug() - data = item.data if item.data else support.match(item.url, headers=headers).data - itemlist = [] + if item.server_links: + return support.server(item, data = item.server_links) - if '/serietv/series/names' in item.url: - itemlist.extend(support.server(item, itemlist=hdpass(Item(url=item.url)))) - else: - urls = support.match(data, patron=player_iframe).matches - if item.otherLinks: - urls += support.match(item.otherLinks, patron=r'href="([^"]+)').matches + video_url = support.match(item.url, patron=player_iframe).match - logger.debug('URLS', urls) - for u in urls: - if 'hdplayer.casa/series/' in u: - urls.remove(u) - itemlist.extend(support.server(item, itemlist=hdpass(Item(url=u)))) - break - else: - itemlist.extend(support.server(item, urls)) - support.addQualityTag(item, itemlist, data, 'Keywords:\s*(?:<span>)?([^<]+)') + if (video_url == ''): + return [] + + itemlist = [item.clone(action="play", url=srv) for srv in support.match(video_url, patron='<li class="(?:active)?" data-link=\"([^"]+)').matches] + itemlist = support.server(item,itemlist=itemlist) return itemlist - - -@support.scrape -def hdpass(item): - patronBlock = r'<ul class="nav navbar-nav">(?P<block>.*?)</ul>' - patron = r'<a.*?href="(?P<url>[^"]+)">' - - def itemHook(item): - url = support.match(item.url, patron='<iframe.*?src="([^"]+)').match - return Item(url=url) - - return locals() \ No newline at end of file diff --git a/channels/toonitalia.json b/channels/toonitalia.json old mode 100644 new mode 100755 diff --git a/channels/toonitalia.py b/channels/toonitalia.py old mode 100644 new mode 100755 diff --git a/channels/tunein.json b/channels/tunein.json old mode 100644 new mode 100755 diff --git a/channels/tunein.py b/channels/tunein.py old mode 100644 new mode 100755 diff --git a/channels/videosky.json b/channels/videosky.json new file mode 100755 index 00000000..5fe02244 --- /dev/null +++ b/channels/videosky.json @@ -0,0 +1,13 @@ +{ + "id": "videosky", + "name": "Sky Video Italia [free]", + "active": true, + "language": ["ita"], + "thumbnail": "videosky.png", + "banner": "videosky.png", + "categories": ["live"], + "not_active": ["include_in_newest"], + "default_off": ["include_in_global_search"], + "settings": [], + "cloudflare": true +} diff --git a/channels/videosky.py b/channels/videosky.py new file mode 100755 index 00000000..ba6172b4 --- /dev/null +++ b/channels/videosky.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# ------------------------------------------------------------ +# Canale per Sky Video +# ------------------------------------------------------------ + +import requests +from core import support, httptools +from platformcode import logger + +host = 'https://video.sky.it' +api_url = 'https://apid.sky.it/vdp/v1/' + +@support.menu +def mainlist(item): + top = [('Dirette {bold}', ['', 'live'])] + + search = '' + return locals() + +def live(item): + itemlist = [item.clone(title=support.typo('TV8', 'bold'), fulltitle='TV8', url= api_url + '/getLivestream?id=7', action='findvideos', forcethumb = True, no_return=True), + item.clone(title=support.typo('Cielo', 'bold'), fulltitle='Cielo', url= api_url + '/getLivestream?id=2', action='findvideos', forcethumb = True, no_return=True), + item.clone(title=support.typo('Sky TG24', 'bold'), fulltitle='Sky TG24', url= api_url + '/getLivestream?id=1', action='findvideos', forcethumb = True, no_return=True)] + + return support.thumb(itemlist, live=True) + +def findvideos(item): + json = httptools.downloadpage(item.url).json + + item = item.clone(server='directo', url=json['streaming_url'], action='play', manifest='hls') + return support.server(item, itemlist=[item], Download=False, Videolibrary=False) diff --git a/channels/vvvvid.json b/channels/vvvvid.json old mode 100644 new mode 100755 diff --git a/channels/vvvvid.py b/channels/vvvvid.py old mode 100644 new mode 100755 diff --git a/channels/youtube_channel.py b/channels/youtube_channel.py old mode 100644 new mode 100755 diff --git a/channelselector.py b/channelselector.py old mode 100644 new mode 100755 diff --git a/contextmenu.py b/contextmenu.py old mode 100644 new mode 100755 diff --git a/core/__init__.py b/core/__init__.py old mode 100644 new mode 100755 diff --git a/core/autoplay.py b/core/autoplay.py old mode 100644 new mode 100755 diff --git a/core/channeltools.py b/core/channeltools.py old mode 100644 new mode 100755 diff --git a/core/downloader.py b/core/downloader.py old mode 100644 new mode 100755 index e80864ff..7d71283e --- a/core/downloader.py +++ b/core/downloader.py @@ -44,7 +44,7 @@ import time from threading import Thread, Lock -from core import filetools, jsontools +from core import filetools, jsontools, httptools from platformcode import logger, config @@ -214,11 +214,11 @@ class Downloader(object): self._state = self.states.stopped self._download_lock = Lock() - self._headers = {"User-Agent": "Kodi/15.2 (Windows NT 10.0; WOW64) App_Bitness/32 Version/15.2-Git:20151019-02e7013"} + self._headers = httptools.default_headers #{"User-Agent": "Kodi/15.2 (Windows NT 10.0; WOW64) App_Bitness/32 Version/15.2-Git:20151019-02e7013"} self._speed = 0 self._buffer = {} self._seekable = True - + self._threads = [Thread(target=self.__start_part__, name="Downloader %s/%s" % (x + 1, self._max_connections)) for x in range(self._max_connections)] self._speed_thread = Thread(target=self.__speed_metter__, name="Speed Meter") self._save_thread = Thread(target=self.__save_file__, name="File Writer") diff --git a/core/downloadtools.py b/core/downloadtools.py old mode 100644 new mode 100755 diff --git a/core/entities.py b/core/entities.py old mode 100644 new mode 100755 diff --git a/core/filetools.py b/core/filetools.py old mode 100644 new mode 100755 diff --git a/core/filtertools.py b/core/filtertools.py old mode 100644 new mode 100755 diff --git a/core/item.py b/core/item.py old mode 100644 new mode 100755 diff --git a/core/jsontools.py b/core/jsontools.py old mode 100644 new mode 100755 diff --git a/core/resolverdns.py b/core/resolverdns.py old mode 100644 new mode 100755 diff --git a/core/scraper.py b/core/scraper.py old mode 100644 new mode 100755 diff --git a/core/scrapertools.py b/core/scrapertools.py old mode 100644 new mode 100755 diff --git a/core/servertools.py b/core/servertools.py old mode 100644 new mode 100755 diff --git a/core/support.py b/core/support.py old mode 100644 new mode 100755 index b20e84bd..eee45474 --- a/core/support.py +++ b/core/support.py @@ -31,6 +31,7 @@ channels_order = {'Rai 1': 1, 'Canale 5': 5, 'Italia 1': 6, 'La7': 7, + 'TV8': 8, 'NOVE': 9, '20': 20, 'Rai 4': 21, @@ -38,6 +39,7 @@ channels_order = {'Rai 1': 1, 'Rai 5': 23, 'Rai Movie': 24, 'Rai Premium': 25, + 'Cielo': 26, 'Paramount': 27, 'La7d': 29, 'La 5': 30, @@ -57,6 +59,7 @@ channels_order = {'Rai 1': 1, 'Super': 46, 'Rai News 24': 48, 'Spike': 49, + 'Sky TG24': 50, 'TGCom': 51, 'DMAX': 52, 'Rai Storia': 54, @@ -1527,7 +1530,7 @@ def thumb(item_itemlist_string=None, genre=False, live=False): return item_itemlist_string icon_dict = {'movie':['film', 'movie', 'saghe'], - 'tvshow':['serie','tv','episodi','episodio','fiction', 'show'], + 'tvshow':['serie','tv','episodi','episodio','fiction', 'show', 'talent', 'reality'], 'documentary':['documentari','documentario', 'documentary', 'documentaristico'], 'teenager':['ragazzi','teenager', 'giovani', 'teen'], 'learning':['learning', 'school', 'scuola'], @@ -1565,7 +1568,7 @@ def thumb(item_itemlist_string=None, genre=False, live=False): 'az':['lettera','lista','alfabetico','a-z', 'alphabetical'], 'year':['anno', 'anni', 'year'], 'update':['replay', 'update'], - 'videolibrary':['teche'], + 'videolibrary':['teche', 'archivio'], 'info':['info','information','informazioni'], 'star':['star', 'personaggi', 'interpreti', 'stars', 'characters', 'performers', 'staff', 'actors', 'attori'], 'winter':['inverno', 'winter'], diff --git a/core/tmdb.py b/core/tmdb.py old mode 100644 new mode 100755 diff --git a/core/trakt_tools.py b/core/trakt_tools.py old mode 100644 new mode 100755 diff --git a/core/tvdb.py b/core/tvdb.py old mode 100644 new mode 100755 diff --git a/core/videolibrarytools.py b/core/videolibrarytools.py old mode 100644 new mode 100755 diff --git a/core/ziptools.py b/core/ziptools.py old mode 100644 new mode 100755 diff --git a/default.py b/default.py old mode 100644 new mode 100755 diff --git a/default_channel_settings.json b/default_channel_settings.json old mode 100644 new mode 100755 diff --git a/lib/__init__.py b/lib/__init__.py old mode 100644 new mode 100755 diff --git a/lib/aadecode.py b/lib/aadecode.py old mode 100644 new mode 100755 diff --git a/lib/arm_chromeos.py b/lib/arm_chromeos.py old mode 100644 new mode 100755 diff --git a/lib/builtins/__init__.py b/lib/builtins/__init__.py old mode 100644 new mode 100755 diff --git a/lib/certifi/__init__.py b/lib/certifi/__init__.py old mode 100644 new mode 100755 diff --git a/lib/certifi/__main__.py b/lib/certifi/__main__.py old mode 100644 new mode 100755 diff --git a/lib/certifi/cacert.pem b/lib/certifi/cacert.pem old mode 100644 new mode 100755 diff --git a/lib/certifi/core.py b/lib/certifi/core.py old mode 100644 new mode 100755 diff --git a/lib/chardet/__init__.py b/lib/chardet/__init__.py old mode 100644 new mode 100755 diff --git a/lib/chardet/big5freq.py b/lib/chardet/big5freq.py old mode 100644 new mode 100755 diff --git a/lib/chardet/big5prober.py b/lib/chardet/big5prober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/chardistribution.py b/lib/chardet/chardistribution.py old mode 100644 new mode 100755 diff --git a/lib/chardet/charsetgroupprober.py b/lib/chardet/charsetgroupprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/charsetprober.py b/lib/chardet/charsetprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/cli/__init__.py b/lib/chardet/cli/__init__.py old mode 100644 new mode 100755 diff --git a/lib/chardet/cli/chardetect.py b/lib/chardet/cli/chardetect.py old mode 100644 new mode 100755 diff --git a/lib/chardet/codingstatemachine.py b/lib/chardet/codingstatemachine.py old mode 100644 new mode 100755 diff --git a/lib/chardet/compat.py b/lib/chardet/compat.py old mode 100644 new mode 100755 diff --git a/lib/chardet/cp949prober.py b/lib/chardet/cp949prober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/enums.py b/lib/chardet/enums.py old mode 100644 new mode 100755 diff --git a/lib/chardet/escprober.py b/lib/chardet/escprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/escsm.py b/lib/chardet/escsm.py old mode 100644 new mode 100755 diff --git a/lib/chardet/eucjpprober.py b/lib/chardet/eucjpprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/euckrfreq.py b/lib/chardet/euckrfreq.py old mode 100644 new mode 100755 diff --git a/lib/chardet/euckrprober.py b/lib/chardet/euckrprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/euctwfreq.py b/lib/chardet/euctwfreq.py old mode 100644 new mode 100755 diff --git a/lib/chardet/euctwprober.py b/lib/chardet/euctwprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/gb2312freq.py b/lib/chardet/gb2312freq.py old mode 100644 new mode 100755 diff --git a/lib/chardet/gb2312prober.py b/lib/chardet/gb2312prober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/hebrewprober.py b/lib/chardet/hebrewprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/jisfreq.py b/lib/chardet/jisfreq.py old mode 100644 new mode 100755 diff --git a/lib/chardet/jpcntx.py b/lib/chardet/jpcntx.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langbulgarianmodel.py b/lib/chardet/langbulgarianmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langcyrillicmodel.py b/lib/chardet/langcyrillicmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langgreekmodel.py b/lib/chardet/langgreekmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langhebrewmodel.py b/lib/chardet/langhebrewmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langhungarianmodel.py b/lib/chardet/langhungarianmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langthaimodel.py b/lib/chardet/langthaimodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/langturkishmodel.py b/lib/chardet/langturkishmodel.py old mode 100644 new mode 100755 diff --git a/lib/chardet/latin1prober.py b/lib/chardet/latin1prober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/mbcharsetprober.py b/lib/chardet/mbcharsetprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/mbcsgroupprober.py b/lib/chardet/mbcsgroupprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/mbcssm.py b/lib/chardet/mbcssm.py old mode 100644 new mode 100755 diff --git a/lib/chardet/sbcharsetprober.py b/lib/chardet/sbcharsetprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/sbcsgroupprober.py b/lib/chardet/sbcsgroupprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/sjisprober.py b/lib/chardet/sjisprober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/universaldetector.py b/lib/chardet/universaldetector.py old mode 100644 new mode 100755 diff --git a/lib/chardet/utf8prober.py b/lib/chardet/utf8prober.py old mode 100644 new mode 100755 diff --git a/lib/chardet/version.py b/lib/chardet/version.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/__init__.py b/lib/cloudscraper/__init__.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/2captcha.py b/lib/cloudscraper/captcha/2captcha.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/9kw.py b/lib/cloudscraper/captcha/9kw.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/__init__.py b/lib/cloudscraper/captcha/__init__.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/anticaptcha.py b/lib/cloudscraper/captcha/anticaptcha.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/capmonster.py b/lib/cloudscraper/captcha/capmonster.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/captcha/deathbycaptcha.py b/lib/cloudscraper/captcha/deathbycaptcha.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/cloudflare.py b/lib/cloudscraper/cloudflare.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/exceptions.py b/lib/cloudscraper/exceptions.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/help.py b/lib/cloudscraper/help.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/__init__.py b/lib/cloudscraper/interpreters/__init__.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/chakracore.py b/lib/cloudscraper/interpreters/chakracore.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/encapsulated.py b/lib/cloudscraper/interpreters/encapsulated.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/js2py.py b/lib/cloudscraper/interpreters/js2py.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/jsunfuck.py b/lib/cloudscraper/interpreters/jsunfuck.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/native.py b/lib/cloudscraper/interpreters/native.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/nodejs.py b/lib/cloudscraper/interpreters/nodejs.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/interpreters/v8.py b/lib/cloudscraper/interpreters/v8.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/user_agent/__init__.py b/lib/cloudscraper/user_agent/__init__.py old mode 100644 new mode 100755 diff --git a/lib/cloudscraper/user_agent/browsers.json b/lib/cloudscraper/user_agent/browsers.json old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/__init__.py b/lib/concurrent_py2/__init__.py old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/futures/__init__.py b/lib/concurrent_py2/futures/__init__.py old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/futures/_base.py b/lib/concurrent_py2/futures/_base.py old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/futures/_compat.py b/lib/concurrent_py2/futures/_compat.py old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/futures/process.py b/lib/concurrent_py2/futures/process.py old mode 100644 new mode 100755 diff --git a/lib/concurrent_py2/futures/thread.py b/lib/concurrent_py2/futures/thread.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/__init__.py b/lib/dateutil/__init__.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/_common.py b/lib/dateutil/_common.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/_version.py b/lib/dateutil/_version.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/easter.py b/lib/dateutil/easter.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/parser/__init__.py b/lib/dateutil/parser/__init__.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/parser/_parser.py b/lib/dateutil/parser/_parser.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/parser/isoparser.py b/lib/dateutil/parser/isoparser.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/relativedelta.py b/lib/dateutil/relativedelta.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/rrule.py b/lib/dateutil/rrule.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tz/__init__.py b/lib/dateutil/tz/__init__.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tz/_common.py b/lib/dateutil/tz/_common.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tz/_factories.py b/lib/dateutil/tz/_factories.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tz/tz.py b/lib/dateutil/tz/tz.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tz/win.py b/lib/dateutil/tz/win.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/tzwin.py b/lib/dateutil/tzwin.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/utils.py b/lib/dateutil/utils.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/zoneinfo/__init__.py b/lib/dateutil/zoneinfo/__init__.py old mode 100644 new mode 100755 diff --git a/lib/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz b/lib/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz old mode 100644 new mode 100755 diff --git a/lib/dateutil/zoneinfo/rebuild.py b/lib/dateutil/zoneinfo/rebuild.py old mode 100644 new mode 100755 diff --git a/lib/doh.py b/lib/doh.py old mode 100644 new mode 100755 diff --git a/lib/esprima/__init__.py b/lib/esprima/__init__.py old mode 100644 new mode 100755 diff --git a/lib/esprima/__main__.py b/lib/esprima/__main__.py old mode 100644 new mode 100755 diff --git a/lib/esprima/character.py b/lib/esprima/character.py old mode 100644 new mode 100755 diff --git a/lib/esprima/comment_handler.py b/lib/esprima/comment_handler.py old mode 100644 new mode 100755 diff --git a/lib/esprima/compat.py b/lib/esprima/compat.py old mode 100644 new mode 100755 diff --git a/lib/esprima/error_handler.py b/lib/esprima/error_handler.py old mode 100644 new mode 100755 diff --git a/lib/esprima/esprima.py b/lib/esprima/esprima.py old mode 100644 new mode 100755 diff --git a/lib/esprima/jsx_nodes.py b/lib/esprima/jsx_nodes.py old mode 100644 new mode 100755 diff --git a/lib/esprima/jsx_parser.py b/lib/esprima/jsx_parser.py old mode 100644 new mode 100755 diff --git a/lib/esprima/jsx_syntax.py b/lib/esprima/jsx_syntax.py old mode 100644 new mode 100755 diff --git a/lib/esprima/messages.py b/lib/esprima/messages.py old mode 100644 new mode 100755 diff --git a/lib/esprima/nodes.py b/lib/esprima/nodes.py old mode 100644 new mode 100755 diff --git a/lib/esprima/objects.py b/lib/esprima/objects.py old mode 100644 new mode 100755 diff --git a/lib/esprima/parser.py b/lib/esprima/parser.py old mode 100644 new mode 100755 diff --git a/lib/esprima/scanner.py b/lib/esprima/scanner.py old mode 100644 new mode 100755 diff --git a/lib/esprima/syntax.py b/lib/esprima/syntax.py old mode 100644 new mode 100755 diff --git a/lib/esprima/token.py b/lib/esprima/token.py old mode 100644 new mode 100755 diff --git a/lib/esprima/tokenizer.py b/lib/esprima/tokenizer.py old mode 100644 new mode 100755 diff --git a/lib/esprima/utils.py b/lib/esprima/utils.py old mode 100644 new mode 100755 diff --git a/lib/esprima/visitor.py b/lib/esprima/visitor.py old mode 100644 new mode 100755 diff --git a/lib/esprima/xhtml_entities.py b/lib/esprima/xhtml_entities.py old mode 100644 new mode 100755 diff --git a/lib/fakeMail.py b/lib/fakeMail.py old mode 100644 new mode 100755 diff --git a/lib/future/__init__.py b/lib/future/__init__.py old mode 100644 new mode 100755 index ad419d67..b097fd81 --- a/lib/future/__init__.py +++ b/lib/future/__init__.py @@ -52,7 +52,7 @@ Automatic conversion -------------------- An included script called `futurize -<http://python-future.org/automatic_conversion.html>`_ aids in converting +<https://python-future.org/automatic_conversion.html>`_ aids in converting code (from either Python 2 or Python 3) to code compatible with both platforms. It is similar to ``python-modernize`` but goes further in providing Python 3 compatibility through the use of the backported types @@ -62,21 +62,20 @@ and builtin functions in ``future``. Documentation ------------- -See: http://python-future.org +See: https://python-future.org Credits ------- :Author: Ed Schofield, Jordan M. Adler, et al -:Sponsor: Python Charmers Pty Ltd, Australia, and Python Charmers Pte - Ltd, Singapore. http://pythoncharmers.com -:Others: See docs/credits.rst or http://python-future.org/credits.html +:Sponsor: Python Charmers: https://pythoncharmers.com +:Others: See docs/credits.rst or https://python-future.org/credits.html Licensing --------- -Copyright 2013-2019 Python Charmers Pty Ltd, Australia. +Copyright 2013-2024 Python Charmers, Australia. The software is distributed under an MIT licence. See LICENSE.txt. """ @@ -84,10 +83,10 @@ The software is distributed under an MIT licence. See LICENSE.txt. __title__ = 'future' __author__ = 'Ed Schofield' __license__ = 'MIT' -__copyright__ = 'Copyright 2013-2019 Python Charmers Pty Ltd' -__ver_major__ = 0 -__ver_minor__ = 18 -__ver_patch__ = 2 +__copyright__ = 'Copyright 2013-2024 Python Charmers (https://pythoncharmers.com)' +__ver_major__ = 1 +__ver_minor__ = 0 +__ver_patch__ = 0 __ver_sub__ = '' __version__ = "%d.%d.%d%s" % (__ver_major__, __ver_minor__, __ver_patch__, __ver_sub__) diff --git a/lib/future/backports/__init__.py b/lib/future/backports/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/_markupbase.py b/lib/future/backports/_markupbase.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/datetime.py b/lib/future/backports/datetime.py old mode 100644 new mode 100755 index 3261014e..8cd62ddf --- a/lib/future/backports/datetime.py +++ b/lib/future/backports/datetime.py @@ -689,7 +689,7 @@ class date(object): @classmethod def fromordinal(cls, n): - """Contruct a date from a proleptic Gregorian ordinal. + """Construct a date from a proleptic Gregorian ordinal. January 1 of year 1 is day 1. Only the year, month and day are non-zero in the result. diff --git a/lib/future/backports/email/__init__.py b/lib/future/backports/email/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/_encoded_words.py b/lib/future/backports/email/_encoded_words.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/_header_value_parser.py b/lib/future/backports/email/_header_value_parser.py old mode 100644 new mode 100755 index 43957edc..59b1b318 --- a/lib/future/backports/email/_header_value_parser.py +++ b/lib/future/backports/email/_header_value_parser.py @@ -2867,7 +2867,7 @@ def parse_content_type_header(value): _find_mime_parameters(ctype, value) return ctype ctype.append(token) - # XXX: If we really want to follow the formal grammer we should make + # XXX: If we really want to follow the formal grammar we should make # mantype and subtype specialized TokenLists here. Probably not worth it. if not value or value[0] != '/': ctype.defects.append(errors.InvalidHeaderDefect( diff --git a/lib/future/backports/email/_parseaddr.py b/lib/future/backports/email/_parseaddr.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/_policybase.py b/lib/future/backports/email/_policybase.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/base64mime.py b/lib/future/backports/email/base64mime.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/charset.py b/lib/future/backports/email/charset.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/encoders.py b/lib/future/backports/email/encoders.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/errors.py b/lib/future/backports/email/errors.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/feedparser.py b/lib/future/backports/email/feedparser.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/generator.py b/lib/future/backports/email/generator.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/header.py b/lib/future/backports/email/header.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/headerregistry.py b/lib/future/backports/email/headerregistry.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/iterators.py b/lib/future/backports/email/iterators.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/message.py b/lib/future/backports/email/message.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/__init__.py b/lib/future/backports/email/mime/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/application.py b/lib/future/backports/email/mime/application.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/audio.py b/lib/future/backports/email/mime/audio.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/base.py b/lib/future/backports/email/mime/base.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/image.py b/lib/future/backports/email/mime/image.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/message.py b/lib/future/backports/email/mime/message.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/multipart.py b/lib/future/backports/email/mime/multipart.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/nonmultipart.py b/lib/future/backports/email/mime/nonmultipart.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/mime/text.py b/lib/future/backports/email/mime/text.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/parser.py b/lib/future/backports/email/parser.py old mode 100644 new mode 100755 index df1c6e28..79f0e5a3 --- a/lib/future/backports/email/parser.py +++ b/lib/future/backports/email/parser.py @@ -26,7 +26,7 @@ class Parser(object): textual representation of the message. The string must be formatted as a block of RFC 2822 headers and header - continuation lines, optionally preceeded by a `Unix-from' header. The + continuation lines, optionally preceded by a `Unix-from' header. The header block is terminated either by the end of the string or by a blank line. @@ -92,7 +92,7 @@ class BytesParser(object): textual representation of the message. The input must be formatted as a block of RFC 2822 headers and header - continuation lines, optionally preceeded by a `Unix-from' header. The + continuation lines, optionally preceded by a `Unix-from' header. The header block is terminated either by the end of the input or by a blank line. diff --git a/lib/future/backports/email/policy.py b/lib/future/backports/email/policy.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/quoprimime.py b/lib/future/backports/email/quoprimime.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/email/utils.py b/lib/future/backports/email/utils.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/html/__init__.py b/lib/future/backports/html/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/html/entities.py b/lib/future/backports/html/entities.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/html/parser.py b/lib/future/backports/html/parser.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/http/__init__.py b/lib/future/backports/http/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/http/client.py b/lib/future/backports/http/client.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/http/cookiejar.py b/lib/future/backports/http/cookiejar.py old mode 100644 new mode 100755 index af3ef415..a39242c0 --- a/lib/future/backports/http/cookiejar.py +++ b/lib/future/backports/http/cookiejar.py @@ -225,10 +225,14 @@ LOOSE_HTTP_DATE_RE = re.compile( (?::(\d\d))? # optional seconds )? # optional clock \s* - ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+)? # timezone + (?: + ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+) # timezone \s* - (?:\(\w+\))? # ASCII representation of timezone in parens. - \s*$""", re.X | re.ASCII) + )? + (?: + \(\w+\) # ASCII representation of timezone in parens. + \s* + )?$""", re.X | re.ASCII) def http2time(text): """Returns time in seconds since epoch of time represented by a string. @@ -298,9 +302,11 @@ ISO_DATE_RE = re.compile( (?::?(\d\d(?:\.\d*)?))? # optional seconds (and fractional) )? # optional clock \s* - ([-+]?\d\d?:?(:?\d\d)? - |Z|z)? # timezone (Z is "zero meridian", i.e. GMT) - \s*$""", re.X | re. ASCII) + (?: + ([-+]?\d\d?:?(:?\d\d)? + |Z|z) # timezone (Z is "zero meridian", i.e. GMT) + \s* + )?$""", re.X | re. ASCII) def iso2time(text): """ As for http2time, but parses the ISO 8601 formats: @@ -1845,7 +1851,7 @@ def lwp_cookie_str(cookie): class LWPCookieJar(FileCookieJar): """ The LWPCookieJar saves a sequence of "Set-Cookie3" lines. - "Set-Cookie3" is the format used by the libwww-perl libary, not known + "Set-Cookie3" is the format used by the libwww-perl library, not known to be compatible with any browser, but which is easy to read and doesn't lose information about RFC 2965 cookies. diff --git a/lib/future/backports/http/cookies.py b/lib/future/backports/http/cookies.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/http/server.py b/lib/future/backports/http/server.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/misc.py b/lib/future/backports/misc.py old mode 100644 new mode 100755 index 098a0667..992b978f --- a/lib/future/backports/misc.py +++ b/lib/future/backports/misc.py @@ -46,6 +46,16 @@ def ceil(x): from itertools import islice +if PY26: + # itertools.count in Py 2.6 doesn't accept a step parameter + def count(start=0, step=1): + while True: + yield start + start += step +else: + from itertools import count + + if PY3: try: from _thread import get_ident @@ -85,6 +95,10 @@ def recursive_repr(fillvalue='...'): return decorating_function +# OrderedDict Shim from Raymond Hettinger, python core dev +# http://code.activestate.com/recipes/576693-ordered-dictionary-for-py24/ +# here to support version 2.6. + ################################################################################ ### OrderedDict ################################################################################ diff --git a/lib/future/backports/socket.py b/lib/future/backports/socket.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/socketserver.py b/lib/future/backports/socketserver.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/__init__.py b/lib/future/backports/test/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/badcert.pem b/lib/future/backports/test/badcert.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/badkey.pem b/lib/future/backports/test/badkey.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/dh512.pem b/lib/future/backports/test/dh512.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/https_svn_python_org_root.pem b/lib/future/backports/test/https_svn_python_org_root.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/keycert.passwd.pem b/lib/future/backports/test/keycert.passwd.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/keycert.pem b/lib/future/backports/test/keycert.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/keycert2.pem b/lib/future/backports/test/keycert2.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/nokia.pem b/lib/future/backports/test/nokia.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/nullbytecert.pem b/lib/future/backports/test/nullbytecert.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/nullcert.pem b/lib/future/backports/test/nullcert.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/sha256.pem b/lib/future/backports/test/sha256.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/ssl_cert.pem b/lib/future/backports/test/ssl_cert.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/ssl_key.passwd.pem b/lib/future/backports/test/ssl_key.passwd.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/ssl_key.pem b/lib/future/backports/test/ssl_key.pem old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/ssl_servers.py b/lib/future/backports/test/ssl_servers.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/test/support.py b/lib/future/backports/test/support.py old mode 100644 new mode 100755 index 1999e208..6639372b --- a/lib/future/backports/test/support.py +++ b/lib/future/backports/test/support.py @@ -28,7 +28,6 @@ import importlib # import collections.abc # not present on Py2.7 import re import subprocess -import imp import time try: import sysconfig @@ -341,37 +340,6 @@ def rmtree(path): if error.errno != errno.ENOENT: raise -def make_legacy_pyc(source): - """Move a PEP 3147 pyc/pyo file to its legacy pyc/pyo location. - - The choice of .pyc or .pyo extension is done based on the __debug__ flag - value. - - :param source: The file system path to the source file. The source file - does not need to exist, however the PEP 3147 pyc file must exist. - :return: The file system path to the legacy pyc file. - """ - pyc_file = imp.cache_from_source(source) - up_one = os.path.dirname(os.path.abspath(source)) - legacy_pyc = os.path.join(up_one, source + ('c' if __debug__ else 'o')) - os.rename(pyc_file, legacy_pyc) - return legacy_pyc - -def forget(modname): - """'Forget' a module was ever imported. - - This removes the module from sys.modules and deletes any PEP 3147 or - legacy .pyc and .pyo files. - """ - unload(modname) - for dirname in sys.path: - source = os.path.join(dirname, modname + '.py') - # It doesn't matter if they exist or not, unlink all possible - # combinations of PEP 3147 and legacy pyc and pyo files. - unlink(source + 'c') - unlink(source + 'o') - unlink(imp.cache_from_source(source, debug_override=True)) - unlink(imp.cache_from_source(source, debug_override=False)) # On some platforms, should not run gui test even if it is allowed # in `use_resources'. diff --git a/lib/future/backports/total_ordering.py b/lib/future/backports/total_ordering.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/urllib/__init__.py b/lib/future/backports/urllib/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/urllib/error.py b/lib/future/backports/urllib/error.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/urllib/parse.py b/lib/future/backports/urllib/parse.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/urllib/request.py b/lib/future/backports/urllib/request.py old mode 100644 new mode 100755 index f6646096..baee5401 --- a/lib/future/backports/urllib/request.py +++ b/lib/future/backports/urllib/request.py @@ -2498,17 +2498,7 @@ def _proxy_bypass_macosx_sysconf(host, proxy_settings): if sys.platform == 'darwin': - try: - from _scproxy import _get_proxy_settings, _get_proxies - except Exception as e: - from platformcode import logger - logger.error(str(e)) - - def _get_proxy_settings(): - return {} - - def _get_proxies(): - return {} + from _scproxy import _get_proxy_settings, _get_proxies def proxy_bypass_macosx_sysconf(host): proxy_settings = _get_proxy_settings() diff --git a/lib/future/backports/urllib/response.py b/lib/future/backports/urllib/response.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/urllib/robotparser.py b/lib/future/backports/urllib/robotparser.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/xmlrpc/__init__.py b/lib/future/backports/xmlrpc/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/backports/xmlrpc/client.py b/lib/future/backports/xmlrpc/client.py old mode 100644 new mode 100755 index b78e5bad..0838f61a --- a/lib/future/backports/xmlrpc/client.py +++ b/lib/future/backports/xmlrpc/client.py @@ -134,10 +134,11 @@ from __future__ import (absolute_import, division, print_function, from future.builtins import bytes, dict, int, range, str import base64 -# Py2.7 compatibility hack -base64.encodebytes = base64.encodestring -base64.decodebytes = base64.decodestring import sys +if sys.version_info < (3, 9): + # Py2.7 compatibility hack + base64.encodebytes = base64.encodestring + base64.decodebytes = base64.decodestring import time from datetime import datetime from future.backports.http import client as http_client @@ -1251,7 +1252,7 @@ class Transport(object): # Send HTTP request. # # @param host Host descriptor (URL or (URL, x509 info) tuple). - # @param handler Targer RPC handler (a path relative to host) + # @param handler Target RPC handler (a path relative to host) # @param request_body The XML-RPC request body # @param debug Enable debugging if debug is true. # @return An HTTPConnection. diff --git a/lib/future/backports/xmlrpc/server.py b/lib/future/backports/xmlrpc/server.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/__init__.py b/lib/future/builtins/__init__.py old mode 100644 new mode 100755 index 8bc1649d..1734cd45 --- a/lib/future/builtins/__init__.py +++ b/lib/future/builtins/__init__.py @@ -2,7 +2,7 @@ A module that brings in equivalents of the new and modified Python 3 builtins into Py2. Has no effect on Py3. -See the docs `here <http://python-future.org/what-else.html>`_ +See the docs `here <https://python-future.org/what-else.html>`_ (``docs/what-else.rst``) for more information. """ diff --git a/lib/future/builtins/disabled.py b/lib/future/builtins/disabled.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/iterators.py b/lib/future/builtins/iterators.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/misc.py b/lib/future/builtins/misc.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/new_min_max.py b/lib/future/builtins/new_min_max.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/newnext.py b/lib/future/builtins/newnext.py old mode 100644 new mode 100755 diff --git a/lib/future/builtins/newround.py b/lib/future/builtins/newround.py old mode 100644 new mode 100755 index e2976a76..b06c1169 --- a/lib/future/builtins/newround.py +++ b/lib/future/builtins/newround.py @@ -32,10 +32,10 @@ def newround(number, ndigits=None): exponent = Decimal('10') ** (-ndigits) - if PYPY: - # Work around issue #24: round() breaks on PyPy with NumPy's types - if 'numpy' in repr(type(number)): - number = float(number) + # Work around issue #24: round() breaks on PyPy with NumPy's types + # Also breaks on CPython with NumPy's specialized int types like uint64 + if 'numpy' in repr(type(number)): + number = float(number) if isinstance(number, Decimal): d = number diff --git a/lib/future/builtins/newsuper.py b/lib/future/builtins/newsuper.py old mode 100644 new mode 100755 index 5d3402bd..3e8cc80f --- a/lib/future/builtins/newsuper.py +++ b/lib/future/builtins/newsuper.py @@ -60,44 +60,15 @@ def newsuper(typ=_SENTINEL, type_or_obj=_SENTINEL, framedepth=1): raise RuntimeError('super() used in a function with no args') try: - # Get the MRO so we can crawl it. - mro = type_or_obj.__mro__ - except (AttributeError, RuntimeError): # see issue #160 + typ = find_owner(type_or_obj, f.f_code) + except (AttributeError, RuntimeError, TypeError): + # see issues #160, #267 try: - mro = type_or_obj.__class__.__mro__ + typ = find_owner(type_or_obj.__class__, f.f_code) except AttributeError: - raise RuntimeError('super() used with a non-newstyle class') - - # A ``for...else`` block? Yes! It's odd, but useful. - # If unfamiliar with for...else, see: - # - # http://psung.blogspot.com/2007/12/for-else-in-python.html - for typ in mro: - # Find the class that owns the currently-executing method. - for meth in typ.__dict__.values(): - # Drill down through any wrappers to the underlying func. - # This handles e.g. classmethod() and staticmethod(). - try: - while not isinstance(meth,FunctionType): - if isinstance(meth, property): - # Calling __get__ on the property will invoke - # user code which might throw exceptions or have - # side effects - meth = meth.fget - else: - try: - meth = meth.__func__ - except AttributeError: - meth = meth.__get__(type_or_obj, typ) - except (AttributeError, TypeError): - continue - if meth.func_code is f.f_code: - break # Aha! Found you. - else: - continue # Not found! Move onto the next class in MRO. - break # Found! Break out of the search loop. - else: - raise RuntimeError('super() called outside a method') + raise RuntimeError('super() used with an old-style class') + except TypeError: + raise RuntimeError('super() called outside a method') # Dispatch to builtin super(). if type_or_obj is not _SENTINEL: @@ -105,6 +76,34 @@ def newsuper(typ=_SENTINEL, type_or_obj=_SENTINEL, framedepth=1): return _builtin_super(typ) +def find_owner(cls, code): + '''Find the class that owns the currently-executing method. + ''' + for typ in cls.__mro__: + for meth in typ.__dict__.values(): + # Drill down through any wrappers to the underlying func. + # This handles e.g. classmethod() and staticmethod(). + try: + while not isinstance(meth,FunctionType): + if isinstance(meth, property): + # Calling __get__ on the property will invoke + # user code which might throw exceptions or have + # side effects + meth = meth.fget + else: + try: + meth = meth.__func__ + except AttributeError: + meth = meth.__get__(cls, typ) + except (AttributeError, TypeError): + continue + if meth.func_code is code: + return typ # Aha! Found you. + # Not found! Move onto the next class in MRO. + + raise TypeError + + def superm(*args, **kwds): f = sys._getframe(1) nm = f.f_code.co_name diff --git a/lib/future/moves/__init__.py b/lib/future/moves/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/_dummy_thread.py b/lib/future/moves/_dummy_thread.py old mode 100644 new mode 100755 index 688d249b..6633f42e --- a/lib/future/moves/_dummy_thread.py +++ b/lib/future/moves/_dummy_thread.py @@ -1,8 +1,13 @@ from __future__ import absolute_import -from future.utils import PY3 +from future.utils import PY3, PY39_PLUS -if PY3: - from _dummy_thread import * + +if PY39_PLUS: + # _dummy_thread and dummy_threading modules were both deprecated in + # Python 3.7 and removed in Python 3.9 + from _thread import * +elif PY3: + from _dummy_thread import * else: __future_module__ = True from dummy_thread import * diff --git a/lib/future/moves/_markupbase.py b/lib/future/moves/_markupbase.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/_thread.py b/lib/future/moves/_thread.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/builtins.py b/lib/future/moves/builtins.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/collections.py b/lib/future/moves/collections.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/configparser.py b/lib/future/moves/configparser.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/copyreg.py b/lib/future/moves/copyreg.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/dbm/__init__.py b/lib/future/moves/dbm/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/dbm/dumb.py b/lib/future/moves/dbm/dumb.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/dbm/gnu.py b/lib/future/moves/dbm/gnu.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/dbm/ndbm.py b/lib/future/moves/dbm/ndbm.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/html/__init__.py b/lib/future/moves/html/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/html/entities.py b/lib/future/moves/html/entities.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/html/parser.py b/lib/future/moves/html/parser.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/http/__init__.py b/lib/future/moves/http/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/http/client.py b/lib/future/moves/http/client.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/http/cookiejar.py b/lib/future/moves/http/cookiejar.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/http/cookies.py b/lib/future/moves/http/cookies.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/http/server.py b/lib/future/moves/http/server.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/itertools.py b/lib/future/moves/itertools.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/multiprocessing.py b/lib/future/moves/multiprocessing.py new file mode 100755 index 00000000..a871b676 --- /dev/null +++ b/lib/future/moves/multiprocessing.py @@ -0,0 +1,7 @@ +from __future__ import absolute_import +from future.utils import PY3 + +from multiprocessing import * +if not PY3: + __future_module__ = True + from multiprocessing.queues import SimpleQueue diff --git a/lib/future/moves/pickle.py b/lib/future/moves/pickle.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/queue.py b/lib/future/moves/queue.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/reprlib.py b/lib/future/moves/reprlib.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/socketserver.py b/lib/future/moves/socketserver.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/subprocess.py b/lib/future/moves/subprocess.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/sys.py b/lib/future/moves/sys.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/test/__init__.py b/lib/future/moves/test/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/test/support.py b/lib/future/moves/test/support.py old mode 100644 new mode 100755 index e9aa0f48..f70c9d7d --- a/lib/future/moves/test/support.py +++ b/lib/future/moves/test/support.py @@ -1,9 +1,18 @@ from __future__ import absolute_import + +import sys + from future.standard_library import suspend_hooks from future.utils import PY3 if PY3: from test.support import * + if sys.version_info[:2] >= (3, 10): + from test.support.os_helper import ( + EnvironmentVarGuard, + TESTFN, + ) + from test.support.warnings_helper import check_warnings else: __future_module__ = True with suspend_hooks(): diff --git a/lib/future/moves/tkinter/__init__.py b/lib/future/moves/tkinter/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/colorchooser.py b/lib/future/moves/tkinter/colorchooser.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/commondialog.py b/lib/future/moves/tkinter/commondialog.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/constants.py b/lib/future/moves/tkinter/constants.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/dialog.py b/lib/future/moves/tkinter/dialog.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/dnd.py b/lib/future/moves/tkinter/dnd.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/filedialog.py b/lib/future/moves/tkinter/filedialog.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/font.py b/lib/future/moves/tkinter/font.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/messagebox.py b/lib/future/moves/tkinter/messagebox.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/scrolledtext.py b/lib/future/moves/tkinter/scrolledtext.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/simpledialog.py b/lib/future/moves/tkinter/simpledialog.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/tix.py b/lib/future/moves/tkinter/tix.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/tkinter/ttk.py b/lib/future/moves/tkinter/ttk.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/__init__.py b/lib/future/moves/urllib/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/error.py b/lib/future/moves/urllib/error.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/parse.py b/lib/future/moves/urllib/parse.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/request.py b/lib/future/moves/urllib/request.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/response.py b/lib/future/moves/urllib/response.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/urllib/robotparser.py b/lib/future/moves/urllib/robotparser.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/winreg.py b/lib/future/moves/winreg.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/xmlrpc/__init__.py b/lib/future/moves/xmlrpc/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/xmlrpc/client.py b/lib/future/moves/xmlrpc/client.py old mode 100644 new mode 100755 diff --git a/lib/future/moves/xmlrpc/server.py b/lib/future/moves/xmlrpc/server.py old mode 100644 new mode 100755 diff --git a/lib/future/standard_library/__init__.py b/lib/future/standard_library/__init__.py old mode 100644 new mode 100755 index cff02f95..d467aaf4 --- a/lib/future/standard_library/__init__.py +++ b/lib/future/standard_library/__init__.py @@ -17,7 +17,7 @@ And then these normal Py3 imports work on both Py3 and Py2:: import socketserver import winreg # on Windows only import test.support - import html, html.parser, html.entites + import html, html.parser, html.entities import http, http.client, http.server import http.cookies, http.cookiejar import urllib.parse, urllib.request, urllib.response, urllib.error, urllib.robotparser @@ -33,6 +33,7 @@ And then these normal Py3 imports work on both Py3 and Py2:: from collections import OrderedDict, Counter, ChainMap # even on Py2.6 from subprocess import getoutput, getstatusoutput from subprocess import check_output # even on Py2.6 + from multiprocessing import SimpleQueue (The renamed modules and functions are still available under their old names on Python 2.) @@ -62,9 +63,12 @@ from __future__ import absolute_import, division, print_function import sys import logging -import imp +# imp was deprecated in python 3.6 +if sys.version_info >= (3, 6): + import importlib as imp +else: + import imp import contextlib -import types import copy import os @@ -108,6 +112,7 @@ RENAMES = { 'future.moves.socketserver': 'socketserver', 'ConfigParser': 'configparser', 'repr': 'reprlib', + 'multiprocessing.queues': 'multiprocessing', # 'FileDialog': 'tkinter.filedialog', # 'tkFileDialog': 'tkinter.filedialog', # 'SimpleDialog': 'tkinter.simpledialog', @@ -125,7 +130,7 @@ RENAMES = { # 'Tkinter': 'tkinter', '_winreg': 'winreg', 'thread': '_thread', - 'dummy_thread': '_dummy_thread', + 'dummy_thread': '_dummy_thread' if sys.version_info < (3, 9) else '_thread', # 'anydbm': 'dbm', # causes infinite import loop # 'whichdb': 'dbm', # causes infinite import loop # anydbm and whichdb are handled by fix_imports2 @@ -184,6 +189,7 @@ MOVES = [('collections', 'UserList', 'UserList', 'UserList'), ('itertools', 'filterfalse','itertools', 'ifilterfalse'), ('itertools', 'zip_longest','itertools', 'izip_longest'), ('sys', 'intern','__builtin__', 'intern'), + ('multiprocessing', 'SimpleQueue', 'multiprocessing.queues', 'SimpleQueue'), # The re module has no ASCII flag in Py2, but this is the default. # Set re.ASCII to a zero constant. stat.ST_MODE just happens to be one # (and it exists on Py2.6+). diff --git a/lib/future/tests/__init__.py b/lib/future/tests/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/tests/base.py b/lib/future/tests/base.py old mode 100644 new mode 100755 diff --git a/lib/future/types/__init__.py b/lib/future/types/__init__.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newbytes.py b/lib/future/types/newbytes.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newdict.py b/lib/future/types/newdict.py old mode 100644 new mode 100755 index 3f3a559d..d90316cb --- a/lib/future/types/newdict.py +++ b/lib/future/types/newdict.py @@ -23,7 +23,7 @@ from future.types.newobject import newobject _builtin_dict = dict -ver = sys.version_info[:2] +ver = sys.version_info class BaseNewDict(type): @@ -38,47 +38,18 @@ class newdict(with_metaclass(BaseNewDict, _builtin_dict)): """ A backport of the Python 3 dict object to Py2 """ - def items(self): - """ - On Python 2.7+: - D.items() -> a set-like object providing a view on D's items - On Python 2.6: - D.items() -> an iterator over D's items - """ - if ver == (2, 7): - return self.viewitems() - elif ver == (2, 6): - return self.iteritems() - elif ver >= (3, 0): - return self.items() - def keys(self): - """ - On Python 2.7+: - D.keys() -> a set-like object providing a view on D's keys - On Python 2.6: - D.keys() -> an iterator over D's keys - """ - if ver == (2, 7): - return self.viewkeys() - elif ver == (2, 6): - return self.iterkeys() - elif ver >= (3, 0): - return self.keys() - - def values(self): - """ - On Python 2.7+: - D.values() -> a set-like object providing a view on D's values - On Python 2.6: - D.values() -> an iterator over D's values - """ - if ver == (2, 7): - return self.viewvalues() - elif ver == (2, 6): - return self.itervalues() - elif ver >= (3, 0): - return self.values() + if ver >= (3,): + # Inherit items, keys and values from `dict` in 3.x + pass + elif ver >= (2, 7): + items = dict.viewitems + keys = dict.viewkeys + values = dict.viewvalues + else: + items = dict.iteritems + keys = dict.iterkeys + values = dict.itervalues def __new__(cls, *args, **kwargs): """ @@ -93,13 +64,7 @@ class newdict(with_metaclass(BaseNewDict, _builtin_dict)): in the keyword argument list. For example: dict(one=1, two=2) """ - if len(args) == 0: - return super(newdict, cls).__new__(cls) - elif type(args[0]) == newdict: - value = args[0] - else: - value = args[0] - return super(newdict, cls).__new__(cls, value) + return super(newdict, cls).__new__(cls, *args) def __native__(self): """ diff --git a/lib/future/types/newint.py b/lib/future/types/newint.py old mode 100644 new mode 100755 index 748dba9d..ebc5715e --- a/lib/future/types/newint.py +++ b/lib/future/types/newint.py @@ -223,9 +223,11 @@ class newint(with_metaclass(BaseNewInt, long)): def __rpow__(self, other): value = super(newint, self).__rpow__(other) - if value is NotImplemented: + if isint(value): + return newint(value) + elif value is NotImplemented: return other ** long(self) - return newint(value) + return value def __lshift__(self, other): if not isint(other): @@ -284,6 +286,9 @@ class newint(with_metaclass(BaseNewInt, long)): """ So subclasses can override this, Py3-style """ + if PY3: + return super(newint, self).__bool__() + return super(newint, self).__nonzero__() def __native__(self): @@ -315,7 +320,7 @@ class newint(with_metaclass(BaseNewInt, long)): bits = length * 8 num = (2**bits) + self if num <= 0: - raise OverflowError("int too smal to convert") + raise OverflowError("int too small to convert") else: if self < 0: raise OverflowError("can't convert negative int to unsigned") diff --git a/lib/future/types/newlist.py b/lib/future/types/newlist.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newmemoryview.py b/lib/future/types/newmemoryview.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newobject.py b/lib/future/types/newobject.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newopen.py b/lib/future/types/newopen.py old mode 100644 new mode 100755 diff --git a/lib/future/types/newrange.py b/lib/future/types/newrange.py old mode 100644 new mode 100755 index eda01a5a..dc5eb802 --- a/lib/future/types/newrange.py +++ b/lib/future/types/newrange.py @@ -87,7 +87,7 @@ class newrange(Sequence): return (isinstance(other, newrange) and (self._len == 0 == other._len or (self._start, self._step, self._len) == - (other._start, other._step, self._len))) + (other._start, other._step, other._len))) def __len__(self): return self._len @@ -105,7 +105,7 @@ class newrange(Sequence): raise ValueError('%r is not in range' % value) def count(self, value): - """Return the number of ocurrences of integer `value` + """Return the number of occurrences of integer `value` in the sequence this range represents.""" # a value can occur exactly zero or one times return int(value in self) diff --git a/lib/future/types/newstr.py b/lib/future/types/newstr.py old mode 100644 new mode 100755 diff --git a/lib/future/utils/__init__.py b/lib/future/utils/__init__.py old mode 100644 new mode 100755 index 846d5da6..ec1b1027 --- a/lib/future/utils/__init__.py +++ b/lib/future/utils/__init__.py @@ -61,6 +61,9 @@ PY3 = sys.version_info[0] >= 3 PY34_PLUS = sys.version_info[0:2] >= (3, 4) PY35_PLUS = sys.version_info[0:2] >= (3, 5) PY36_PLUS = sys.version_info[0:2] >= (3, 6) +PY37_PLUS = sys.version_info[0:2] >= (3, 7) +PY38_PLUS = sys.version_info[0:2] >= (3, 8) +PY39_PLUS = sys.version_info[0:2] >= (3, 9) PY2 = sys.version_info[0] == 2 PY26 = sys.version_info[0:2] == (2, 6) PY27 = sys.version_info[0:2] == (2, 7) diff --git a/lib/future/utils/surrogateescape.py b/lib/future/utils/surrogateescape.py old mode 100644 new mode 100755 diff --git a/lib/fuzzy_match/__init__.py b/lib/fuzzy_match/__init__.py old mode 100644 new mode 100755 diff --git a/lib/fuzzy_match/algorithims.py b/lib/fuzzy_match/algorithims.py old mode 100644 new mode 100755 diff --git a/lib/fuzzy_match/match.py b/lib/fuzzy_match/match.py old mode 100644 new mode 100755 diff --git a/lib/generictools.py b/lib/generictools.py old mode 100644 new mode 100755 diff --git a/lib/githash.py b/lib/githash.py old mode 100644 new mode 100755 diff --git a/lib/guessit/__init__.py b/lib/guessit/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/__main__.py b/lib/guessit/__main__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/__version__.py b/lib/guessit/__version__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/api.py b/lib/guessit/api.py old mode 100644 new mode 100755 diff --git a/lib/guessit/backports.py b/lib/guessit/backports.py old mode 100644 new mode 100755 diff --git a/lib/guessit/config/options.json b/lib/guessit/config/options.json old mode 100644 new mode 100755 diff --git a/lib/guessit/jsonutils.py b/lib/guessit/jsonutils.py old mode 100644 new mode 100755 diff --git a/lib/guessit/monkeypatch.py b/lib/guessit/monkeypatch.py old mode 100644 new mode 100755 diff --git a/lib/guessit/options.py b/lib/guessit/options.py old mode 100644 new mode 100755 diff --git a/lib/guessit/reutils.py b/lib/guessit/reutils.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/__init__.py b/lib/guessit/rules/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/__init__.py b/lib/guessit/rules/common/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/comparators.py b/lib/guessit/rules/common/comparators.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/date.py b/lib/guessit/rules/common/date.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/expected.py b/lib/guessit/rules/common/expected.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/formatters.py b/lib/guessit/rules/common/formatters.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/numeral.py b/lib/guessit/rules/common/numeral.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/pattern.py b/lib/guessit/rules/common/pattern.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/quantity.py b/lib/guessit/rules/common/quantity.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/validators.py b/lib/guessit/rules/common/validators.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/common/words.py b/lib/guessit/rules/common/words.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/markers/__init__.py b/lib/guessit/rules/markers/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/markers/groups.py b/lib/guessit/rules/markers/groups.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/markers/path.py b/lib/guessit/rules/markers/path.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/match_processors.py b/lib/guessit/rules/match_processors.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/processors.py b/lib/guessit/rules/processors.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/__init__.py b/lib/guessit/rules/properties/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/audio_codec.py b/lib/guessit/rules/properties/audio_codec.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/bit_rate.py b/lib/guessit/rules/properties/bit_rate.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/bonus.py b/lib/guessit/rules/properties/bonus.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/cds.py b/lib/guessit/rules/properties/cds.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/container.py b/lib/guessit/rules/properties/container.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/country.py b/lib/guessit/rules/properties/country.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/crc.py b/lib/guessit/rules/properties/crc.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/date.py b/lib/guessit/rules/properties/date.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/edition.py b/lib/guessit/rules/properties/edition.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/episode_title.py b/lib/guessit/rules/properties/episode_title.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/episodes.py b/lib/guessit/rules/properties/episodes.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/film.py b/lib/guessit/rules/properties/film.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/language.py b/lib/guessit/rules/properties/language.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/mimetype.py b/lib/guessit/rules/properties/mimetype.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/other.py b/lib/guessit/rules/properties/other.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/part.py b/lib/guessit/rules/properties/part.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/release_group.py b/lib/guessit/rules/properties/release_group.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/screen_size.py b/lib/guessit/rules/properties/screen_size.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/size.py b/lib/guessit/rules/properties/size.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/source.py b/lib/guessit/rules/properties/source.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/streaming_service.py b/lib/guessit/rules/properties/streaming_service.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/title.py b/lib/guessit/rules/properties/title.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/type.py b/lib/guessit/rules/properties/type.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/video_codec.py b/lib/guessit/rules/properties/video_codec.py old mode 100644 new mode 100755 diff --git a/lib/guessit/rules/properties/website.py b/lib/guessit/rules/properties/website.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/__init__.py b/lib/guessit/test/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/config/dummy.txt b/lib/guessit/test/config/dummy.txt old mode 100644 new mode 100755 diff --git a/lib/guessit/test/config/test.json b/lib/guessit/test/config/test.json old mode 100644 new mode 100755 diff --git a/lib/guessit/test/config/test.yaml b/lib/guessit/test/config/test.yaml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/config/test.yml b/lib/guessit/test/config/test.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/enable_disable_properties.yml b/lib/guessit/test/enable_disable_properties.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/episodes.yml b/lib/guessit/test/episodes.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/movies.yml b/lib/guessit/test/movies.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/__init__.py b/lib/guessit/test/rules/__init__.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/audio_codec.yml b/lib/guessit/test/rules/audio_codec.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/bonus.yml b/lib/guessit/test/rules/bonus.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/cds.yml b/lib/guessit/test/rules/cds.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/common_words.yml b/lib/guessit/test/rules/common_words.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/country.yml b/lib/guessit/test/rules/country.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/date.yml b/lib/guessit/test/rules/date.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/edition.yml b/lib/guessit/test/rules/edition.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/episodes.yml b/lib/guessit/test/rules/episodes.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/film.yml b/lib/guessit/test/rules/film.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/language.yml b/lib/guessit/test/rules/language.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/other.yml b/lib/guessit/test/rules/other.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/part.yml b/lib/guessit/test/rules/part.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/processors.yml b/lib/guessit/test/rules/processors.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/processors_test.py b/lib/guessit/test/rules/processors_test.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/release_group.yml b/lib/guessit/test/rules/release_group.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/screen_size.yml b/lib/guessit/test/rules/screen_size.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/size.yml b/lib/guessit/test/rules/size.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/source.yml b/lib/guessit/test/rules/source.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/title.yml b/lib/guessit/test/rules/title.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/video_codec.yml b/lib/guessit/test/rules/video_codec.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/rules/website.yml b/lib/guessit/test/rules/website.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/streaming_services.yaml b/lib/guessit/test/streaming_services.yaml old mode 100644 new mode 100755 diff --git a/lib/guessit/test/suggested.json b/lib/guessit/test/suggested.json old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test-input-file.txt b/lib/guessit/test/test-input-file.txt old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_api.py b/lib/guessit/test/test_api.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_api_unicode_literals.py b/lib/guessit/test/test_api_unicode_literals.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_benchmark.py b/lib/guessit/test/test_benchmark.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_main.py b/lib/guessit/test/test_main.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_options.py b/lib/guessit/test/test_options.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/test_yml.py b/lib/guessit/test/test_yml.py old mode 100644 new mode 100755 diff --git a/lib/guessit/test/various.yml b/lib/guessit/test/various.yml old mode 100644 new mode 100755 diff --git a/lib/guessit/tlds-alpha-by-domain.txt b/lib/guessit/tlds-alpha-by-domain.txt old mode 100644 new mode 100755 diff --git a/lib/guessit/yamlutils.py b/lib/guessit/yamlutils.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/__init__.py b/lib/httplib2/__init__.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py2/__init__.py b/lib/httplib2/py2/__init__.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py2/cacerts.txt b/lib/httplib2/py2/cacerts.txt old mode 100644 new mode 100755 diff --git a/lib/httplib2/py2/certs.py b/lib/httplib2/py2/certs.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py2/iri2uri.py b/lib/httplib2/py2/iri2uri.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py2/socks.py b/lib/httplib2/py2/socks.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py3/__init__.py b/lib/httplib2/py3/__init__.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py3/cacerts.txt b/lib/httplib2/py3/cacerts.txt old mode 100644 new mode 100755 diff --git a/lib/httplib2/py3/certs.py b/lib/httplib2/py3/certs.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py3/iri2uri.py b/lib/httplib2/py3/iri2uri.py old mode 100644 new mode 100755 diff --git a/lib/httplib2/py3/socks.py b/lib/httplib2/py3/socks.py old mode 100644 new mode 100755 diff --git a/lib/idna/__init__.py b/lib/idna/__init__.py old mode 100644 new mode 100755 diff --git a/lib/idna/codec.py b/lib/idna/codec.py old mode 100644 new mode 100755 diff --git a/lib/idna/compat.py b/lib/idna/compat.py old mode 100644 new mode 100755 diff --git a/lib/idna/core.py b/lib/idna/core.py old mode 100644 new mode 100755 diff --git a/lib/idna/idnadata.py b/lib/idna/idnadata.py old mode 100644 new mode 100755 diff --git a/lib/idna/intranges.py b/lib/idna/intranges.py old mode 100644 new mode 100755 diff --git a/lib/idna/package_data.py b/lib/idna/package_data.py old mode 100644 new mode 100755 diff --git a/lib/idna/uts46data.py b/lib/idna/uts46data.py old mode 100644 new mode 100755 diff --git a/lib/js2py/__init__.py b/lib/js2py/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/base.py b/lib/js2py/base.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/__init__.py b/lib/js2py/constructors/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsarray.py b/lib/js2py/constructors/jsarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsarraybuffer.py b/lib/js2py/constructors/jsarraybuffer.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsboolean.py b/lib/js2py/constructors/jsboolean.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsdate.py b/lib/js2py/constructors/jsdate.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsfloat32array.py b/lib/js2py/constructors/jsfloat32array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsfloat64array.py b/lib/js2py/constructors/jsfloat64array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsfunction.py b/lib/js2py/constructors/jsfunction.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsint16array.py b/lib/js2py/constructors/jsint16array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsint32array.py b/lib/js2py/constructors/jsint32array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsint8array.py b/lib/js2py/constructors/jsint8array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsmath.py b/lib/js2py/constructors/jsmath.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsnumber.py b/lib/js2py/constructors/jsnumber.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsobject.py b/lib/js2py/constructors/jsobject.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsregexp.py b/lib/js2py/constructors/jsregexp.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsstring.py b/lib/js2py/constructors/jsstring.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsuint16array.py b/lib/js2py/constructors/jsuint16array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsuint32array.py b/lib/js2py/constructors/jsuint32array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsuint8array.py b/lib/js2py/constructors/jsuint8array.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/jsuint8clampedarray.py b/lib/js2py/constructors/jsuint8clampedarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/constructors/time_helpers.py b/lib/js2py/constructors/time_helpers.py old mode 100644 new mode 100755 diff --git a/lib/js2py/es6/__init__.py b/lib/js2py/es6/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/es6/babel.js b/lib/js2py/es6/babel.js old mode 100644 new mode 100755 diff --git a/lib/js2py/es6/babel.py b/lib/js2py/es6/babel.py old mode 100644 new mode 100755 diff --git a/lib/js2py/es6/buildBabel b/lib/js2py/es6/buildBabel old mode 100644 new mode 100755 diff --git a/lib/js2py/evaljs.py b/lib/js2py/evaljs.py old mode 100644 new mode 100755 diff --git a/lib/js2py/host/__init__.py b/lib/js2py/host/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/host/console.py b/lib/js2py/host/console.py old mode 100644 new mode 100755 diff --git a/lib/js2py/host/dom/__init__.py b/lib/js2py/host/dom/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/host/jseval.py b/lib/js2py/host/jseval.py old mode 100644 new mode 100755 diff --git a/lib/js2py/host/jsfunctions.py b/lib/js2py/host/jsfunctions.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/__init__.py b/lib/js2py/internals/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/base.py b/lib/js2py/internals/base.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/byte_trans.py b/lib/js2py/internals/byte_trans.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/code.py b/lib/js2py/internals/code.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/__init__.py b/lib/js2py/internals/constructors/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsarray.py b/lib/js2py/internals/constructors/jsarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsboolean.py b/lib/js2py/internals/constructors/jsboolean.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsconsole.py b/lib/js2py/internals/constructors/jsconsole.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsdate.py b/lib/js2py/internals/constructors/jsdate.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsfunction.py b/lib/js2py/internals/constructors/jsfunction.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsmath.py b/lib/js2py/internals/constructors/jsmath.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsnumber.py b/lib/js2py/internals/constructors/jsnumber.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsobject.py b/lib/js2py/internals/constructors/jsobject.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsregexp.py b/lib/js2py/internals/constructors/jsregexp.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/jsstring.py b/lib/js2py/internals/constructors/jsstring.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/constructors/time_helpers.py b/lib/js2py/internals/constructors/time_helpers.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/conversions.py b/lib/js2py/internals/conversions.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/desc.py b/lib/js2py/internals/desc.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/fill_space.py b/lib/js2py/internals/fill_space.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/func_utils.py b/lib/js2py/internals/func_utils.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/gen.py b/lib/js2py/internals/gen.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/opcodes.py b/lib/js2py/internals/opcodes.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/operations.py b/lib/js2py/internals/operations.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/__init__.py b/lib/js2py/internals/prototypes/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsarray.py b/lib/js2py/internals/prototypes/jsarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsboolean.py b/lib/js2py/internals/prototypes/jsboolean.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jserror.py b/lib/js2py/internals/prototypes/jserror.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsfunction.py b/lib/js2py/internals/prototypes/jsfunction.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsjson.py b/lib/js2py/internals/prototypes/jsjson.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsnumber.py b/lib/js2py/internals/prototypes/jsnumber.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsobject.py b/lib/js2py/internals/prototypes/jsobject.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsregexp.py b/lib/js2py/internals/prototypes/jsregexp.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsstring.py b/lib/js2py/internals/prototypes/jsstring.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/prototypes/jsutils.py b/lib/js2py/internals/prototypes/jsutils.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/seval.py b/lib/js2py/internals/seval.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/simplex.py b/lib/js2py/internals/simplex.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/space.py b/lib/js2py/internals/space.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/speed.py b/lib/js2py/internals/speed.py old mode 100644 new mode 100755 diff --git a/lib/js2py/internals/trans_utils.py b/lib/js2py/internals/trans_utils.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/__init__.py b/lib/js2py/legecy_translators/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/constants.py b/lib/js2py/legecy_translators/constants.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/exps.py b/lib/js2py/legecy_translators/exps.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/flow.py b/lib/js2py/legecy_translators/flow.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/functions.py b/lib/js2py/legecy_translators/functions.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/jsparser.py b/lib/js2py/legecy_translators/jsparser.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/nodevisitor.py b/lib/js2py/legecy_translators/nodevisitor.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/nparser.py b/lib/js2py/legecy_translators/nparser.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/objects.py b/lib/js2py/legecy_translators/objects.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/tokenize.py b/lib/js2py/legecy_translators/tokenize.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/translator.py b/lib/js2py/legecy_translators/translator.py old mode 100644 new mode 100755 diff --git a/lib/js2py/legecy_translators/utils.py b/lib/js2py/legecy_translators/utils.py old mode 100644 new mode 100755 diff --git a/lib/js2py/node_import.py b/lib/js2py/node_import.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/__init__.py b/lib/js2py/prototypes/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsarray.py b/lib/js2py/prototypes/jsarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsarraybuffer.py b/lib/js2py/prototypes/jsarraybuffer.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsboolean.py b/lib/js2py/prototypes/jsboolean.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jserror.py b/lib/js2py/prototypes/jserror.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsfunction.py b/lib/js2py/prototypes/jsfunction.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsjson.py b/lib/js2py/prototypes/jsjson.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsnumber.py b/lib/js2py/prototypes/jsnumber.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsobject.py b/lib/js2py/prototypes/jsobject.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsregexp.py b/lib/js2py/prototypes/jsregexp.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jsstring.py b/lib/js2py/prototypes/jsstring.py old mode 100644 new mode 100755 diff --git a/lib/js2py/prototypes/jstypedarray.py b/lib/js2py/prototypes/jstypedarray.py old mode 100644 new mode 100755 diff --git a/lib/js2py/py_node_modules/__init__.py b/lib/js2py/py_node_modules/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/pyjs.py b/lib/js2py/pyjs.py old mode 100644 new mode 100755 diff --git a/lib/js2py/translators/__init__.py b/lib/js2py/translators/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/translators/friendly_nodes.py b/lib/js2py/translators/friendly_nodes.py old mode 100644 new mode 100755 diff --git a/lib/js2py/translators/jsregexps.py b/lib/js2py/translators/jsregexps.py old mode 100644 new mode 100755 diff --git a/lib/js2py/translators/translating_nodes.py b/lib/js2py/translators/translating_nodes.py old mode 100644 new mode 100755 diff --git a/lib/js2py/translators/translator.py b/lib/js2py/translators/translator.py old mode 100644 new mode 100755 diff --git a/lib/js2py/utils/__init__.py b/lib/js2py/utils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/js2py/utils/injector.py b/lib/js2py/utils/injector.py old mode 100644 new mode 100755 diff --git a/lib/jsinterpreter.py b/lib/jsinterpreter.py old mode 100644 new mode 100755 diff --git a/lib/jsunpack.py b/lib/jsunpack.py old mode 100644 new mode 100755 diff --git a/lib/jsunpack_js2py.py b/lib/jsunpack_js2py.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/__init__.py b/lib/librecaptcha/__init__.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/__main__.py b/lib/librecaptcha/__main__.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/cli.py b/lib/librecaptcha/cli.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/errors.py b/lib/librecaptcha/errors.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/extract_strings.py b/lib/librecaptcha/extract_strings.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/gui.py b/lib/librecaptcha/gui.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/librecaptcha.py b/lib/librecaptcha/librecaptcha.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/recaptcha.py b/lib/librecaptcha/recaptcha.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/typing.py b/lib/librecaptcha/typing.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/user_agent_data.py b/lib/librecaptcha/user_agent_data.py old mode 100644 new mode 100755 diff --git a/lib/librecaptcha/user_agents.py b/lib/librecaptcha/user_agents.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/__init__.py b/lib/megaserver/__init__.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/client.py b/lib/megaserver/client.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/cursor.py b/lib/megaserver/cursor.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/file.py b/lib/megaserver/file.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/handler.py b/lib/megaserver/handler.py old mode 100644 new mode 100755 diff --git a/lib/megaserver/server.py b/lib/megaserver/server.py old mode 100644 new mode 100755 diff --git a/lib/past/__init__.py b/lib/past/__init__.py old mode 100644 new mode 100755 diff --git a/lib/past/builtins/__init__.py b/lib/past/builtins/__init__.py old mode 100644 new mode 100755 diff --git a/lib/past/builtins/misc.py b/lib/past/builtins/misc.py old mode 100644 new mode 100755 diff --git a/lib/past/builtins/noniterators.py b/lib/past/builtins/noniterators.py old mode 100644 new mode 100755 diff --git a/lib/past/translation/__init__.py b/lib/past/translation/__init__.py old mode 100644 new mode 100755 diff --git a/lib/past/types/__init__.py b/lib/past/types/__init__.py old mode 100644 new mode 100755 diff --git a/lib/past/types/basestring.py b/lib/past/types/basestring.py old mode 100644 new mode 100755 diff --git a/lib/past/types/olddict.py b/lib/past/types/olddict.py old mode 100644 new mode 100755 diff --git a/lib/past/types/oldstr.py b/lib/past/types/oldstr.py old mode 100644 new mode 100755 diff --git a/lib/past/utils/__init__.py b/lib/past/utils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/patch.py b/lib/patch.py old mode 100644 new mode 100755 diff --git a/lib/proxytranslate.py b/lib/proxytranslate.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/__init__.py b/lib/pyasn1/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/__init__.py b/lib/pyasn1/codec/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/ber/__init__.py b/lib/pyasn1/codec/ber/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/ber/decoder.py b/lib/pyasn1/codec/ber/decoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/ber/encoder.py b/lib/pyasn1/codec/ber/encoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/ber/eoo.py b/lib/pyasn1/codec/ber/eoo.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/cer/__init__.py b/lib/pyasn1/codec/cer/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/cer/decoder.py b/lib/pyasn1/codec/cer/decoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/cer/encoder.py b/lib/pyasn1/codec/cer/encoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/der/__init__.py b/lib/pyasn1/codec/der/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/der/decoder.py b/lib/pyasn1/codec/der/decoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/der/encoder.py b/lib/pyasn1/codec/der/encoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/native/__init__.py b/lib/pyasn1/codec/native/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/native/decoder.py b/lib/pyasn1/codec/native/decoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/native/encoder.py b/lib/pyasn1/codec/native/encoder.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/codec/streaming.py b/lib/pyasn1/codec/streaming.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/compat/__init__.py b/lib/pyasn1/compat/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/compat/integer.py b/lib/pyasn1/compat/integer.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/compat/octets.py b/lib/pyasn1/compat/octets.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/debug.py b/lib/pyasn1/debug.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/error.py b/lib/pyasn1/error.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/__init__.py b/lib/pyasn1/type/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/base.py b/lib/pyasn1/type/base.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/char.py b/lib/pyasn1/type/char.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/constraint.py b/lib/pyasn1/type/constraint.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/error.py b/lib/pyasn1/type/error.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/namedtype.py b/lib/pyasn1/type/namedtype.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/namedval.py b/lib/pyasn1/type/namedval.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/opentype.py b/lib/pyasn1/type/opentype.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/tag.py b/lib/pyasn1/type/tag.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/tagmap.py b/lib/pyasn1/type/tagmap.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/univ.py b/lib/pyasn1/type/univ.py old mode 100644 new mode 100755 diff --git a/lib/pyasn1/type/useful.py b/lib/pyasn1/type/useful.py old mode 100644 new mode 100755 diff --git a/lib/pyjsparser/__init__.py b/lib/pyjsparser/__init__.py old mode 100644 new mode 100755 diff --git a/lib/pyjsparser/parser.py b/lib/pyjsparser/parser.py old mode 100644 new mode 100755 diff --git a/lib/pyjsparser/pyjsparserdata.py b/lib/pyjsparser/pyjsparserdata.py old mode 100644 new mode 100755 diff --git a/lib/pyjsparser/std_nodes.py b/lib/pyjsparser/std_nodes.py old mode 100644 new mode 100755 diff --git a/lib/pyparsing.py b/lib/pyparsing.py old mode 100644 new mode 100755 diff --git a/lib/reprlib/__init__.py b/lib/reprlib/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests/__init__.py b/lib/requests/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests/__version__.py b/lib/requests/__version__.py old mode 100644 new mode 100755 diff --git a/lib/requests/_internal_utils.py b/lib/requests/_internal_utils.py old mode 100644 new mode 100755 diff --git a/lib/requests/adapters.py b/lib/requests/adapters.py old mode 100644 new mode 100755 diff --git a/lib/requests/api.py b/lib/requests/api.py old mode 100644 new mode 100755 diff --git a/lib/requests/auth.py b/lib/requests/auth.py old mode 100644 new mode 100755 diff --git a/lib/requests/certs.py b/lib/requests/certs.py old mode 100644 new mode 100755 diff --git a/lib/requests/compat.py b/lib/requests/compat.py old mode 100644 new mode 100755 diff --git a/lib/requests/cookies.py b/lib/requests/cookies.py old mode 100644 new mode 100755 diff --git a/lib/requests/exceptions.py b/lib/requests/exceptions.py old mode 100644 new mode 100755 diff --git a/lib/requests/help.py b/lib/requests/help.py old mode 100644 new mode 100755 diff --git a/lib/requests/hooks.py b/lib/requests/hooks.py old mode 100644 new mode 100755 diff --git a/lib/requests/models.py b/lib/requests/models.py old mode 100644 new mode 100755 diff --git a/lib/requests/packages.py b/lib/requests/packages.py old mode 100644 new mode 100755 diff --git a/lib/requests/sessions.py b/lib/requests/sessions.py old mode 100644 new mode 100755 diff --git a/lib/requests/status_codes.py b/lib/requests/status_codes.py old mode 100644 new mode 100755 diff --git a/lib/requests/structures.py b/lib/requests/structures.py old mode 100644 new mode 100755 diff --git a/lib/requests/utils.py b/lib/requests/utils.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/__init__.py b/lib/requests_toolbelt/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/_compat.py b/lib/requests_toolbelt/_compat.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/__init__.py b/lib/requests_toolbelt/adapters/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/appengine.py b/lib/requests_toolbelt/adapters/appengine.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/fingerprint.py b/lib/requests_toolbelt/adapters/fingerprint.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/host_header_ssl.py b/lib/requests_toolbelt/adapters/host_header_ssl.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/socket_options.py b/lib/requests_toolbelt/adapters/socket_options.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/source.py b/lib/requests_toolbelt/adapters/source.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/ssl.py b/lib/requests_toolbelt/adapters/ssl.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/adapters/x509.py b/lib/requests_toolbelt/adapters/x509.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/auth/__init__.py b/lib/requests_toolbelt/auth/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/auth/_digest_auth_compat.py b/lib/requests_toolbelt/auth/_digest_auth_compat.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/auth/guess.py b/lib/requests_toolbelt/auth/guess.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/auth/handler.py b/lib/requests_toolbelt/auth/handler.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/auth/http_proxy_digest.py b/lib/requests_toolbelt/auth/http_proxy_digest.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/cookies/__init__.py b/lib/requests_toolbelt/cookies/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/cookies/forgetful.py b/lib/requests_toolbelt/cookies/forgetful.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/downloadutils/__init__.py b/lib/requests_toolbelt/downloadutils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/downloadutils/stream.py b/lib/requests_toolbelt/downloadutils/stream.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/downloadutils/tee.py b/lib/requests_toolbelt/downloadutils/tee.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/exceptions.py b/lib/requests_toolbelt/exceptions.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/multipart/__init__.py b/lib/requests_toolbelt/multipart/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/multipart/decoder.py b/lib/requests_toolbelt/multipart/decoder.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/multipart/encoder.py b/lib/requests_toolbelt/multipart/encoder.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/sessions.py b/lib/requests_toolbelt/sessions.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/streaming_iterator.py b/lib/requests_toolbelt/streaming_iterator.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/threaded/__init__.py b/lib/requests_toolbelt/threaded/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/threaded/pool.py b/lib/requests_toolbelt/threaded/pool.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/threaded/thread.py b/lib/requests_toolbelt/threaded/thread.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/utils/__init__.py b/lib/requests_toolbelt/utils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/utils/deprecated.py b/lib/requests_toolbelt/utils/deprecated.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/utils/dump.py b/lib/requests_toolbelt/utils/dump.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/utils/formdata.py b/lib/requests_toolbelt/utils/formdata.py old mode 100644 new mode 100755 diff --git a/lib/requests_toolbelt/utils/user_agent.py b/lib/requests_toolbelt/utils/user_agent.py old mode 100644 new mode 100755 diff --git a/lib/rijndael/__init__.py b/lib/rijndael/__init__.py old mode 100644 new mode 100755 diff --git a/lib/rijndael/rijndael.py b/lib/rijndael/rijndael.py old mode 100644 new mode 100755 diff --git a/lib/rijndael/rijndael_cbc.py b/lib/rijndael/rijndael_cbc.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/__init__.py b/lib/sambatools/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/libsmb.py b/lib/sambatools/libsmb.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/NetBIOS.py b/lib/sambatools/python2/nmb/NetBIOS.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/NetBIOSProtocol.py b/lib/sambatools/python2/nmb/NetBIOSProtocol.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/__init__.py b/lib/sambatools/python2/nmb/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/base.py b/lib/sambatools/python2/nmb/base.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/nmb_constants.py b/lib/sambatools/python2/nmb/nmb_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/nmb_structs.py b/lib/sambatools/python2/nmb/nmb_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/nmb/utils.py b/lib/sambatools/python2/nmb/utils.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/SMBConnection.py b/lib/sambatools/python2/smb/SMBConnection.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/SMBHandler.py b/lib/sambatools/python2/smb/SMBHandler.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/SMBProtocol.py b/lib/sambatools/python2/smb/SMBProtocol.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/__init__.py b/lib/sambatools/python2/smb/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/base.py b/lib/sambatools/python2/smb/base.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/ntlm.py b/lib/sambatools/python2/smb/ntlm.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/security_descriptors.py b/lib/sambatools/python2/smb/security_descriptors.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/securityblob.py b/lib/sambatools/python2/smb/securityblob.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/smb2_constants.py b/lib/sambatools/python2/smb/smb2_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/smb2_structs.py b/lib/sambatools/python2/smb/smb2_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/smb_constants.py b/lib/sambatools/python2/smb/smb_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/smb_structs.py b/lib/sambatools/python2/smb/smb_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/README.txt b/lib/sambatools/python2/smb/utils/README.txt old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/U32.py b/lib/sambatools/python2/smb/utils/U32.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/__init__.py b/lib/sambatools/python2/smb/utils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/md4.py b/lib/sambatools/python2/smb/utils/md4.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/pyDes.py b/lib/sambatools/python2/smb/utils/pyDes.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/rc4.py b/lib/sambatools/python2/smb/utils/rc4.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python2/smb/utils/sha256.py b/lib/sambatools/python2/smb/utils/sha256.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/NetBIOS.py b/lib/sambatools/python3/nmb/NetBIOS.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/NetBIOSProtocol.py b/lib/sambatools/python3/nmb/NetBIOSProtocol.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/__init__.py b/lib/sambatools/python3/nmb/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/base.py b/lib/sambatools/python3/nmb/base.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/nmb_constants.py b/lib/sambatools/python3/nmb/nmb_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/nmb_structs.py b/lib/sambatools/python3/nmb/nmb_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/nmb/utils.py b/lib/sambatools/python3/nmb/utils.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/SMBConnection.py b/lib/sambatools/python3/smb/SMBConnection.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/SMBHandler.py b/lib/sambatools/python3/smb/SMBHandler.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/SMBProtocol.py b/lib/sambatools/python3/smb/SMBProtocol.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/__init__.py b/lib/sambatools/python3/smb/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/base.py b/lib/sambatools/python3/smb/base.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/ntlm.py b/lib/sambatools/python3/smb/ntlm.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/security_descriptors.py b/lib/sambatools/python3/smb/security_descriptors.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/securityblob.py b/lib/sambatools/python3/smb/securityblob.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/smb2_constants.py b/lib/sambatools/python3/smb/smb2_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/smb2_structs.py b/lib/sambatools/python3/smb/smb2_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/smb_constants.py b/lib/sambatools/python3/smb/smb_constants.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/smb_structs.py b/lib/sambatools/python3/smb/smb_structs.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/U32.py b/lib/sambatools/python3/smb/utils/U32.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/__init__.py b/lib/sambatools/python3/smb/utils/__init__.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/md4.py b/lib/sambatools/python3/smb/utils/md4.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/pyDes.py b/lib/sambatools/python3/smb/utils/pyDes.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/rc4.py b/lib/sambatools/python3/smb/utils/rc4.py old mode 100644 new mode 100755 diff --git a/lib/sambatools/python3/smb/utils/sha256.py b/lib/sambatools/python3/smb/utils/sha256.py old mode 100644 new mode 100755 diff --git a/lib/schedule.py b/lib/schedule.py old mode 100644 new mode 100755 diff --git a/lib/six.py b/lib/six.py old mode 100644 new mode 100755 index 6bf4fd38..3de5969b --- a/lib/six.py +++ b/lib/six.py @@ -1,4 +1,4 @@ -# Copyright (c) 2010-2017 Benjamin Peterson +# Copyright (c) 2010-2024 Benjamin Peterson # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -29,7 +29,7 @@ import sys import types __author__ = "Benjamin Peterson <benjamin@python.org>" -__version__ = "1.11.0" +__version__ = "1.17.0" # Useful for very coarse version differentiation. @@ -71,6 +71,11 @@ else: MAXSIZE = int((1 << 63) - 1) del X +if PY34: + from importlib.util import spec_from_loader +else: + spec_from_loader = None + def _add_doc(func, doc): """Add documentation to a function.""" @@ -186,6 +191,11 @@ class _SixMetaPathImporter(object): return self return None + def find_spec(self, fullname, path, target=None): + if fullname in self.known_modules: + return spec_from_loader(fullname, self) + return None + def __get_module(self, fullname): try: return self.known_modules[fullname] @@ -223,6 +233,12 @@ class _SixMetaPathImporter(object): return None get_source = get_code # same as get_code + def create_module(self, spec): + return self.load_module(spec.name) + + def exec_module(self, module): + pass + _importer = _SixMetaPathImporter(__name__) @@ -247,7 +263,7 @@ _moved_attributes = [ MovedAttribute("reduce", "__builtin__", "functools"), MovedAttribute("shlex_quote", "pipes", "shlex", "quote"), MovedAttribute("StringIO", "StringIO", "io"), - MovedAttribute("UserDict", "UserDict", "collections"), + MovedAttribute("UserDict", "UserDict", "collections", "IterableUserDict", "UserDict"), MovedAttribute("UserList", "UserList", "collections"), MovedAttribute("UserString", "UserString", "collections"), MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"), @@ -255,9 +271,11 @@ _moved_attributes = [ MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"), MovedModule("builtins", "__builtin__"), MovedModule("configparser", "ConfigParser"), + MovedModule("collections_abc", "collections", "collections.abc" if sys.version_info >= (3, 3) else "collections"), MovedModule("copyreg", "copy_reg"), MovedModule("dbm_gnu", "gdbm", "dbm.gnu"), - MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread"), + MovedModule("dbm_ndbm", "dbm", "dbm.ndbm"), + MovedModule("_dummy_thread", "dummy_thread", "_dummy_thread" if sys.version_info < (3, 9) else "_thread"), MovedModule("http_cookiejar", "cookielib", "http.cookiejar"), MovedModule("http_cookies", "Cookie", "http.cookies"), MovedModule("html_entities", "htmlentitydefs", "html.entities"), @@ -417,12 +435,17 @@ _urllib_request_moved_attributes = [ MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"), MovedAttribute("urlretrieve", "urllib", "urllib.request"), MovedAttribute("urlcleanup", "urllib", "urllib.request"), - MovedAttribute("URLopener", "urllib", "urllib.request"), - MovedAttribute("FancyURLopener", "urllib", "urllib.request"), MovedAttribute("proxy_bypass", "urllib", "urllib.request"), MovedAttribute("parse_http_list", "urllib2", "urllib.request"), MovedAttribute("parse_keqv_list", "urllib2", "urllib.request"), ] +if sys.version_info[:2] < (3, 14): + _urllib_request_moved_attributes.extend( + [ + MovedAttribute("URLopener", "urllib", "urllib.request"), + MovedAttribute("FancyURLopener", "urllib", "urllib.request"), + ] + ) for attr in _urllib_request_moved_attributes: setattr(Module_six_moves_urllib_request, attr.name, attr) del attr @@ -637,13 +660,16 @@ if PY3: import io StringIO = io.StringIO BytesIO = io.BytesIO + del io _assertCountEqual = "assertCountEqual" if sys.version_info[1] <= 1: _assertRaisesRegex = "assertRaisesRegexp" _assertRegex = "assertRegexpMatches" + _assertNotRegex = "assertNotRegexpMatches" else: _assertRaisesRegex = "assertRaisesRegex" _assertRegex = "assertRegex" + _assertNotRegex = "assertNotRegex" else: def b(s): return s @@ -665,6 +691,7 @@ else: _assertCountEqual = "assertItemsEqual" _assertRaisesRegex = "assertRaisesRegexp" _assertRegex = "assertRegexpMatches" + _assertNotRegex = "assertNotRegexpMatches" _add_doc(b, """Byte literal""") _add_doc(u, """Text literal""") @@ -681,6 +708,10 @@ def assertRegex(self, *args, **kwargs): return getattr(self, _assertRegex)(*args, **kwargs) +def assertNotRegex(self, *args, **kwargs): + return getattr(self, _assertNotRegex)(*args, **kwargs) + + if PY3: exec_ = getattr(moves.builtins, "exec") @@ -716,16 +747,7 @@ else: """) -if sys.version_info[:2] == (3, 2): - exec_("""def raise_from(value, from_value): - try: - if from_value is None: - raise value - raise value from from_value - finally: - value = None -""") -elif sys.version_info[:2] > (3, 2): +if sys.version_info[:2] > (3,): exec_("""def raise_from(value, from_value): try: raise value from from_value @@ -805,13 +827,33 @@ if sys.version_info[:2] < (3, 3): _add_doc(reraise, """Reraise an exception.""") if sys.version_info[0:2] < (3, 4): + # This does exactly the same what the :func:`py3:functools.update_wrapper` + # function does on Python versions after 3.2. It sets the ``__wrapped__`` + # attribute on ``wrapper`` object and it doesn't raise an error if any of + # the attributes mentioned in ``assigned`` and ``updated`` are missing on + # ``wrapped`` object. + def _update_wrapper(wrapper, wrapped, + assigned=functools.WRAPPER_ASSIGNMENTS, + updated=functools.WRAPPER_UPDATES): + for attr in assigned: + try: + value = getattr(wrapped, attr) + except AttributeError: + continue + else: + setattr(wrapper, attr, value) + for attr in updated: + getattr(wrapper, attr).update(getattr(wrapped, attr, {})) + wrapper.__wrapped__ = wrapped + return wrapper + _update_wrapper.__doc__ = functools.update_wrapper.__doc__ + def wraps(wrapped, assigned=functools.WRAPPER_ASSIGNMENTS, updated=functools.WRAPPER_UPDATES): - def wrapper(f): - f = functools.wraps(wrapped, assigned, updated)(f) - f.__wrapped__ = wrapped - return f - return wrapper + return functools.partial(_update_wrapper, wrapped=wrapped, + assigned=assigned, updated=updated) + wraps.__doc__ = functools.wraps.__doc__ + else: wraps = functools.wraps @@ -824,7 +866,15 @@ def with_metaclass(meta, *bases): class metaclass(type): def __new__(cls, name, this_bases, d): - return meta(name, bases, d) + if sys.version_info[:2] >= (3, 7): + # This version introduced PEP 560 that requires a bit + # of extra care (we mimic what is done by __build_class__). + resolved_bases = types.resolve_bases(bases) + if resolved_bases is not bases: + d['__orig_bases__'] = bases + else: + resolved_bases = bases + return meta(name, resolved_bases, d) @classmethod def __prepare__(cls, name, this_bases): @@ -844,13 +894,75 @@ def add_metaclass(metaclass): orig_vars.pop(slots_var) orig_vars.pop('__dict__', None) orig_vars.pop('__weakref__', None) + if hasattr(cls, '__qualname__'): + orig_vars['__qualname__'] = cls.__qualname__ return metaclass(cls.__name__, cls.__bases__, orig_vars) return wrapper +def ensure_binary(s, encoding='utf-8', errors='strict'): + """Coerce **s** to six.binary_type. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> encoded to `bytes` + - `bytes` -> `bytes` + """ + if isinstance(s, binary_type): + return s + if isinstance(s, text_type): + return s.encode(encoding, errors) + raise TypeError("not expecting type '%s'" % type(s)) + + +def ensure_str(s, encoding='utf-8', errors='strict'): + """Coerce *s* to `str`. + + For Python 2: + - `unicode` -> encoded to `str` + - `str` -> `str` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + # Optimization: Fast return for the common case. + if type(s) is str: + return s + if PY2 and isinstance(s, text_type): + return s.encode(encoding, errors) + elif PY3 and isinstance(s, binary_type): + return s.decode(encoding, errors) + elif not isinstance(s, (text_type, binary_type)): + raise TypeError("not expecting type '%s'" % type(s)) + return s + + +def ensure_text(s, encoding='utf-8', errors='strict'): + """Coerce *s* to six.text_type. + + For Python 2: + - `unicode` -> `unicode` + - `str` -> `unicode` + + For Python 3: + - `str` -> `str` + - `bytes` -> decoded to `str` + """ + if isinstance(s, binary_type): + return s.decode(encoding, errors) + elif isinstance(s, text_type): + return s + else: + raise TypeError("not expecting type '%s'" % type(s)) + + def python_2_unicode_compatible(klass): """ - A decorator that defines __unicode__ and __str__ methods under Python 2. + A class decorator that defines __unicode__ and __str__ methods under Python 2. Under Python 3 it does nothing. To support Python 2 and 3 with a single code base, define a __str__ method diff --git a/lib/sqlitedict.py b/lib/sqlitedict.py old mode 100644 new mode 100755 diff --git a/lib/streamingcommunity/__init__.py b/lib/streamingcommunity/__init__.py old mode 100644 new mode 100755 diff --git a/lib/streamingcommunity/client.py b/lib/streamingcommunity/client.py old mode 100644 new mode 100755 diff --git a/lib/streamingcommunity/handler.py b/lib/streamingcommunity/handler.py old mode 100644 new mode 100755 diff --git a/lib/streamingcommunity/server.py b/lib/streamingcommunity/server.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/__init__.py b/lib/torrentool/__init__.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/api.py b/lib/torrentool/api.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/bencode.py b/lib/torrentool/bencode.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/cli.py b/lib/torrentool/cli.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/exceptions.py b/lib/torrentool/exceptions.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/repo/open_trackers.ini b/lib/torrentool/repo/open_trackers.ini old mode 100644 new mode 100755 diff --git a/lib/torrentool/torrent.py b/lib/torrentool/torrent.py old mode 100644 new mode 100755 diff --git a/lib/torrentool/utils.py b/lib/torrentool/utils.py old mode 100644 new mode 100755 diff --git a/lib/unshortenit.py b/lib/unshortenit.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/__init__.py b/lib/urllib3/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/_collections.py b/lib/urllib3/_collections.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/_version.py b/lib/urllib3/_version.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/connection.py b/lib/urllib3/connection.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/connectionpool.py b/lib/urllib3/connectionpool.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/__init__.py b/lib/urllib3/contrib/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/_appengine_environ.py b/lib/urllib3/contrib/_appengine_environ.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/_securetransport/__init__.py b/lib/urllib3/contrib/_securetransport/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/_securetransport/bindings.py b/lib/urllib3/contrib/_securetransport/bindings.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/_securetransport/low_level.py b/lib/urllib3/contrib/_securetransport/low_level.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/appengine.py b/lib/urllib3/contrib/appengine.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/ntlmpool.py b/lib/urllib3/contrib/ntlmpool.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/pyopenssl.py b/lib/urllib3/contrib/pyopenssl.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/securetransport.py b/lib/urllib3/contrib/securetransport.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/contrib/socks.py b/lib/urllib3/contrib/socks.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/exceptions.py b/lib/urllib3/exceptions.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/fields.py b/lib/urllib3/fields.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/filepost.py b/lib/urllib3/filepost.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/packages/__init__.py b/lib/urllib3/packages/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/packages/backports/__init__.py b/lib/urllib3/packages/backports/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/packages/backports/makefile.py b/lib/urllib3/packages/backports/makefile.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/packages/backports/weakref_finalize.py b/lib/urllib3/packages/backports/weakref_finalize.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/packages/six.py b/lib/urllib3/packages/six.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/poolmanager.py b/lib/urllib3/poolmanager.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/request.py b/lib/urllib3/request.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/response.py b/lib/urllib3/response.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/__init__.py b/lib/urllib3/util/__init__.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/connection.py b/lib/urllib3/util/connection.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/proxy.py b/lib/urllib3/util/proxy.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/queue.py b/lib/urllib3/util/queue.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/request.py b/lib/urllib3/util/request.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/response.py b/lib/urllib3/util/response.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/retry.py b/lib/urllib3/util/retry.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/ssl_.py b/lib/urllib3/util/ssl_.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/ssl_match_hostname.py b/lib/urllib3/util/ssl_match_hostname.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/ssltransport.py b/lib/urllib3/util/ssltransport.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/timeout.py b/lib/urllib3/util/timeout.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/url.py b/lib/urllib3/util/url.py old mode 100644 new mode 100755 diff --git a/lib/urllib3/util/wait.py b/lib/urllib3/util/wait.py old mode 100644 new mode 100755 diff --git a/lib/vvvvid_decoder.py b/lib/vvvvid_decoder.py old mode 100644 new mode 100755 diff --git a/lib/xmltodict.py b/lib/xmltodict.py old mode 100644 new mode 100755 diff --git a/platformcode/__init__.py b/platformcode/__init__.py old mode 100644 new mode 100755 diff --git a/platformcode/autorenumber.py b/platformcode/autorenumber.py old mode 100644 new mode 100755 diff --git a/platformcode/backup.py b/platformcode/backup.py old mode 100644 new mode 100755 diff --git a/platformcode/checkhost.py b/platformcode/checkhost.py old mode 100644 new mode 100755 diff --git a/platformcode/config.py b/platformcode/config.py old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/__init__.py b/platformcode/contextmenu/__init__.py old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/contextmenu.json b/platformcode/contextmenu/contextmenu.json old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/search.py b/platformcode/contextmenu/search.py old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/show_servers.py b/platformcode/contextmenu/show_servers.py old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/trailer.py b/platformcode/contextmenu/trailer.py old mode 100644 new mode 100755 diff --git a/platformcode/contextmenu/tvshow_options.py b/platformcode/contextmenu/tvshow_options.py old mode 100644 new mode 100755 diff --git a/platformcode/download_and_play.py b/platformcode/download_and_play.py old mode 100644 new mode 100755 diff --git a/platformcode/elementum_download.py b/platformcode/elementum_download.py old mode 100644 new mode 100755 diff --git a/platformcode/envtal.py b/platformcode/envtal.py old mode 100644 new mode 100755 diff --git a/platformcode/infoplus.py b/platformcode/infoplus.py old mode 100644 new mode 100755 diff --git a/platformcode/keymaptools.py b/platformcode/keymaptools.py old mode 100644 new mode 100755 diff --git a/platformcode/launcher.py b/platformcode/launcher.py old mode 100644 new mode 100755 diff --git a/platformcode/logger.py b/platformcode/logger.py old mode 100644 new mode 100755 diff --git a/platformcode/platformtools.py b/platformcode/platformtools.py old mode 100644 new mode 100755 diff --git a/platformcode/recaptcha.py b/platformcode/recaptcha.py old mode 100644 new mode 100755 diff --git a/platformcode/shortcuts.py b/platformcode/shortcuts.py old mode 100644 new mode 100755 diff --git a/platformcode/unify.py b/platformcode/unify.py old mode 100644 new mode 100755 diff --git a/platformcode/updater.py b/platformcode/updater.py old mode 100644 new mode 100755 index 8e8d5492..dbf8ab69 --- a/platformcode/updater.py +++ b/platformcode/updater.py @@ -22,7 +22,7 @@ addonname = addon.getAddonInfo('name') _hdr_pat = re.compile("^@@ -(\d+),?(\d+)? \+(\d+),?(\d+)? @@.*") -branch = 'master' +branch = 'stable' user = 'kodiondemand' repo = 'addon' addonDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) diff --git a/platformcode/xbmc_config_menu.py b/platformcode/xbmc_config_menu.py old mode 100644 new mode 100755 diff --git a/platformcode/xbmc_info_window.py b/platformcode/xbmc_info_window.py old mode 100644 new mode 100755 diff --git a/platformcode/xbmc_videolibrary.py b/platformcode/xbmc_videolibrary.py old mode 100644 new mode 100755 diff --git a/resources/advancedsettings.xml b/resources/advancedsettings.xml old mode 100644 new mode 100755 diff --git a/resources/kod.mp4 b/resources/kod.mp4 old mode 100644 new mode 100755 diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po old mode 100644 new mode 100755 diff --git a/resources/language/resource.language.it_it/strings.po b/resources/language/resource.language.it_it/strings.po old mode 100644 new mode 100755 diff --git a/resources/media/dark-logo.png b/resources/media/dark-logo.png old mode 100644 new mode 100755 diff --git a/resources/media/fanart.jpg b/resources/media/fanart.jpg old mode 100644 new mode 100755 diff --git a/resources/media/light-logo.png b/resources/media/light-logo.png old mode 100644 new mode 100755 diff --git a/resources/media/logo.png b/resources/media/logo.png old mode 100644 new mode 100755 diff --git a/resources/media/screenshot-1.png b/resources/media/screenshot-1.png old mode 100644 new mode 100755 diff --git a/resources/media/screenshot-2.png b/resources/media/screenshot-2.png old mode 100644 new mode 100755 diff --git a/resources/media/screenshot-3.png b/resources/media/screenshot-3.png old mode 100644 new mode 100755 diff --git a/resources/settings.xml b/resources/settings.xml old mode 100644 new mode 100755 diff --git a/resources/settings/elementum/settings.xml b/resources/settings/elementum/settings.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/ChannelSettings.xml b/resources/skins/Default/720p/ChannelSettings.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/GlobalSearch.xml b/resources/skins/Default/720p/GlobalSearch.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/InfoPlus.xml b/resources/skins/Default/720p/InfoPlus.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/InfoWindow.xml b/resources/skins/Default/720p/InfoWindow.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/NextDialog.xml b/resources/skins/Default/720p/NextDialog.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/NextDialogCompact.xml b/resources/skins/Default/720p/NextDialogCompact.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/NextDialogExtended.xml b/resources/skins/Default/720p/NextDialogExtended.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/Recaptcha.xml b/resources/skins/Default/720p/Recaptcha.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/Register.xml b/resources/skins/Default/720p/Register.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/Renumber.xml b/resources/skins/Default/720p/Renumber.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/ResumePlayback.xml b/resources/skins/Default/720p/ResumePlayback.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/SearchWindow.xml b/resources/skins/Default/720p/SearchWindow.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/SelectGroup.xml b/resources/skins/Default/720p/SelectGroup.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/Servers.xml b/resources/skins/Default/720p/Servers.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/ServersWindow.xml b/resources/skins/Default/720p/ServersWindow.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/ShortCutMenu.xml b/resources/skins/Default/720p/ShortCutMenu.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/TitleOrIDWindow.xml b/resources/skins/Default/720p/TitleOrIDWindow.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/720p/TrailerWindow.xml b/resources/skins/Default/720p/TrailerWindow.xml old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/MenuItemFO.png b/resources/skins/Default/media/Controls/MenuItemFO.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/MenuItemNF.png b/resources/skins/Default/media/Controls/MenuItemNF.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/check_mark.png b/resources/skins/Default/media/Controls/check_mark.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/dialog-bg-solid.png b/resources/skins/Default/media/Controls/dialog-bg-solid.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/radiobutton-focus.png b/resources/skins/Default/media/Controls/radiobutton-focus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Controls/radiobutton-nofocus.png b/resources/skins/Default/media/Controls/radiobutton-nofocus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/add_to_videolibrary.png b/resources/skins/Default/media/Infoplus/add_to_videolibrary.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/downloads.png b/resources/skins/Default/media/Infoplus/downloads.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/fanart.png b/resources/skins/Default/media/Infoplus/fanart.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/loading.png b/resources/skins/Default/media/Infoplus/loading.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/movie.png b/resources/skins/Default/media/Infoplus/movie.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/next_focus.png b/resources/skins/Default/media/Infoplus/next_focus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/next_nofocus.png b/resources/skins/Default/media/Infoplus/next_nofocus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/no_photo.png b/resources/skins/Default/media/Infoplus/no_photo.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/previous_focus.png b/resources/skins/Default/media/Infoplus/previous_focus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/previous_nofocus.png b/resources/skins/Default/media/Infoplus/previous_nofocus.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/search.png b/resources/skins/Default/media/Infoplus/search.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/tmdb.png b/resources/skins/Default/media/Infoplus/tmdb.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/trailer.png b/resources/skins/Default/media/Infoplus/trailer.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/tv.png b/resources/skins/Default/media/Infoplus/tv.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/tvdb.png b/resources/skins/Default/media/Infoplus/tvdb.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Infoplus/white.png b/resources/skins/Default/media/Infoplus/white.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/NextDialog/background-play.png b/resources/skins/Default/media/NextDialog/background-play.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/NextDialog/close.png b/resources/skins/Default/media/NextDialog/close.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/NextDialog/play.png b/resources/skins/Default/media/NextDialog/play.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/button-fo.png b/resources/skins/Default/media/Shortcut/button-fo.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/close.png b/resources/skins/Default/media/Shortcut/close.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/dialog-bg-solid-white.png b/resources/skins/Default/media/Shortcut/dialog-bg-solid-white.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/logo.png b/resources/skins/Default/media/Shortcut/logo.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/sub.png b/resources/skins/Default/media/Shortcut/sub.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/white.png b/resources/skins/Default/media/Shortcut/white.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Shortcut/white70.png b/resources/skins/Default/media/Shortcut/white70.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Windows/BackControls.png b/resources/skins/Default/media/Windows/BackControls.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Windows/DialogBack.png b/resources/skins/Default/media/Windows/DialogBack.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/Windows/dialogheader.png b/resources/skins/Default/media/Windows/dialogheader.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/add.png b/resources/skins/Default/media/add.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/close.png b/resources/skins/Default/media/close.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/dd.png b/resources/skins/Default/media/dd.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/delete.png b/resources/skins/Default/media/delete.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/down.png b/resources/skins/Default/media/down.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/exit.png b/resources/skins/Default/media/exit.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/fhd.png b/resources/skins/Default/media/fhd.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/hd.png b/resources/skins/Default/media/hd.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/left.png b/resources/skins/Default/media/left.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/manual.png b/resources/skins/Default/media/manual.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/menu.png b/resources/skins/Default/media/menu.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/ok.png b/resources/skins/Default/media/ok.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/pause.png b/resources/skins/Default/media/pause.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/play.png b/resources/skins/Default/media/play.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/progress.png b/resources/skins/Default/media/progress.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/right.png b/resources/skins/Default/media/right.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/sd.png b/resources/skins/Default/media/sd.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/selection.png b/resources/skins/Default/media/selection.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/side_menu/bg0.png b/resources/skins/Default/media/side_menu/bg0.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/side_menu/logo.png b/resources/skins/Default/media/side_menu/logo.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/side_menu/selected0.png b/resources/skins/Default/media/side_menu/selected0.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/specials.png b/resources/skins/Default/media/specials.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/stop.png b/resources/skins/Default/media/stop.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/uhd.png b/resources/skins/Default/media/uhd.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/up.png b/resources/skins/Default/media/up.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/updn.png b/resources/skins/Default/media/updn.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/uu.png b/resources/skins/Default/media/uu.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/valid.png b/resources/skins/Default/media/valid.png old mode 100644 new mode 100755 diff --git a/resources/skins/Default/media/white.png b/resources/skins/Default/media/white.png old mode 100644 new mode 100755 diff --git a/servers/__init__.py b/servers/__init__.py old mode 100644 new mode 100755 diff --git a/servers/akvideo.json b/servers/akvideo.json old mode 100644 new mode 100755 diff --git a/servers/akvideo.py b/servers/akvideo.py old mode 100644 new mode 100755 diff --git a/servers/anavids.json b/servers/anavids.json old mode 100644 new mode 100755 diff --git a/servers/anavids.py b/servers/anavids.py old mode 100644 new mode 100755 diff --git a/servers/animeid.json b/servers/animeid.json old mode 100644 new mode 100755 diff --git a/servers/animeid.py b/servers/animeid.py old mode 100644 new mode 100755 diff --git a/servers/anonfile.json b/servers/anonfile.json old mode 100644 new mode 100755 diff --git a/servers/anonfile.py b/servers/anonfile.py old mode 100644 new mode 100755 diff --git a/servers/archiveorg.json b/servers/archiveorg.json old mode 100644 new mode 100755 diff --git a/servers/archiveorg.py b/servers/archiveorg.py old mode 100644 new mode 100755 diff --git a/servers/backin.json b/servers/backin.json old mode 100644 new mode 100755 diff --git a/servers/backin.py b/servers/backin.py old mode 100644 new mode 100755 diff --git a/servers/badshare.json b/servers/badshare.json old mode 100644 new mode 100755 diff --git a/servers/badshare.py b/servers/badshare.py old mode 100644 new mode 100755 diff --git a/servers/bdupload.json b/servers/bdupload.json old mode 100644 new mode 100755 diff --git a/servers/bdupload.py b/servers/bdupload.py old mode 100644 new mode 100755 diff --git a/servers/cinemaupload.json b/servers/cinemaupload.json old mode 100644 new mode 100755 diff --git a/servers/cinemaupload.py b/servers/cinemaupload.py old mode 100644 new mode 100755 diff --git a/servers/clicknupload.json b/servers/clicknupload.json old mode 100644 new mode 100755 diff --git a/servers/clipwatching.json b/servers/clipwatching.json old mode 100644 new mode 100755 diff --git a/servers/clipwatching.py b/servers/clipwatching.py old mode 100644 new mode 100755 diff --git a/servers/cloudvideo.json b/servers/cloudvideo.json old mode 100644 new mode 100755 diff --git a/servers/cloudvideo.py b/servers/cloudvideo.py old mode 100644 new mode 100755 diff --git a/servers/crunchyroll.json b/servers/crunchyroll.json old mode 100644 new mode 100755 diff --git a/servers/dailymotion.json b/servers/dailymotion.json old mode 100644 new mode 100755 diff --git a/servers/dailymotion.py b/servers/dailymotion.py old mode 100644 new mode 100755 diff --git a/servers/debriders/__init__.py b/servers/debriders/__init__.py old mode 100644 new mode 100755 diff --git a/servers/debriders/alldebrid.json b/servers/debriders/alldebrid.json old mode 100644 new mode 100755 diff --git a/servers/debriders/alldebrid.py b/servers/debriders/alldebrid.py old mode 100644 new mode 100755 diff --git a/servers/decrypters/__init__.py b/servers/decrypters/__init__.py old mode 100644 new mode 100755 diff --git a/servers/decrypters/expurl.py b/servers/decrypters/expurl.py old mode 100644 new mode 100755 diff --git a/servers/decrypters/safelinking.py b/servers/decrypters/safelinking.py old mode 100644 new mode 100755 diff --git a/servers/deltabit.json b/servers/deltabit.json old mode 100644 new mode 100755 diff --git a/servers/deltabit.py b/servers/deltabit.py old mode 100644 new mode 100755 diff --git a/servers/directo.json b/servers/directo.json old mode 100644 new mode 100755 diff --git a/servers/directo.py b/servers/directo.py old mode 100644 new mode 100755 diff --git a/servers/doodstream.json b/servers/doodstream.json old mode 100644 new mode 100755 index 853edb29..b88db6d7 --- a/servers/doodstream.json +++ b/servers/doodstream.json @@ -22,4 +22,4 @@ "visible": true } ] -} +} \ No newline at end of file diff --git a/servers/doodstream.py b/servers/doodstream.py old mode 100644 new mode 100755 index df142136..ddb1ef6b --- a/servers/doodstream.py +++ b/servers/doodstream.py @@ -42,4 +42,4 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= def randomize(data): t = string.ascii_letters + string.digits - return data + ''.join([random.choice(t) for _ in range(10)]) \ No newline at end of file + return data + ''.join([random.choice(t) for _ in range(10)]) diff --git a/servers/dostream.json b/servers/dostream.json old mode 100644 new mode 100755 diff --git a/servers/dostream.py b/servers/dostream.py old mode 100644 new mode 100755 diff --git a/servers/downace.json b/servers/downace.json old mode 100644 new mode 100755 diff --git a/servers/downace.py b/servers/downace.py old mode 100644 new mode 100755 diff --git a/servers/dropload.json b/servers/dropload.json old mode 100644 new mode 100755 diff --git a/servers/dropload.py b/servers/dropload.py old mode 100644 new mode 100755 index dea86c64..c854457f --- a/servers/dropload.py +++ b/servers/dropload.py @@ -1,14 +1,12 @@ # -*- coding: utf-8 -*- -try: - import urllib.parse as urllib -except ImportError: - import urllib +from six.moves import urllib from core import httptools, support from core import scrapertools from platformcode import logger, config - +from lib import jsunpack +import re def test_video_exists(page_url): logger.debug("(page_url='%s')" % page_url) @@ -24,15 +22,13 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.debug(" url=" + page_url) global data - # vres = scrapertools.find_multiple_matches(data, 'nowrap[^>]+>([^,]+)') - # if not vres: vres = scrapertools.find_multiple_matches(data, '<td>(\d+x\d+)') data_pack = scrapertools.find_single_match(data, "</div>\n\s*<script[^>]+>(eval.function.p,a,c,k,e,.*?)\s*</script>") if data_pack != "": - from lib import jsunpack data = jsunpack.unpack(data_pack) + data = re.sub(r'\b([a-zA-Z]+):("[^"]+"[,\n}])', r'"\1":\2', data) - _headers = urllib.urlencode(httptools.default_headers) + _headers = urllib.parse.urlencode(httptools.default_headers) video_urls = support.get_jwplayer_mediaurl(data, 'dropload') return video_urls diff --git a/servers/evoload.json b/servers/evoload.json old mode 100644 new mode 100755 diff --git a/servers/evoload.py b/servers/evoload.py old mode 100644 new mode 100755 diff --git a/servers/facebook.json b/servers/facebook.json old mode 100644 new mode 100755 diff --git a/servers/fastplay.py b/servers/fastplay.py old mode 100644 new mode 100755 diff --git a/servers/fembed.json b/servers/fembed.json old mode 100644 new mode 100755 diff --git a/servers/fembed.py b/servers/fembed.py old mode 100644 new mode 100755 diff --git a/servers/fex.json b/servers/fex.json old mode 100644 new mode 100755 diff --git a/servers/fex.py b/servers/fex.py old mode 100644 new mode 100755 diff --git a/servers/filefactory.json b/servers/filefactory.json old mode 100644 new mode 100755 diff --git a/servers/filefactory.py b/servers/filefactory.py old mode 100644 new mode 100755 diff --git a/servers/filemoon.json b/servers/filemoon.json old mode 100644 new mode 100755 diff --git a/servers/filemoon.py b/servers/filemoon.py old mode 100644 new mode 100755 diff --git a/servers/filepup.json b/servers/filepup.json old mode 100644 new mode 100755 diff --git a/servers/filepup.py b/servers/filepup.py old mode 100644 new mode 100755 diff --git a/servers/filescdn.json b/servers/filescdn.json old mode 100644 new mode 100755 diff --git a/servers/filescdn.py b/servers/filescdn.py old mode 100644 new mode 100755 diff --git a/servers/filesmonster.json b/servers/filesmonster.json old mode 100644 new mode 100755 diff --git a/servers/filesmonster.py b/servers/filesmonster.py old mode 100644 new mode 100755 diff --git a/servers/flashx.json b/servers/flashx.json old mode 100644 new mode 100755 diff --git a/servers/flashx.py b/servers/flashx.py old mode 100644 new mode 100755 diff --git a/servers/fourshared.json b/servers/fourshared.json old mode 100644 new mode 100755 diff --git a/servers/fourshared.py b/servers/fourshared.py old mode 100644 new mode 100755 diff --git a/servers/gigasize.json b/servers/gigasize.json old mode 100644 new mode 100755 diff --git a/servers/gigasize.py b/servers/gigasize.py old mode 100644 new mode 100755 diff --git a/servers/goodstream.json b/servers/goodstream.json old mode 100644 new mode 100755 diff --git a/servers/goodstream.py b/servers/goodstream.py old mode 100644 new mode 100755 diff --git a/servers/googlevideo.json b/servers/googlevideo.json old mode 100644 new mode 100755 diff --git a/servers/gounlimited.json b/servers/gounlimited.json old mode 100644 new mode 100755 diff --git a/servers/gounlimited.py b/servers/gounlimited.py old mode 100644 new mode 100755 diff --git a/servers/gvideo.json b/servers/gvideo.json old mode 100644 new mode 100755 diff --git a/servers/gvideo.py b/servers/gvideo.py old mode 100644 new mode 100755 diff --git a/servers/hdload.json b/servers/hdload.json old mode 100644 new mode 100755 diff --git a/servers/hdload.py b/servers/hdload.py old mode 100644 new mode 100755 diff --git a/servers/hdmario.json b/servers/hdmario.json old mode 100644 new mode 100755 diff --git a/servers/hdmario.py b/servers/hdmario.py old mode 100644 new mode 100755 diff --git a/servers/hexupload.json b/servers/hexupload.json old mode 100644 new mode 100755 diff --git a/servers/hexupload.py b/servers/hexupload.py old mode 100644 new mode 100755 diff --git a/servers/highload.json b/servers/highload.json old mode 100644 new mode 100755 diff --git a/servers/highload.py b/servers/highload.py old mode 100644 new mode 100755 diff --git a/servers/hugefiles.json b/servers/hugefiles.json old mode 100644 new mode 100755 diff --git a/servers/hxfile.json b/servers/hxfile.json old mode 100644 new mode 100755 diff --git a/servers/hxfile.py b/servers/hxfile.py old mode 100644 new mode 100755 diff --git a/servers/idtbox.json b/servers/idtbox.json old mode 100644 new mode 100755 diff --git a/servers/idtbox.py b/servers/idtbox.py old mode 100644 new mode 100755 diff --git a/servers/jawcloud.json b/servers/jawcloud.json old mode 100644 new mode 100755 diff --git a/servers/jawcloud.py b/servers/jawcloud.py old mode 100644 new mode 100755 diff --git a/servers/jetload.json b/servers/jetload.json old mode 100644 new mode 100755 diff --git a/servers/jetload.py b/servers/jetload.py old mode 100644 new mode 100755 diff --git a/servers/lulustream.json b/servers/lulustream.json old mode 100644 new mode 100755 diff --git a/servers/lulustream.py b/servers/lulustream.py old mode 100644 new mode 100755 diff --git a/servers/mailru.json b/servers/mailru.json old mode 100644 new mode 100755 diff --git a/servers/mailru.py b/servers/mailru.py old mode 100644 new mode 100755 diff --git a/servers/maxstream.json b/servers/maxstream.json old mode 100644 new mode 100755 diff --git a/servers/maxstream.py b/servers/maxstream.py old mode 100644 new mode 100755 diff --git a/servers/mediafire.json b/servers/mediafire.json old mode 100644 new mode 100755 diff --git a/servers/mega.json b/servers/mega.json old mode 100644 new mode 100755 diff --git a/servers/mixdrop.json b/servers/mixdrop.json old mode 100644 new mode 100755 diff --git a/servers/mixdrop.py b/servers/mixdrop.py old mode 100644 new mode 100755 index 4710337a..8be8d377 --- a/servers/mixdrop.py +++ b/servers/mixdrop.py @@ -31,8 +31,9 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= ext = '.mp4' global data - + logger.info(data) packed = scrapertools.find_single_match(data, r'(eval.*?)</script>') + logger.info(packed) unpacked = jsunpack.unpack(packed) # mixdrop like to change var name very often, hoping that will catch every diff --git a/servers/mp4upload.json b/servers/mp4upload.json old mode 100644 new mode 100755 diff --git a/servers/mp4upload.py b/servers/mp4upload.py old mode 100644 new mode 100755 diff --git a/servers/mydaddy.json b/servers/mydaddy.json old mode 100644 new mode 100755 diff --git a/servers/mydaddy.py b/servers/mydaddy.py old mode 100644 new mode 100755 diff --git a/servers/mystream.json b/servers/mystream.json old mode 100644 new mode 100755 diff --git a/servers/mystream.py b/servers/mystream.py old mode 100644 new mode 100755 diff --git a/servers/myupload.json b/servers/myupload.json old mode 100644 new mode 100755 diff --git a/servers/myupload.py b/servers/myupload.py old mode 100644 new mode 100755 diff --git a/servers/ninjastream.json b/servers/ninjastream.json old mode 100644 new mode 100755 diff --git a/servers/ninjastream.py b/servers/ninjastream.py old mode 100644 new mode 100755 diff --git a/servers/nowvideo.json b/servers/nowvideo.json old mode 100644 new mode 100755 diff --git a/servers/nowvideo.py b/servers/nowvideo.py old mode 100644 new mode 100755 diff --git a/servers/okru.json b/servers/okru.json old mode 100644 new mode 100755 diff --git a/servers/okru.py b/servers/okru.py old mode 100644 new mode 100755 diff --git a/servers/okstream.json b/servers/okstream.json old mode 100644 new mode 100755 diff --git a/servers/okstream.py b/servers/okstream.py old mode 100644 new mode 100755 diff --git a/servers/onefichier.json b/servers/onefichier.json old mode 100644 new mode 100755 diff --git a/servers/onefichier.py b/servers/onefichier.py old mode 100644 new mode 100755 diff --git a/servers/onlystream.json b/servers/onlystream.json old mode 100644 new mode 100755 diff --git a/servers/onlystream.py b/servers/onlystream.py old mode 100644 new mode 100755 diff --git a/servers/paramount_server.json b/servers/paramount_server.json old mode 100644 new mode 100755 diff --git a/servers/paramount_server.py b/servers/paramount_server.py old mode 100644 new mode 100755 diff --git a/servers/playtube.json b/servers/playtube.json old mode 100644 new mode 100755 diff --git a/servers/playtube.py b/servers/playtube.py old mode 100644 new mode 100755 diff --git a/servers/rcdnme.json b/servers/rcdnme.json old mode 100644 new mode 100755 diff --git a/servers/rcdnme.py b/servers/rcdnme.py old mode 100644 new mode 100755 diff --git a/servers/rutube.json b/servers/rutube.json old mode 100644 new mode 100755 diff --git a/servers/rutube.py b/servers/rutube.py old mode 100644 new mode 100755 diff --git a/servers/samaup.json b/servers/samaup.json old mode 100644 new mode 100755 diff --git a/servers/samaup.py b/servers/samaup.py old mode 100644 new mode 100755 diff --git a/servers/speedvideo.json b/servers/speedvideo.json old mode 100644 new mode 100755 diff --git a/servers/speedvideo.py b/servers/speedvideo.py old mode 100644 new mode 100755 diff --git a/servers/streamhide.json b/servers/streamhide.json old mode 100644 new mode 100755 diff --git a/servers/streamhide.py b/servers/streamhide.py old mode 100644 new mode 100755 diff --git a/servers/streamingcommunityws.json b/servers/streamingcommunityws.json old mode 100644 new mode 100755 diff --git a/servers/streamingcommunityws.py b/servers/streamingcommunityws.py old mode 100644 new mode 100755 index cd649281..bba16bc0 --- a/servers/streamingcommunityws.py +++ b/servers/streamingcommunityws.py @@ -3,18 +3,13 @@ import sys PY3 = False if sys.version_info[0] >= 3: PY3 = True -if PY3: - import urllib.parse as urllib -else: - import urllib +from six.moves import urllib import ast import xbmc from core import httptools, support, filetools from platformcode import logger, config -if PY3: from concurrent import futures -else: from concurrent_py2 import futures vttsupport = False if int(xbmc.getInfoLabel('System.BuildVersion').split('.')[0]) < 20 else True @@ -28,7 +23,7 @@ def test_video_exists(page_url): if not iframeParams or len(iframeParams) < 2: return 'StreamingCommunity', 'Prossimamente' - urlParams = urllib.parse_qs(urllib.urlsplit(server_url).query) + urlParams = urllib.parse.parse_qs(urllib.parse.urlsplit(server_url).query) return True, "" @@ -36,13 +31,16 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= video_urls = list() quality, params, url = iframeParams - + split_url = urllib.parse.urlsplit(url) + url_params = urllib.parse.parse_qsl(split_url.query) + logger.debug(url_params) masterPlaylistParams = ast.literal_eval(params) if 'canPlayFHD' in urlParams: masterPlaylistParams['h'] = 1 if 'b' in urlParams: masterPlaylistParams['b'] = 1 - url = '{}?{}'.format(url,urllib.urlencode(masterPlaylistParams)) + masterPlaylistParams.update(url_params) + url = '{}://{}{}?{}'.format(split_url.scheme,split_url.netloc,split_url.path,urllib.parse.urlencode(masterPlaylistParams)) video_urls = [['hls [{}]'.format(quality), url]] diff --git a/servers/streamlare.json b/servers/streamlare.json old mode 100644 new mode 100755 diff --git a/servers/streamlare.py b/servers/streamlare.py old mode 100644 new mode 100755 diff --git a/servers/streamon.json b/servers/streamon.json old mode 100644 new mode 100755 diff --git a/servers/streamon.py b/servers/streamon.py old mode 100644 new mode 100755 diff --git a/servers/streamsb.json b/servers/streamsb.json old mode 100644 new mode 100755 diff --git a/servers/streamsb.py b/servers/streamsb.py old mode 100644 new mode 100755 diff --git a/servers/streamtape.json b/servers/streamtape.json old mode 100644 new mode 100755 diff --git a/servers/streamtape.py b/servers/streamtape.py old mode 100644 new mode 100755 diff --git a/servers/streamz.json b/servers/streamz.json old mode 100644 new mode 100755 diff --git a/servers/streamz.py b/servers/streamz.py old mode 100644 new mode 100755 diff --git a/servers/supervideo.json b/servers/supervideo.json old mode 100644 new mode 100755 index dbfbf5e2..48153187 --- a/servers/supervideo.json +++ b/servers/supervideo.json @@ -4,7 +4,7 @@ "ignore_urls": [], "patterns": [ { - "pattern": "supervideo\\.[a-z0-9]+?/embed-([a-z0-9]{12}).html", + "pattern": "supervideo.tv/embed-([a-z0-9]{12}).html", "url": "https://supervideo.cc/e/\\1" }, { diff --git a/servers/supervideo.py b/servers/supervideo.py old mode 100644 new mode 100755 diff --git a/servers/thevid.json b/servers/thevid.json old mode 100644 new mode 100755 diff --git a/servers/thevid.py b/servers/thevid.py old mode 100644 new mode 100755 diff --git a/servers/thevideobee.json b/servers/thevideobee.json old mode 100644 new mode 100755 diff --git a/servers/thevideobee.py b/servers/thevideobee.py old mode 100644 new mode 100755 diff --git a/servers/torrent.json b/servers/torrent.json old mode 100644 new mode 100755 diff --git a/servers/turbobit.json b/servers/turbobit.json old mode 100644 new mode 100755 diff --git a/servers/turbobit.py b/servers/turbobit.py old mode 100644 new mode 100755 diff --git a/servers/turbovid.json b/servers/turbovid.json old mode 100644 new mode 100755 diff --git a/servers/turbovid.py b/servers/turbovid.py old mode 100644 new mode 100755 diff --git a/servers/tusfiles.json b/servers/tusfiles.json old mode 100644 new mode 100755 diff --git a/servers/tusfiles.py b/servers/tusfiles.py old mode 100644 new mode 100755 diff --git a/servers/unsupported.json b/servers/unsupported.json old mode 100644 new mode 100755 diff --git a/servers/uploadedto.json b/servers/uploadedto.json old mode 100644 new mode 100755 diff --git a/servers/uppom.json b/servers/uppom.json old mode 100644 new mode 100755 diff --git a/servers/uppom.py b/servers/uppom.py old mode 100644 new mode 100755 diff --git a/servers/upstream.json b/servers/upstream.json old mode 100644 new mode 100755 diff --git a/servers/upstream.py b/servers/upstream.py old mode 100644 new mode 100755 diff --git a/servers/uptobox.json b/servers/uptobox.json old mode 100644 new mode 100755 diff --git a/servers/upvid.json b/servers/upvid.json old mode 100644 new mode 100755 diff --git a/servers/upvid.py b/servers/upvid.py old mode 100644 new mode 100755 diff --git a/servers/uqload.json b/servers/uqload.json old mode 100644 new mode 100755 diff --git a/servers/uqload.py b/servers/uqload.py old mode 100644 new mode 100755 diff --git a/servers/userload.json b/servers/userload.json old mode 100644 new mode 100755 diff --git a/servers/userload.py b/servers/userload.py old mode 100644 new mode 100755 diff --git a/servers/userscloud.json b/servers/userscloud.json old mode 100644 new mode 100755 diff --git a/servers/userscloud.py b/servers/userscloud.py old mode 100644 new mode 100755 diff --git a/servers/vevio.json b/servers/vevio.json old mode 100644 new mode 100755 diff --git a/servers/vevio.py b/servers/vevio.py old mode 100644 new mode 100755 diff --git a/servers/vidcloud.json b/servers/vidcloud.json old mode 100644 new mode 100755 diff --git a/servers/vidcloud.py b/servers/vidcloud.py old mode 100644 new mode 100755 diff --git a/servers/videobin.json b/servers/videobin.json old mode 100644 new mode 100755 diff --git a/servers/videobin.py b/servers/videobin.py old mode 100644 new mode 100755 diff --git a/servers/videomega.json b/servers/videomega.json old mode 100644 new mode 100755 diff --git a/servers/videomega.py b/servers/videomega.py old mode 100644 new mode 100755 diff --git a/servers/vidfast.json b/servers/vidfast.json old mode 100644 new mode 100755 diff --git a/servers/vidfast.py b/servers/vidfast.py old mode 100644 new mode 100755 diff --git a/servers/vidlox.json b/servers/vidlox.json old mode 100644 new mode 100755 diff --git a/servers/vidlox.py b/servers/vidlox.py old mode 100644 new mode 100755 diff --git a/servers/vidmoly.json b/servers/vidmoly.json old mode 100644 new mode 100755 diff --git a/servers/vidmoly.py b/servers/vidmoly.py old mode 100644 new mode 100755 diff --git a/servers/vidoza.json b/servers/vidoza.json old mode 100644 new mode 100755 diff --git a/servers/vidoza.py b/servers/vidoza.py old mode 100644 new mode 100755 diff --git a/servers/vidtome.json b/servers/vidtome.json old mode 100644 new mode 100755 diff --git a/servers/vidtome.py b/servers/vidtome.py old mode 100644 new mode 100755 diff --git a/servers/vimeo.json b/servers/vimeo.json old mode 100644 new mode 100755 diff --git a/servers/vimeo.py b/servers/vimeo.py old mode 100644 new mode 100755 diff --git a/servers/vimpleru.json b/servers/vimpleru.json old mode 100644 new mode 100755 diff --git a/servers/vimpleru.py b/servers/vimpleru.py old mode 100644 new mode 100755 diff --git a/servers/vivo.json b/servers/vivo.json old mode 100644 new mode 100755 diff --git a/servers/vivo.py b/servers/vivo.py old mode 100644 new mode 100755 diff --git a/servers/voe.json b/servers/voe.json old mode 100644 new mode 100755 diff --git a/servers/voe.py b/servers/voe.py old mode 100644 new mode 100755 diff --git a/servers/vshare.json b/servers/vshare.json old mode 100644 new mode 100755 diff --git a/servers/vshare.py b/servers/vshare.py old mode 100644 new mode 100755 diff --git a/servers/vudeo.json b/servers/vudeo.json old mode 100644 new mode 100755 diff --git a/servers/vudeo.py b/servers/vudeo.py old mode 100644 new mode 100755 diff --git a/servers/vupplayer.json b/servers/vupplayer.json old mode 100644 new mode 100755 diff --git a/servers/vupplayer.py b/servers/vupplayer.py old mode 100644 new mode 100755 diff --git a/servers/vvvvid.json b/servers/vvvvid.json old mode 100644 new mode 100755 diff --git a/servers/vvvvid.py b/servers/vvvvid.py old mode 100644 new mode 100755 diff --git a/servers/watchanimestream.json b/servers/watchanimestream.json old mode 100644 new mode 100755 diff --git a/servers/watchanimestream.py b/servers/watchanimestream.py old mode 100644 new mode 100755 diff --git a/servers/watchvideo.json b/servers/watchvideo.json old mode 100644 new mode 100755 diff --git a/servers/watchvideo.py b/servers/watchvideo.py old mode 100644 new mode 100755 diff --git a/servers/wolfstream.json b/servers/wolfstream.json old mode 100644 new mode 100755 diff --git a/servers/wolfstream.py b/servers/wolfstream.py old mode 100644 new mode 100755 diff --git a/servers/wstream.json b/servers/wstream.json old mode 100644 new mode 100755 diff --git a/servers/wstream.py b/servers/wstream.py old mode 100644 new mode 100755 diff --git a/servers/youdbox.json b/servers/youdbox.json old mode 100644 new mode 100755 diff --git a/servers/youdbox.py b/servers/youdbox.py old mode 100644 new mode 100755 diff --git a/servers/youtube.py b/servers/youtube.py old mode 100644 new mode 100755 diff --git a/servers/youwatch.json b/servers/youwatch.json old mode 100644 new mode 100755 diff --git a/servers/youwatch.py b/servers/youwatch.py old mode 100644 new mode 100755 diff --git a/servers/zippyshare.json b/servers/zippyshare.json old mode 100644 new mode 100755 diff --git a/service.py b/service.py old mode 100644 new mode 100755 diff --git a/specials/__init__.py b/specials/__init__.py old mode 100644 new mode 100755 diff --git a/specials/community.json b/specials/community.json old mode 100644 new mode 100755 diff --git a/specials/community.py b/specials/community.py old mode 100644 new mode 100755 index 7595c46c..8997f379 --- a/specials/community.py +++ b/specials/community.py @@ -201,7 +201,7 @@ def peliculas(item, json='', key='', itemlist=[]): option[item.filterkey].lower()] else: filterkey = [] - title = option['title'] if 'title' in option else '' + title = option['title'] if isinstance(option,dict) and 'title' in option else '' if 'tvshows_list' in key and 'links' not in option: action = 'episodios' diff --git a/specials/downloads.json b/specials/downloads.json old mode 100644 new mode 100755 diff --git a/specials/downloads.py b/specials/downloads.py old mode 100644 new mode 100755 diff --git a/specials/favorites.py b/specials/favorites.py old mode 100644 new mode 100755 diff --git a/specials/filmontv.json b/specials/filmontv.json old mode 100644 new mode 100755 diff --git a/specials/filmontv.py b/specials/filmontv.py old mode 100644 new mode 100755 diff --git a/specials/globalsearch.py b/specials/globalsearch.py old mode 100644 new mode 100755 diff --git a/specials/help.json b/specials/help.json old mode 100644 new mode 100755 diff --git a/specials/help.py b/specials/help.py old mode 100644 new mode 100755 diff --git a/specials/kodfavorites.py b/specials/kodfavorites.py old mode 100644 new mode 100755 diff --git a/specials/news.json b/specials/news.json old mode 100644 new mode 100755 diff --git a/specials/news.py b/specials/news.py old mode 100644 new mode 100755 diff --git a/specials/search.json b/specials/search.json old mode 100644 new mode 100755 diff --git a/specials/search.py b/specials/search.py old mode 100644 new mode 100755 diff --git a/specials/setting.py b/specials/setting.py old mode 100644 new mode 100755 diff --git a/specials/trailertools.py b/specials/trailertools.py old mode 100644 new mode 100755 diff --git a/specials/tvmoviedb.json b/specials/tvmoviedb.json old mode 100644 new mode 100755 diff --git a/specials/tvmoviedb.py b/specials/tvmoviedb.py old mode 100644 new mode 100755 diff --git a/specials/url.json b/specials/url.json old mode 100644 new mode 100755 diff --git a/specials/url.py b/specials/url.py old mode 100644 new mode 100755 diff --git a/specials/videolibrary.json b/specials/videolibrary.json old mode 100644 new mode 100755 diff --git a/specials/videolibrary.py b/specials/videolibrary.py old mode 100644 new mode 100755 diff --git a/tests/__init__.py b/tests/__init__.py old mode 100644 new mode 100755 diff --git a/tests/home/userdata/addon_data/plugin.video.kod/settings.xml b/tests/home/userdata/addon_data/plugin.video.kod/settings.xml old mode 100644 new mode 100755 diff --git a/tests/home/userdata/addon_data/plugin.video.kod/settings_channels/settings b/tests/home/userdata/addon_data/plugin.video.kod/settings_channels/settings old mode 100644 new mode 100755 diff --git a/tests/template.html b/tests/template.html old mode 100644 new mode 100755 diff --git a/tests/test_generic.py b/tests/test_generic.py old mode 100644 new mode 100755 diff --git a/tools/UserAgent.csv b/tools/UserAgent.csv old mode 100644 new mode 100755 diff --git a/tools/megacrypter.sh b/tools/megacrypter.sh old mode 100644 new mode 100755 diff --git a/tools/updateDomains.py b/tools/updateDomains.py old mode 100644 new mode 100755