1、成果展示


2、完整代码
import json
import requests
import hashlib
import re
import time
from DrissionPage import ChromiumPage
word = input("请输入你要搜索的歌曲或歌手")
def nowtime():
return int(time.time() * 1000)
def search(word):
data = [
"NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
"appid=1014",
"bitrate=0",
"callback=callback123",
f"clienttime={nowtime()}",
"clientver=1000",
"dfid=1bmpSu4epLVa0xpWqN2eZKXE",
"filter=10",
"inputtype=0",
"iscorrection=1",
"isfuzzy=0",
f"keyword={word}",
"mid=1944b08c73647da436fb7cb92a508c8c",
"page=1",
"pagesize=30",
"platform=WebFilter",
"privilege_filter=0",
"srcappid=2919",
"token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0"
"userid=2143792474",
"uuid=1944b08c73647da436fb7cb92a508c8c",
"NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
]
string = ''.join(data)
# print(string)
MD5 = hashlib.md5()
MD5.update(string.encode('utf-8'))
signature = MD5.hexdigest()
url = f"https://complexsearch.kugou.com/v2/search/song?callback=callback123&srcappid=2919&clientver=1000&clienttime={nowtime()}&mid=1944b08c73647da436fb7cb92a508c8c&uuid=1944b08c73647da436fb7cb92a508c8c&dfid=1bmpSu4epLVa0xpWqN2eZKXE&keyword={word}&page=1&pagesize=30&bitrate=0&isfuzzy=0&inputtype=0&platform=WebFilter&userid=2143792474&iscorrection=1&privilege_filter=0&filter=10&token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0&appid=1014&signature={signature}"
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}
html = requests.get(url, headers=header)
shuju = re.findall('callback123\((.*)\)', html.text)[0]
# print(shuju)
data_list = json.loads(shuju)
num = 1
x = []
y = []
for i in data_list['data']['lists']:
zhuanji = i['AlbumName']
name_list = i['FileName']
x.append(i['EMixSongID'])
y.append(name_list)
print(f"{num}歌曲:{name_list}专辑:{zhuanji}")
num += 1
j = int(input("你要下载的歌曲是:(请输入编号)"))
for i in range(len(x)):
if i + 1 == j:
music_id = x[i]
music_name = y[i]
break
data = ["NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
"appid=1014",
f"clienttime={nowtime()}",
"clientver=20000",
"dfid=1bmpSu4epLVa0xpWqN2eZKXE",
f"encode_album_audio_id={music_id}",
"mid=1944b08c73647da436fb7cb92a508c8c",
"platid=4",
"srcappid=2919",
"token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0",
"userid=2143792474",
"uuid=1944b08c73647da436fb7cb92a508c8c",
"NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"]
string = ''.join(data)
MD5 = hashlib.md5()
MD5.update(string.encode('utf-8'))
signature = MD5.hexdigest()
return loading(music_id,signature,music_name)
def open_music(url_new):
page = ChromiumPage()
page.get(url_new) # 打开
exit(1)
def loading(music_id,signature,music_name):
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}
url_new = f"https://wwwapi.kugou.com/play/songinfo?srcappid=2919&clientver=20000&clienttime={nowtime()}&mid=1944b08c73647da436fb7cb92a508c8c&uuid=1944b08c73647da436fb7cb92a508c8c&dfid=1bmpSu4epLVa0xpWqN2eZKXE&appid=1014&platid=4&encode_album_audio_id={music_id}&token=585c4af52231dfd59c6942aff786150195db480d0a1b0d445b564458f8be52f0&userid=2143792474&signature={signature}"
html = requests.get(url_new, headers=header)
sj = html.json()["data"]['play_url']
yinyue = requests.get(sj, headers=header).content
print(html.json()["data"]["audio_name"],'\t', html.json()["data"]['play_url'])
with open(f'./{music_name}.mp3', 'wb') as f:
f.write(yinyue)
return html.json()["data"]['play_url']
music_url = search(word)
# print(music_url)
open_music(music_url)