Python: Получить песни Лирика от гения - Ошибка - PullRequest
1 голос
/ 03 марта 2020

Я работаю над получением текста песен от гения с помощью API. У меня возникла проблема с извлечением заголовков и текстов из файла JSON после его сохранения. пожалуйста, смотрите мой код ниже.

import lyricsgenius as genius
api=genius.Genius('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
artist=api.search_artist('Beyonce') #max_songs=3, sort="title"
aux=artist.save_lyrics(filename='artist.txt',overwrite=True,skip_duplicates=True,verbose=True)
titles=[song['title'] for song in aux['songs']]
lyrics=[song['lyrics'] for song in aux['songs']]

У меня ошибка:

TypeError                                 Traceback (most recent call last)
<ipython-input-21-4a24319b20b5> in <module>
----> 1 titles=[song['title'] for song in aux['songs']]
      2 lyrics=[song['lyrics'] for song in aux['songs']]

TypeError: 'NoneType' object is not subscriptable

Ваша помощь будет высоко оценена. Заранее спасибо!

С уважением,

Вику

1 Ответ

3 голосов
/ 03 марта 2020

Вывод запроса сохраняется в файл json (или txt), то есть:

import json
import lyricsgenius as genius

api=genius.Genius('xxx')
artist=api.search_artist('Pink Floyd', max_songs=1) #max_songs=3, sort="title"
aux=artist.save_lyrics(filename='artist.json',overwrite=True,verbose=True)

with open("artist.json") as f:
    j = json.loads(f.read())

# do something with j...

Но вы также можете использовать:

artist = api.search_artist("Andy Shauf", max_songs=3, sort="title")
print(artist.songs)
song = api.search_song("To You", artist.name)
print(song.lyrics)

Ссылки:

  1. https://github.com/johnwmillr/LyricsGenius#usage
  2. https://docs.genius.com/
...