36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
#! /usr/bin/env python
|
|
|
|
import sys, json, subprocess, logging, urlparse
|
|
|
|
class Translator:
|
|
def __init__(self):
|
|
with open('mirrors.json') as mirrors:
|
|
self.mirrors = json.load(mirrors)
|
|
def interpret(self, url):
|
|
parsed_url = urlparse.urlparse(url)
|
|
if parsed_url.scheme == 'mirror':
|
|
if parsed_url.netloc in self.mirrors:
|
|
pidgin = []
|
|
for mirror in self.mirrors[parsed_url.netloc]:
|
|
parsed_mirror = urlparse.urlparse(mirror)
|
|
expansion = urlparse.ParseResult(
|
|
parsed_mirror.scheme,
|
|
parsed_mirror.netloc,
|
|
parsed_url.path,
|
|
parsed_url.params,
|
|
parsed_url.query,
|
|
parsed_url.fragment)
|
|
pidgin.append(expansion.geturl())
|
|
return pidgin
|
|
else:
|
|
logging.warning("Unhandled mirror {} ({})".format(parsed_url.netloc, url))
|
|
return []
|
|
else:
|
|
return [ url ]
|
|
|
|
if __name__ == '__main__':
|
|
translator = Translator()
|
|
for line in sys.stdin:
|
|
for translation in translator.interpret(line.strip()):
|
|
print translation
|