add continent filter
option: get continent by goip
def get_my_continent(ip='') ->str:
""" param ip : only for tests """
if ip:
ip= f"/{ip}"
try:
with request.urlopen(f"https://get.geojs.io/v1/ip/geo{ip}.json") as f_url:
req = f_url.read()
return json.loads(req)['continent_code']
except Exception:
return ''
return ''
""" tests :
202.20.81.82 australia
160.20.81.82 Argentina
222.20.81.82 china
213.20.81.82 Germany
196.20.81.82 Algeria
192.20.81.82 usa
"""
continent = get_my_continent('222.20.81.82')
filter
def filter_continent(mirrors: list, continent: str) ->list:
if not continent:
return mirrors
# or can use ? https://gitlab.manjaro.org/applications/pacman-mirrors/blob/v4.15.x-stable/pacman_mirrors/constants/timezones.py
countries = {
'Australia':'OC',
'Bangladesh':'AS',
'Brazil':'SA',
'Canada':'NA',
'Chile':'SA',
'China':'AS',
'Costa_Rica':'SA',
'Colombia':'SA',
'Ecuador':'SA',
'Hong_Kong':'AS',
'India':'AS',
'Indonesia':'AS',
'Iran':'AS',
'Japan':'AS',
'Kenya':'AF',
'New_Zealand':'OC',
'Philippines':'AS',
'Singapore':'AS',
'South_Africa':'AF',
'South_Korea':'AS',
'Taiwan':'AS',
'Thailand':'AS',
'United_States':'NA',
'Vietnam':'AS',
}
return [m for m in mirrors if countries.get(m['country'], 'EU') == continent]