51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
import requests
|
|
from time import sleep
|
|
|
|
|
|
def download(name, index):
|
|
url = f"https://api.xingzhige.com/API/Kugou_GN_new/?name={name}&n={index+1}"
|
|
resp = requests.get(url)
|
|
resp.close()
|
|
music_name = resp.json()["data"]["songname"]
|
|
singer = resp.json()["data"]["name"]
|
|
music_url = resp.json()["data"]["src"]
|
|
response = requests.get(music_url, stream=True)
|
|
formated = music_url.split("?")[0].rsplit(".", 1)[1]
|
|
filename_without_endswith = f"{singer} - {music_name}"
|
|
filename = f"{filename_without_endswith}.{formated}"
|
|
filename = filename.replace("\\", "#").replace("/", "#")
|
|
filename = filename.replace(":", "#").replace("*", "#")
|
|
filename = filename.replace("?", "#").replace("\"", "#")
|
|
filename = filename.replace("<", "#").replace(">", "#").replace("|", "#")
|
|
with open(filename, "wb") as f:
|
|
for data in response.iter_content(chunk_size=1024):
|
|
f.write(data)
|
|
response.close()
|
|
|
|
|
|
def get_data(name):
|
|
url = f"https://api.xingzhige.com/API/Kugou_GN_new/?name={name}"
|
|
resp = requests.get(url)
|
|
resp.close()
|
|
music_list = resp.json()["data"]
|
|
for i in range(len(music_list)):
|
|
print(f"{i+1}.{music_list[i]['songname']} - {music_list[i]['name']}")
|
|
|
|
|
|
while True:
|
|
music = input("请输入要搜索的音乐(歌名-歌手):")
|
|
get_data(music)
|
|
try:
|
|
index = int(input("请输入歌曲的编号(什么都不输默认退出):")) - 1
|
|
except:
|
|
continue
|
|
|
|
if index >= 10:
|
|
continue
|
|
|
|
try:
|
|
download(music, index)
|
|
print("下载完成!")
|
|
except Exception as e:
|
|
print(e)
|
|
sleep(2) |