Skip to content

Instantly share code, notes, and snippets.

@sdfsdhgjkbmnmxc
Created March 28, 2016 15:58
Show Gist options
  • Save sdfsdhgjkbmnmxc/10a775c5eae7e2d32c92 to your computer and use it in GitHub Desktop.
Save sdfsdhgjkbmnmxc/10a775c5eae7e2d32c92 to your computer and use it in GitHub Desktop.
#!/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