Skip to content

Instantly share code, notes, and snippets.

@sshaplygin
Last active July 30, 2021 13:02
Show Gist options
  • Save sshaplygin/4b4c47345a064c04c4af39538ad93c4d to your computer and use it in GitHub Desktop.
Save sshaplygin/4b4c47345a064c04c4af39538ad93c4d to your computer and use it in GitHub Desktop.
import requests
query = 'Только не по лицу'
genre = 10
def get_genres():
"""
Функция отправляет запрос к Балабобе,
и получает в ответ список жанров.
"""
genres_url = 'https://zeapi.yandex.net/lab/api/yalm/intros'
try:
response = requests.get(genres_url)
response = response.json()
intros_key = 'intros'
if intros_key not in response:
print(f'Изменился ответ от {genres_url}. Не удалось найти поле: {intros_key}!')
return []
genres_list = response[intros_key]
except:
print('Во время выполнения функции get_genres() возникла ошибка!')
genres_list = []
return genres_list
required_genre_len = 3
def print_genres(genres_list):
"""
Печатает в форматированном виде список доступных жанров,
полученный из функции get_genres()
genres: ответ от функции get_genres(), который нужно распечатать
"""
print("Список жанров, в которых можно продолжить фразу:")
for genre in genres_list:
if len(genre) != required_genre_len:
print('Элемент genre списка genres_list имеет некоректную длину. Ожидалась длина равная 3.')
continue
print(f'{genre[0]} - {genre[1]} - {genre[2]}')
def generate_text(query, genre):
"""
Функция отправляет POST-запрос к Балабобе,
и получает ответ в виде словаря.
Параметры POST-запроса:
query: ключевая фраза
genre: id жанра, в котором Балабоба должен сгенерировать текст
"""
generate_url = 'https://zeapi.yandex.net/lab/api/yalm/text3'
data = {
"query": query,
"intro": genre
}
try:
response = requests.post(generate_url, json=data)
dict_response = response.json()
except:
print('Во время выполнения функции generate_text() возникла ошибка!')
dict_response = {}
return dict_response
def print_text(text_dict):
"""
Печатает текст ответа в форматированном виде.
dict_response: ответ на запрос в виде словаря
"""
print('\n' + 'Ответ на ваш запрос:' + '\n')
query_field = 'query'
text_field = 'text'
if query_field not in text_dict or text_field not in text_dict:
nessesary_fields = []
if query_field not in text_dict:
nessesary_fields.append(query_field)
if text_field not in text_dict:
nessesary_fields.append(text_field)
print(f'text_dict не содержит необходимые поля: {", ".join(nessesary_fields)}')
return
print(f'{text_dict[query_field]}{text_dict[text_field]}')
genres_list = get_genres()
print_genres(genres_list)
text_dict = generate_text(query, genre)
print_text(text_dict)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment