add support for multiple countries per provider

This commit is contained in:
Roy Olav Purser 2021-07-23 16:50:12 +02:00
parent 955d3780d2
commit 46bc95c34f
Signed by: roypur
GPG Key ID: E14D26A036F21656

View File

@ -2,6 +2,7 @@
import json import json
import sys import sys
import os import os
import re
import base64 import base64
import logging import logging
import asyncio import asyncio
@ -66,18 +67,41 @@ class ProxyElem():
return urls return urls
proxies = {} proxies = {}
new_providers = {}
for key in providers: for key in providers:
proxies[key] = [] expr = re.compile(f'{key}_([a-z][a-z])?[0-9]+', re.IGNORECASE)
matches = list(filter(expr.match, os.environ.keys()))
current = [] current = []
for i in range(0,9): current_keys = set()
proxy = os.environ.get(f'{key}_proxy{i}'.upper()) current_keys.add(key)
countries = []
empty = True
for match in matches:
country_groups = expr.match(match.lower()).groups()
country = None
pos = len(country_groups) - 1
if pos >= 0:
country = country_groups[pos]
current_keys.add(f'{key}_{country}')
proxy = os.environ.get(match)
if proxy is not None: if proxy is not None:
current.append(proxy) current.append(proxy)
if len(current) == 0: countries.append(country)
proxies[key].append(ProxyElem(None)) if country is None:
else: empty = False
for proxy in current: for elem in current_keys:
proxies[key].append(ProxyElem(proxy)) proxies[elem] = []
new_providers[elem] = providers[key]
print(proxies)
for proxy, country in zip(current, countries):
new_key = key
if country is not None:
new_key = f'{key}_{country}'
proxies[new_key].append(ProxyElem(proxy))
for elem in current_keys:
if len(proxies[elem]) == 0:
proxies[elem].append(ProxyElem(None))
providers = new_providers
proxy_keys = [] proxy_keys = []
for proxy_provider in proxies.values(): for proxy_provider in proxies.values():