Python-从MusixMatch JSON响应中获得歌词



在Python中,我正在尝试解析MusixMatch API的JSON响应,但是我很难弄清楚如何访问给出的信息,请提供帮助!如有必要,我可以稍后发布JSON响应,但这是很多文本。

import json
from os.path json, dirname
from musixmatch import Musixmatch
musixmatch = Musixmatch(<api key>)
lyrics = musixmatch.matcher_lyrics_get('Grenade', 'Bruno Mars')

print (lyrics)
for item in jsonLyric['message']:
   for thing in item['body']:
     for stuff in thing['lyrics']:
        print(stuff['lyrics_body'])

这是我回到印刷品的输出(歌词(

{"message": {"header": {"status_code": 200, "execute_time": 0.005511999130249}, "body": {"lyrics": {"lyrics_id": 14678126, "can_edit": 0, "locked": 1, "published_status": 3, "action_requested": "", "verified": 0, "restricted": 0, "instrumental": 0, "explicit": 0, "lyrics_body": "Easy come, easy go, that's just how you live ohnTake, take, take it all, but you never givenShould have known you was trouble from the first kissnHad your eyes wide open,nWhy were they open?nnGave you all I had and you tossed it in the trashnYou tossed it in the trash, you didnTo give me all your love is all I ever asked 'causenWhat you don't understand is I'd catch a grenade for ya (yeah, yeah)nThrow my head on a blade for ya (yeah, yeah)nI'd jump in front of a train for ya (yeah, yeah)nYou know I'd do anything for ya (yeah, yeah)nnOh oh, I would go through all this painnTake a bullet straight through my brainnYes, I would die for ya babynBut you won't do the samennNo, no, no, non...nn******* This Lyrics is NOT for Commercial use *******", "lyrics_language": "en", "lyrics_language_description": "English", "script_tracking_url": "https://tracking.musixmatch.com/t1.0/m_js/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCALM0_W22leSuW0j51mdZjjfpE4x6a9jOCvWJRkoOBKyShPRRZQELOwGOsZtDZ8P7rI_Ugft_vMQta6YUky74d5X3RIpnkF1GkipbfBPqaDh2M9h4wtFKqwGgJoy8k52jf0kTKu2GFboxJpmcZP_TL17Tt5-rkmsIOB4VQk1LX_s66Du-rGVtu_NcuDuzquhrpHnIEyygjxJGcHYfbpHfFt3gDfDkAfuv25OHWoHt6FJarcoSeY5eloAlMJtqtQqXVIU4bVp3zmqnTdEsjj5mvyBOq2Yvl_WRsRYBiSP4fISEiW8Nz_cwKdLFqVo-9L4Pcz7ryASfVXfRD-nROD18LJIBomN5JzzcPMk9hEjHwmxt9PUccK5e_G23RYrgXgrWJlVQUyoIX5CNb_3IW893C0xfSrEm/", "pixel_tracking_url": "https://tracking.musixmatch.com/t1.0/m_img/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCAB0Xj7CAyD4mjojoI5pSqo0L_Qojn7Q9jhh7eIMnru0DnnnxducKM9BTbyEX19XGYKgaLEjaRJUedry3aKHTl45sXeTudU6Y5g6DYg4UqxqUZVQuGT8RofGA25JeQfvfJnabBr4Ua2rDhu52CH9gY5T4MO58sTV_WEnz1OeovHSJJrcR7FJ6dGtZ7ddBSj5DAs3tXvKVZM-CMngsa4lVHgJvlKyQBI9dIlKpIasxUiHE8ESQ5nvq355A-9hB38ZO1xBSBE_poFKeFODVuxAYwt61nwkcy1INwNyRfu-88W0T8qdzmNdHPzC3CZ13W6_zvJQs144ir8AMF_ScjfXdyIZ5rBKT3yQYp4BIAuWYALrfv87mitBdkqukq_HiN79vaqsKTpn2dr5-IMe97ioMeI4xHwX2/", "html_tracking_url": "https://tracking.musixmatch.com/t1.0/m_html/e_1/sn_0/l_14678126/su_0/rs_0/tr_3vUCANQr9qsfeDL9iPgGrXIvJIBLLsgir3pFRzL4BslntB9GYllG57LNZuNC08A5g3r87JYVDgKTKk4QfYdU-j3sfs8i8onqzpCCV_w27R7ePS_k13wHNHBfSZpHQcJL4ocPj9i9E-Cms8yT9q4vLC31c3DGfudXXV6k5MajtdCVZdHaHfeNNm6tmstseeFCD6MuQxmRRkiUmHYTfgi2TfPwR4CzOZbEdULg5X6AHiiT4MMfIKAspZwghHUMhq3udos-8052sIMMUyB8nQrquajI8ZyZGX9UzKQi21ZDfyFz5fyUF9gYwzX4WA1gxhmVlsppG_-ocY7m29ddOUjEcg0HM0b7CsrJw8tAtcnwLnFovDcW-a7xzNUDlCkqXBLU_sDVg_na0uE4fH1QuYFKvwX5bwlQ1d-l/", "lyrics_copyright": "Lyrics powered by www.musixmatch.com. This Lyrics is NOT for Commercial use and only 30% of the lyrics are returned.", "writer_list": [], "publisher_list": [], "backlink_url": "https://www.musixmatch.com/lyrics/Bruno-Mars/Grenade?utm_source=application&utm_campaign=api&utm_medium=", "updated_time": "2016-03-18T14:38:56Z"}}}}

,可以看出,json响应是一本词典,其中包含许多其他词典,但我们想触及的是一个包含" dmpss_body"和它的价值。

我们该怎么做?好吧,这实际上很简单。在一行中,我们可以继续调用字典并传递包含另一个键的密钥,因此,例如,我们要访问的第一个字典是整个JSON响应,因此我们可以调用包含JSON响应的歌词变量,然后在这种情况下,我们通过要访问的密钥"消息",歌词["消息"]。

print(lyrics["message"]["body"]["lyrics"]["lyrics_body"])

您这样做的方式也很简单。您只想迭代集成词典中的每个键。

for message in lyrics:
    for body in lyrics[message]:
     if body == "body":
         for lyric in lyrics[message][body]:
             for lyrBod in lyrics[message][body][lyric]:
                 if lyrBod == "lyrics_body":
                     print(lyrics[message][body][lyric][lyrBod])

您可以看到这是同一回事,但需要更长的时间。

希望这有帮助

相关内容

  • 没有找到相关文章

最新更新