歌曲网站,指定 url, 爬取 mp3 和 lyric

500 阅读1分钟

下面这篇介绍了,给歌曲名,搜索并下载歌曲

歌曲网站,爬取 mp3 和 lyric

本篇介绍,给歌曲网站的歌曲资源路径,下载歌曲

主要不同点,

  • 给歌曲名,歌曲名就到手了,需要搜索歌曲 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']

下载歌曲 ( 略 )

github repo