下面这篇介绍了,给歌曲名,搜索并下载歌曲
本篇介绍,给歌曲网站的歌曲资源路径,下载歌曲
主要不同点,
- 给歌曲名,歌曲名就到手了,需要搜索歌曲 ID,
通过歌曲 ID,拿歌词、歌曲资源路径,最终下载歌曲资源
- 给出歌曲的 url, 该歌曲的 ID 就知道了,需要找出歌曲名称,
有歌曲 ID,拿歌词、歌曲资源路径,和歌曲资源
从 url 拿 ID
info=songUrl.split("=")
song_id=info[1]
用 ID 拿歌曲名
songInfoUrl = "http://music.x.com/api/song/detail/?id={}&ids=%5B{}%5D".format(song_id, song_id)
songInfoResponse = self.crawler.session.get(songInfoUrl)
songInfoJSON = songInfoResponse.json()
song_name = songInfoJSON['songs'][0]["name"]
原本的思路是,拿歌曲的 web url, 下载整个网页,
从网页中找出歌曲 title
不成
因为一些音乐网站,歌曲信息是后续加载的
用 ID 拿歌词
csrf = ''
lyricUrl = 'http://music.x.com/api/song/lyric/?id={}&lv=-1&csrf_token={}'.format(song_id, csrf)
lyricResponse = self.session.get(lyricUrl)
lyricJSON = lyricResponse.json()
lyrics = lyricJSON['lrc']['lyric'].split("\n")
用 ID 拿歌曲资源路径
url = 'http://music.x.com/weapi/song/enhance/player/url?csrf_token='
csrf = ''
params = {'ids': [song_id], 'br': bit_rate, 'csrf_token': csrf}
result = self.post_request(url, params)
# 歌曲下载地址
song_url = result['data'][0]['url']