From 098e7368a743b61f36e920e2e01df764441786b6 Mon Sep 17 00:00:00 2001 From: Hygna Date: Mon, 19 Sep 2022 19:52:26 +0100 Subject: [PATCH] Fixed bugs introduced in the previous commit --- src/instances/get_instances.py | 53 +++++++++++++++++----------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index 770f258..3dcb42b 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -9,6 +9,7 @@ from urllib.parse import urlparse import socket mightyList = {} +config = {} startRegex = "https?:\/{2}(?:[^\s\/]+\.)+" endRegex = "(?:\/[^\s\/]+)*\/?" @@ -16,10 +17,10 @@ torRegex = startRegex + "onion" + endRegex i2pRegex = startRegex + "i2p" + endRegex lokiRegex = startRegex + "loki" + endRegex authRegex = "https?:\/{2}\S+:\S+@(?:[^\s\/]+\.)+[a-zA-Z0-9]+" + endRegex -config = {} -with open('./config/config.json') as file: - config = file +with open('./src/config/config.json', 'rt') as tmp: + config['networks'] = json.load(tmp)['config']['networks'] + def filterLastSlash(urlList): @@ -108,8 +109,8 @@ def is_offline(url): def fetchCache(frontend, name) : # json_object = json.dumps(mightyList, ensure_ascii=False, indent=2) with open('./src/instances/data.json') as file: - mightyList[frontend] = json.load(file).frontend - print(Fore.ORANGE + 'Failed' + Style.RESET_ALL + ' to fetch ' + name) + mightyList[frontend] = json.load(file)[frontend] + print(Fore.YELLOW + 'Failed' + Style.RESET_ALL + ' to fetch ' + name) def fetchFromFile(frontend, name): #json_object = json.dumps(mightyList, ensure_ascii=False, indent=2) @@ -122,32 +123,31 @@ def fetchJsonList(frontend, name, url, urlItem): r = requests.get(url) rJson = json.loads(r.text) _list = {} - for network in config.networks: + for network in config['networks']: _list[network] = [] - if type(urlItem) is 'str': + if type(urlItem) == 'str': for item in rJson: + tmpItem = item if urlItem is not None: - tmpUrl = item[urlItem] - else: - tmpUrl = item - if tmpUrl.strip() == "": + tmpItem = item[urlItem] + if tmpItem.strip() == '': continue - elif re.search(torRegex, tmpUrl): - _list['tor'].append(tmpUrl) - elif re.search(i2pRegex, tmpUrl): - _list['i2p'].append(tmpUrl) - elif re.search(lokiRegex, tmpUrl): - _list['loki'].append(tmpUrl) + elif re.search(torRegex, tmpItem): + _list['tor'].append(tmpItem) + elif re.search(i2pRegex, tmpItem): + _list['i2p'].append(tmpItem) + elif re.search(lokiRegex, tmpItem): + _list['loki'].append(tmpItem) else: - _list['clearnet'].append(tmpUrl) + _list['clearnet'].append(tmpItem) else: - for i in range(config.networks.length): + for i in range(len(config['networks']) - 1): # The expected order is the same as in config.json. If the frontend doesn't have any instances for a specified network, use None if urlItem != None: for item in rJson: if network in item: - if item[network].strip() != "": - _list[config.networks[i]].append(item[urlItem[i]]) + if item[network].strip() != '': + _list[config['networks'][i]].append(item[urlItem[i]]) mightyList[frontend] = _list print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + name) @@ -158,7 +158,7 @@ def fetchRegexList(frontend, name, url, regex): try: r = requests.get(url) _list = {} - for network in config.networks: + for network in config['networks']: _list[network] = [] tmp = re.findall(regex, r.text) @@ -185,7 +185,7 @@ def fetchTextList(frontend, name, url, prepend): tmp = r.text.strip().split('\n') _list = {} - for network in config.networks: + for network in config['networks']: _list[network] = [] for item in tmp: @@ -207,13 +207,14 @@ def fetchTextList(frontend, name, url, prepend): def invidious(): name = 'Invidious' frontend = 'invidious' + url = 'https://api.invidious.io/instances.json' try: _list = {} _list['clearnet'] = [] _list['tor'] = [] _list['i2p'] = [] _list['loki'] = [] - r = requests.get('https://api.invidious.io/instances.json') + r = requests.get(url) rJson = json.loads(r.text) for instance in rJson: if instance[1]['type'] == 'https': @@ -256,11 +257,11 @@ def piped(): def pipedMaterial(): - fetchRegexList('pipedMaterial', 'Piped-Material', 'https://raw.githubusercontent.com/mmjee/Piped-Material/master/README.md', r"\| (https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]*) +\|") + fetchRegexList('pipedMaterial', 'Piped-Material', 'https://raw.githubusercontent.com/mmjee/Piped-Material/master/README.md', r"\| (https?:\/{2}(?:\S+\.)+[a-zA-Z0-9]*) +\| Production") def cloudtube(): - fetchCache('cloudtube', 'Cloudtube') + fetchFromFile('cloudtube', 'Cloudtube') def proxitok():