python自动下载酷狗音乐_python实现酷狗音乐mp3下载

在python实现千千音乐mp3下载后小伙伴使用发现很多音乐在千千音乐都搜不到,所以今天春江暮客就拓展了一下酷狗音乐的下载,有源码。

同样的配方,首先在酷狗官网上直接搜索歌曲,然后打开谷歌浏览器的网络监视器,再次搜索同样的关键字就可以发现接口信息(注:此处最好再次搜索的时候查看网络,可以剔除很多多余的信息)。

1.分析搜索接口信息

python自动下载酷狗音乐_python实现酷狗音乐mp3下载

python自动下载酷狗音乐_python实现酷狗音乐mp3下载

python自动下载酷狗音乐_python实现酷狗音乐mp3下载

同样是json,同样的配方。play_url为mp3地址,lyc歌词信息直接以文本格式返回,lyrics。json_page_source[“data”][“play_url”]得到mp3地址,json_page_source[“data”][“lyrics”]获取lrc歌词。

3.python实现搜索下载

接口分析清楚了,就可以直接上python了,这里酷狗对爬虫限制比较严格,不知道为什么requests获取不到信息,因此借助万能的selenium实现调用浏览器获取源码,然后mp3再用requests下载。上代码

#!env python

# -*- coding: utf-8 -*-

import requests

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

import re,json,time,sys,os

CHROME_PATH = os.getcwd()+”/chromedrive”

#print(CHROME_PATH)

def helpmessage():

msg = r”’

/ / / /

///\/ ///\/ ///\/ ///\/

///\///\///\///\///\///\///\///\/

//\///\///\///\///\///\///\///\///\

\/// /\//

/ 本程序由 春江暮客 /

/ 发布在www.bobobk.com 上 /

//\ 程序打开后会打开网站 //\

\// 大家不要急着关闭 \//

/ 作者:春江暮客 /

/ 酷狗音乐下载 /

//\ 用法看程序运行时界面 //\

\// 如有任何疑问请在 \//

/ 博客页面留言或者发邮件到 /

/ 2180614215@qq.com /

//\ 下载的音乐仅供学习交流 //\

\// 严禁用于商业用途 \//

/ 请于24小时内删除 /

/ /

//\/ ///\

\///\///\///\///\///\///\///\///\//

/\///\///\///\///\///\///\///\///

/\/// /\/// /\/// /\///

/ / / /

”’

print(msg)

#####图案由boxes生成,不懂请看https://www.bobobk.com/185.html

def get_kugou_mp3_address_and_download(song_hash,albumid):

apiurl= “https://wwwapi.kugou.com/yy/index.php”

chrome_url = apiurl+”+”r=play/getdata&hash=%s&album_id=%s” % (song_hash,albumid)

browser = webdriver.Chrome(CHROME_PATH)

browser.get(chrome_url)

text = json.loads(browser.page_source.split(“”)[1].split(“”)[0])

browser.close()

song_address = text[“data”][“play_url”]

songname = text[“data”][“author_name”]+”_”+text[“data”][“album_name”]+”_”+text[“data”][“song_name”]

mp3w = open(songname+”.mp3″,’wb’)

mp3r = requests.get(song_address)

for chunk1 in mp3r.iter_content(chunk_size=512 * 1024):

if chunk1:

mp3w.write(chunk1)

mp3w.close()

lrc = open(songname + “.lrc”,’w’)

lrc.write(text[“data”][“lyrics”])

lrc.close()

def search_music(keyword):

if keyword in [“exit”,u”退出”]:

print(u”你选择了退出当前程序”)

sys.exit(0)

callback = “jQuery112404564878798811507_”+str(round(time.time()*1000))

hua = str(round(time.time()*1000))

basic_url = ‘https://songsearch.kugou.com/song_search_v2

kugou_s_url = basic_url + “callback=%s&keyword=%s&page=1&pagesize=40&userid=-1&clientver=2.7.8&platform=WebFilter&tag=em&filter=2&iscorrection=7&privilege_filter=0&_=%s” % (callback,keyword,hua)

browser = webdriver.Chrome(CHROME_PATH)

browser.get(kugou_s_url)

songlist = json.loads(browser.page_source.split(callback)[1].split(“…”)[0][1:-2].strip())[“data”][“lists”]##…由于网页展示问题被替换

browser.close()

return songlist

def main():

while True:

song = input(u”请输入想要下载的音乐或歌手或专辑…名称: “).strip()

if song!=””:

break

songlist = search_music(song)

page = 1

print(“n搜索结果如下”)

for i in range(len(songlist)):

print(“%d:%s_%s_%s” % (i+1,songlist[i][“SingerName”].replace(“”,””).replace(“em”,”).replace(“/”,”).strip(),songlist[i][“AlbumName”],songlist[i][“SongName”].replace(“”,””).replace(“em”,”).replace(“/”,”)))

print(“n”)

while True:

songid = input(u’请选择想要下载的歌曲前面的数字n多首歌曲以空格分开,如”1 2″回车n输入非数字退出选择,进入搜索状态n全部下载请输入100000:’).strip()

if songid == ”:

continue

try:

songid = [int(i) for i in songid.strip().split()]

# print(songid)

if songid[0] != 100000:

for song in songid:

# print(songlist[song-1][“FileHash”])

# print(songlist[song-1][“AlbumID”])

songname = songlist[song-1][“SingerName”].replace(“”,””).replace(“em”,”).replace(“/”,”).strip()+”_”+songlist[song-1][“AlbumName”]+”_”+songlist[song-1][“SongName”].replace(“”,””).replace(“em”,”).replace(“/”,”).strip()

try:

get_kugou_mp3_address_and_download(songlist[song-1][“FileHash”],songlist[song-1][“AlbumID”])

print(u”n——-恭喜,当前歌曲–%s–下载完成———n” % songname)

except:

print(“网络错误”)

print(u”退出请输入’exit’或者’退出'”)

else:

print(“正在开始下载搜索到的所有歌曲,请耐心等待nn”)

for songid in songlist:

print(“——-正在下载歌曲——–%s———-” % songid[1])

time.sleep(2)

try:

get_mp3_address_and_download(songid[0])

print(“——-恭喜,歌曲——–%s—下载完成——-n” % songid[1])

except:

print(“下载%s时错误发生” % songid[1])

except:

print(“数字错误,重新搜索歌曲n”)

break

main()

if __name__==’__main__’:

print(“nnn”)

# search_music(u”可不可以”)

# get_kugou_mp3_address_and_download(“96E064A41AB84EBE4C03C6AAE3CB9334″,”9618875”)

helpmessage()

os.system(“start https://www.bobobk.com/234.html”)

print(“nnn”)

while True:

# main()

try:

main()

except:

print(u”2秒后关闭程序”)

time.sleep(2)

sys.exit(0)

总结

本文是在python实现千千音乐mp3下载后,发现很多资源没有,因此增加了这个酷狗音乐的下载程序,其中在使用requests获取网页的过程中遇到了障碍,不得不使用了selenium调用浏览器的方式获取。但是结果总是好的,最好还是完美的实现了酷狗音乐的下载。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览212338 人正在系统学习中 相关资源:蓦然记忆助手2.0触屏加强版-管理软件工具类资源-CSDN文库

来源:weixin_39870700

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年11月9日
下一篇 2020年11月9日

相关推荐