🎵 QQ音乐下载

📋 功能说明
  • 搜索歌曲并获取歌曲信息
  • 获取歌曲播放链接
  • 下载MP3文件到本地
💻 源代码
import requests
import json

headers = {"User-Agent": "Mozilla/5.0 Chrome/76.0.3809.100"}

def getSongMid(searchword):
    """搜索歌曲获取songmid"""
    url = f"https://c.y.qq.com/soso/fcgi-bin/client_search_cp?p=1&n=10&w={searchword}"
    res = requests.get(url=url, headers=headers)
    html = res.text[9:-1]  # 去除callback包装
    songdata = json.loads(html)
    
    song_list = songdata["data"]["song"]["list"]
    for song in song_list:
        print(f"歌曲: {song['songname']}, ID: {song['songmid']}")
    return song_list

def downloadSong(songmid, songname):
    """下载歌曲"""
    p_url = f'https://u.y.qq.com/cgi-bin/musicu.fcg?data={{"req_0":{{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{{"guid":"8182077584","songmid":["{songmid}"],"uin":"7945"}}}}}}'
    res = requests.get(url=p_url, headers=headers)
    purl = res.json()["req_0"]["data"]["midurlinfo"][0]["purl"]
    
    song_url = 'http://isure.stream.qqmusic.qq.com/' + purl
    content = requests.get(url=song_url, headers=headers).content
    
    with open(f'{songname}.mp3', 'wb') as f:
        f.write(content)
        print(f"下载完成: {songname}.mp3")

# 使用示例
songs = getSongMid("周杰伦")
downloadSong(songs[0]['songmid'], songs[0]['songname'])
📦 运行环境
pip install requests
参数说明
  • searchword: 搜索关键词
  • songmid: 歌曲唯一标识
  • songname: 保存文件名