You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
807 B
Python
26 lines
807 B
Python
from pathlib import Path
|
|
import re
|
|
import sys
|
|
|
|
NOT_ALLOWED_CHARS = re.compile(r'[^A-Za-z0-9-]+')
|
|
DOMAIN_SHORTS = Path(__file__).parent / '..' / 'public_keys/domain_shorts'
|
|
|
|
def rreplace(text, to_replace, replacement, count=1):
|
|
return replacement.join(text.rsplit(to_replace, count))
|
|
|
|
def domain_to_username(domain):
|
|
with DOMAIN_SHORTS.open() as f:
|
|
for l in f:
|
|
long_domain, _, short_domain = l.strip().partition(' ')
|
|
if domain.endswith(long_domain):
|
|
domain = rreplace(domain, long_domain, short_domain)
|
|
break
|
|
return NOT_ALLOWED_CHARS.sub('-', domain)
|
|
|
|
class FilterModule(object):
|
|
def filters(self):
|
|
return {'domain_to_username': domain_to_username}
|
|
|
|
if __name__ == '__main__':
|
|
print(domain_to_username(sys.argv[1]))
|