cleaning some stuff up and fixing the centos mirror finder - they changed the format

This commit is contained in:
brent s. 2021-02-12 02:31:32 -05:00
parent 649b2968b8
commit b0d4332975
Signed by: bts
GPG Key ID: 8C004C2F93481F6B
2 changed files with 42 additions and 20 deletions

View File

@ -5,6 +5,8 @@ import csv
import io import io
import re import re
## ##
import iso3166
##
import classes import classes




@ -20,33 +22,41 @@ class Ranker(classes.Ranker):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.get_mirrors() self.get_mirrors()


def extract_mirrors(self, preferred_proto = 'rsync'): def extract_mirrors(self):
preferred_proto = preferred_proto.lower() # They removed FTP support.
if preferred_proto not in ('rsync', 'ftp'):
raise ValueError('Invalid preferred_proto; must be one of rsync or ftp')
non_preferred = ('rsync' if preferred_proto == 'ftp' else 'ftp')
c = csv.DictReader(io.StringIO(self.raw_html), ) c = csv.DictReader(io.StringIO(self.raw_html), )
my_country = iso3166.countries.get(self.my_info['country'])
countrynames = iso3166.countries_by_name.keys()
for row in c: for row in c:
if not row['Country'] or row['Country'].strip() == '': if not row.get('Region') or row['Region'].strip() == '':
continue row['Location'] = row['Region']
# GorRAM it, dudes. States are not countries. # They changed things. Again.
country = row['Country'].strip() country = row['Region'].strip()
region = row['Region'].strip() continent = row['Location'].strip()
if region == 'US': cu = country.upper()
country = region if continent in ('US', 'Canada'):
if country != self.my_info['country']: country = continent
try:
country = iso3166.countries.get(country)
except KeyError:
country = iso3166.countries_by_name.get(cu)
# Gorram it.
if not country:
for cs in countrynames:
if cs.startswith(cu):
country = iso3166.countries_by_name[cs]
break
if country != my_country:
continue continue
for k, v in row.items(): for k, v in row.items():
if v.strip() == '': if v.strip() == '':
row[k] = None row[k] = None
pref_url = row['{0} mirror link'.format(preferred_proto)] pref_url = row.get('Rsync link')
nonpref_url = row['{0} mirror link'.format(non_preferred)] pref_url = str(pref_url).strip()
if pref_url: if pref_url not in ('', None, 'None'):
url = _proto_re.sub(r'{0}\g<uri>'.format(preferred_proto), pref_url) url = _proto_re.sub(r'\g<uri>', pref_url)
else: else:
if not nonpref_url:
continue continue
url = _proto_re.sub(r'{0}\g<uri>'.format(non_preferred), nonpref_url)
self.raw_mirrors.append(row) self.raw_mirrors.append(row)
self.mirror_candidates.append(url) self.mirror_candidates.append(url)
return(None) return(None)

View File

@ -74,6 +74,18 @@ class Ranker(classes.Ranker):
# self.mirror_candidates.append(mirror['url']) # self.mirror_candidates.append(mirror['url'])
# return(None) # return(None)


def speedcheck(self):
# Ignore because EPEL can't really work.
return(None)

def gen_xml(self):
# Ignore because EPEL can't really work.
return(None)

def print(self):
# Ignore because EPEL can't really work.
return(None)



def parseArgs(): def parseArgs():
args = argparse.ArgumentParser(description = 'Generate a list of suitable EPEL upstream mirrors in order of ' args = argparse.ArgumentParser(description = 'Generate a list of suitable EPEL upstream mirrors in order of '