search.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from yandex_music import Client
  2. client = Client().init()
  3. type_to_name = {
  4. 'track': 'трек',
  5. 'artist': 'исполнитель',
  6. 'album': 'альбом',
  7. 'playlist': 'плейлист',
  8. 'video': 'видео',
  9. 'user': 'пользователь',
  10. 'podcast': 'подкаст',
  11. 'podcast_episode': 'эпизод подкаста',
  12. }
  13. def send_search_request_and_print_result(query): # noqa: C901
  14. search_result = client.search(query)
  15. text = [f'Результаты по запросу "{query}":', '']
  16. best_result_text = ''
  17. if search_result.best:
  18. type_ = search_result.best.type
  19. best = search_result.best.result
  20. text.append(f'❗️Лучший результат: {type_to_name.get(type_)}')
  21. if type_ in ['track', 'podcast_episode']:
  22. artists = ''
  23. if best.artists:
  24. artists = ' - ' + ', '.join(artist.name for artist in best.artists)
  25. best_result_text = best.title + artists
  26. elif type_ == 'artist':
  27. best_result_text = best.name
  28. elif type_ in ['album', 'podcast']:
  29. best_result_text = best.title # noqa: SIM114
  30. elif type_ == 'playlist':
  31. best_result_text = best.title
  32. elif type_ == 'video':
  33. best_result_text = f'{best.title} {best.text}'
  34. text.append(f'Содержимое лучшего результата: {best_result_text}\n')
  35. if search_result.artists:
  36. text.append(f'Исполнителей: {search_result.artists.total}')
  37. if search_result.albums:
  38. text.append(f'Альбомов: {search_result.albums.total}')
  39. if search_result.tracks:
  40. text.append(f'Треков: {search_result.tracks.total}')
  41. if search_result.playlists:
  42. text.append(f'Плейлистов: {search_result.playlists.total}')
  43. if search_result.videos:
  44. text.append(f'Видео: {search_result.videos.total}')
  45. text.append('')
  46. print('\n'.join(text))
  47. if __name__ == '__main__':
  48. while True:
  49. input_query = input('Введите поисковой запрос: ')
  50. send_search_request_and_print_result(input_query)