Created
March 28, 2016 15:58
-
-
Save sdfsdhgjkbmnmxc/10a775c5eae7e2d32c92 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import string | |
import requests | |
import sys | |
MASKS = { | |
'*': u'йцукенгшщзхъфывапролджэячсмитьбюё' + string.digits + string.lowercase | |
} | |
def expand_mask(data): | |
if isinstance(data, basestring): | |
data = [data] | |
else: | |
data = list(data) | |
for el in data: | |
for marker, replacements in MASKS.items(): | |
if marker in el: | |
for x in replacements: | |
for subdata in expand_mask(el.replace(marker, x, 1)): | |
yield subdata | |
else: | |
yield el | |
def get_suggestions(s): | |
result = set() | |
for variant in expand_mask(s): | |
r = requests.get('http://suggest.yandex.ru/suggest-ya.cgi', params=dict( | |
v=4, | |
fact=1, | |
wiz='TrWth', | |
uil='ru', | |
part=variant, | |
pos=1, | |
yu='2011179091355422633', | |
srv='morda_ru', | |
lr=213, | |
_=1360958540881, | |
)) | |
for suggestion in r.json()[1]: | |
if isinstance(suggestion, basestring): | |
result.add(suggestion) | |
return sorted(result) | |
if __name__ == '__main__': | |
if len(sys.argv) < 2: | |
sys.stderr.write(u'Usage: {} <string>\n'.format(sys.argv[0])) | |
sys.exit(1) | |
for line in get_suggestions(sys.argv[1].decode('utf-8')): | |
sys.stdout.write(line.encode('utf-8') + '\n') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment