Python制作付费音乐下载器
支持爬取QQ音乐会员歌曲,侵权请联系
<QQMusic.py>
是否还在为音乐收费下载而烦恼?那么,快来看看这篇文章,动用你的大脑,用Python编写出属于你的音乐下载器吧(福利在末尾)~
因为我的站点时不时地会插入音乐,通常下载又不经济又不方便,所以,编写了这样一个Python程序,你会发现下载音乐比客户端+VIP还要方便好用的多
下面是源码:
from requests_html import HTMLSession
import urllib.request,os,json
from urllib.parse import quote
class QQ_Music():
def __init__(self):
self.get_music_url='https://c.y.qq.com/soso/fcgi-bin/client_search_cp?new_json=1&remoteplace=txt.yqq.song&t=0&aggr=1&cr=1&w={}&format=json&platform=yqq.json'
self.get_song_url='https://u.y.qq.com/cgi-bin/musicu.fcg?data={"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"602087500","songmid":["%s"],"songtype":[0],"uin":"0","loginflag":1,"platform":"20"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}}'
self.download_url='http://dl.stream.qqmusic.qq.com/'
if not os.path.exists("d:/music"):
os.mkdir('d:/music')
def parse_url(self,url):
session = HTMLSession()
response = session.get(url)
return response.content.decode()
def get_music_list(self,keyword):
music_dirt=json.loads(self.parse_url(self.get_music_url.format(quote(keyword))))
music_list=music_dirt['data']['song']['list']
# print(music_list)
song_list=[]
for music in music_list:
sing_name=music['singer'][0]['name']
song_name=music['title_hilight'].replace(r"</em>", "").replace("<em>", "")
song_list.append({'songmid':music['mid'], 'singer':sing_name,'song_name':song_name})
print(str(len(song_list))+'、'+sing_name+'--'+song_name)
return song_list
def download(self,song):
song_dirt = json.loads(self.parse_url(self.get_song_url%song['songmid']))
download_url = song_dirt["req_0"]["data"]["midurlinfo"][0]["purl"]
if download_url:
try:
# 根据音乐url地址,用urllib.request.retrieve直接将远程数据下载到本地
urllib.request.urlretrieve(self.download_url+download_url, 'd:/music/' + song['song_name'] + '.mp3')
print('Successfully Download:' + song['singer']+'--'+song['song_name'] + '.mp3')
except:
print('Download wrong~')
if __name__ == '__main__':
qqmusic=QQ_Music()
while True:
keyword = input('请输入要下载的歌曲名:')
print('-----------歌曲《' + keyword + '》的版本列表------------')
music_list = qqmusic.get_music_list(keyword)
song_num = input('请输入要下载的歌曲序号:')
qqmusic.download(music_list[int(song_num) - 1])
运行py脚本,按照提示操作,你会发现你要找的歌曲已经以M4A的格式保存到D:\music文件夹了
如果没有D盘请注意修改一下源码哦~
福利来啦!下面是GitHub源码供你下载哦~
除非注明,文章均为学霸时光机原创,转载请遵循下文,注明出处URL
本站文章许可遵循《“知识共享”国际许可协议4.0》
本文地址:https://www.syf.ink/archives/227
评论请前往留言板,为您推荐以下文章~
评论 (4)