42 lines
1020 B
Python
42 lines
1020 B
Python
|
#!/bin/env python
|
||
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
Use to update official_top_level_domains in gluon/validators.py
|
||
|
"""
|
||
|
|
||
|
import itertools
|
||
|
import operator
|
||
|
import urllib2
|
||
|
|
||
|
LIMIT = 70
|
||
|
PREFIX = ' '
|
||
|
TLDS_URL = 'http://data.iana.org/TLD/tlds-alpha-by-domain.txt'
|
||
|
|
||
|
resp = urllib2.urlopen(TLDS_URL)
|
||
|
content = resp.read()
|
||
|
|
||
|
valid_lines = [a.strip().lower() for a in content.split('\n') if a.strip() and a.strip()[0] != '#']
|
||
|
valid_lines += ['localhost']
|
||
|
|
||
|
print 'Fetched TLDs are %s' % len(valid_lines)
|
||
|
|
||
|
results = [list(g) for k, g in itertools.groupby(sorted(valid_lines), key=operator.itemgetter(0))]
|
||
|
|
||
|
output = []
|
||
|
line = "'%s', "
|
||
|
|
||
|
for a in results:
|
||
|
output.append('%s# %s' % (PREFIX, a[-1][0]))
|
||
|
thisline = PREFIX
|
||
|
for c in a:
|
||
|
newline = thisline + line % c
|
||
|
if len(newline) > 70:
|
||
|
output.append(thisline[:-1])
|
||
|
thisline = PREFIX + line % c
|
||
|
else:
|
||
|
thisline += line % c
|
||
|
if thisline:
|
||
|
output.append(thisline[:-1])
|
||
|
|
||
|
print '[\n' + '\n'.join(output)[:-1] + '\n]'
|