Skip to content

Instantly share code, notes, and snippets.

@vlas-ilya
Created April 15, 2016 18:20
Show Gist options
  • Save vlas-ilya/83c0e01dc16370828910d3891e467da5 to your computer and use it in GitHub Desktop.
Save vlas-ilya/83c0e01dc16370828910d3891e467da5 to your computer and use it in GitHub Desktop.
sudo ln -s "/path/to/generate.py" /bin/generate
#!/usr/bin/python
import argparse
import requests
def send_request(params):
r = requests.post('http://online-generators.ru/ajax.php', data=params)
return r.text
def generate_text_request(params):
paragraph = params.paragraph
word = params.word
type_text = params.type
text = send_request({
'processor': 'text',
'paragraph': paragraph,
'word': word,
'type': type_text
})
text = text[3:][:-4].replace('</p><p>', '\n\n')
return text
def generate_number_request(params):
min_value = params.min
max_value = params.max
count = params.count
separator = params.separator
repeat = params.repeat
return send_request({
'processor': 'numbers',
'min': min_value,
'max': max_value,
'count': count,
'separator': separator,
'repeat': repeat
})
def generate_names_request(params):
count = params.count
surname = params.surname
name = params.name
patronymic = params.patronymic
sex = params.sex
names = send_request({
'processor': 'names',
'count': count,
'radioname': 'fullname',
'_surname': surname,
'_name': name,
'_patronymic': patronymic,
'sex': sex
})
names = names[35:][:-12].replace('</span></li><li><i class="icon-user"></i><span>', '\n')
return names
def generate_jokes_request():
jokes = send_request({
'processor': 'jokes'
})
return jokes[:jokes.index('#')]
def generate_passwords_request(params):
num = params.num
lower = params.lower
upper = params.upper
symbol = params.symbol
count = params.count
passwords = send_request({
'processor': 'passwords',
'num': num,
'lower': lower,
'upper': upper,
'symbol': symbol,
'count': count
})
return passwords.replace(' ', '\n')[1:]
def generate_compliments_request(params):
sex = params.sex
type_compl = params.type_compl
if sex == 'man':
sex = 1
else:
sex = 0
compliments = send_request({
'processor': 'compliments',
'sex': sex,
'type_compl': type_compl
})
return compliments[:compliments.index('#')]
def generate_quotes_request():
quotes = send_request({
'processor': 'quotes'
})
quotes = quotes[:quotes.index('##')] + ' ' + quotes[quotes.index('##') + 2:]
return quotes[:quotes.index('#')]
def generate_facts_request():
facts = send_request({
'processor': 'facts'
})
return facts[:facts.index('#')]
def usage():
return '''generate --processor=<type of generator> [params...]
Type of generator:
text - generate meaningful text with the specified parameters.
Example: generate --processor=text --paragraph=3 --word=60 --type=fish
numbers - generate random number.
Example: generate --processor=numbers --min=1 --max=100 --count=4 --separator=spacecomma --repeat=1
names - generate random russian names.
Example: generate --processor=names --count=10 --surname=1 --name=1 --patronymic=1 --sex=all
jokes - generates a funny joke.
Example: generate --processor=jokes
compliments - generate a compliment.
Example: generate --processor=compliments --sex=woman --type_compl=0
passwords - generate a password.
Example: generate --processor=passwords --num=1 --lower=1 --upper=1 --symbol=1 --count=10
quotes - generate a quote.
Example: generate --processor=quotes
facts - generate a fact.
Example: generate --processor=facts'''
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Command line client for Online-Generators.RU', usage=usage())
parser.add_argument('--processor', type=str, help='Type of generator (Available values: text, numbers, names, jokes, compliments, passwords, quotes, facts)')
parser.add_argument('--paragraph', default=3, type=int, help='Count paragraphs for processor=text')
parser.add_argument('--word', default=60, type=int, help='Count words in paragraph for processor=text')
parser.add_argument('--type', default='fish', type=str, help='Type of text for processor=text (Available values: prose, business, science, humor, home, med, lorem, fish)')
parser.add_argument('--min', default=1, type=int, help='Min value for processor=number')
parser.add_argument('--max', default=100, type=int, help='Max value for processor=number')
parser.add_argument('--count', default=100, type=int, help='Count of elements for processor=number, processor=names and processor=passwords')
parser.add_argument('--separator', default='spacecomma', type=str, help='Separator for numbers for processor=number')
parser.add_argument('--repeat', default=1, type=int, help='If --repeat=1, then it will not repeat. For processor=number')
parser.add_argument('--surname', default=1, type=int, help='Result contains surname. For processor=names')
parser.add_argument('--name', default=1, type=int, help='Result contains name. For processor=names')
parser.add_argument('--patronymic', default=1, type=int, help='Result contains patronymic. For processor=names')
parser.add_argument('--sex', default='all', type=str, help='Oh yeah baby (Available values: all, man and woman). For processor=names and processor=compliments')
parser.add_argument('--type_compl', default=0, type=int, help='If type_comp=1 then word, else if type_comp=0 then phrase. For processor=compliments')
parser.add_argument('--num', default=1, type=int, help='For processor=passwords')
parser.add_argument('--lower', default=1, type=int, help='If =1 then this type of symbol to be used in the password. For processor=passwords')
parser.add_argument('--upper', default=1, type=int, help='If =1 then this type of symbol to be used in the password. For processor=passwords')
parser.add_argument('--symbol', default=1, type=int, help='If =1 then this type of symbol to be used in the password. For processor=passwords')
args = parser.parse_args()
# todo validate
url = 'http://online-generators.ru/ajax.php'
result = None
if args.processor is None:
parser.print_help()
elif args.processor == 'text':
result = generate_text_request(args)
elif args.processor == 'numbers':
result = generate_number_request(args)
elif args.processor == 'names':
result = generate_names_request(args)
elif args.processor == 'jokes':
result = generate_jokes_request()
elif args.processor == 'passwords':
result = generate_passwords_request(args)
elif args.processor == 'compliments':
result = generate_compliments_request(args)
elif args.processor == 'quotes':
result = generate_quotes_request()
elif args.processor == 'facts':
result = generate_facts_request()
if result is not None:
print result
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment