日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2023/12/14 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python自动下载酷狗音乐_python实现酷狗音乐mp3下载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在python實現千千音樂mp3下載后小伙伴使用發現很多音樂在千千音樂都搜不到,所以今天春江暮客就拓展了一下酷狗音樂的下載,有源碼。

同樣的配方,首先在酷狗官網上直接搜索歌曲,然后打開谷歌瀏覽器的網絡監視器,再次搜索同樣的關鍵字就可以發現接口信息(注:此處最好再次搜索的時候查看網絡,可以剔除很多多余的信息)。

1.分析搜索接口信息

只有4條網絡請求,可以很方便的知道是第一條請求是真正的返回了歌曲信息,因此構造此條請求即可。

請求詳細信息,在看了千千音樂的文章后,相信大家也熟悉了,callback是前面加上13位的timestamp時間戳,_為13位的timestamp時間戳。

2.分析播放接口信息

到這里已經知道了搜索的詳細請求以及結果,接下來看音樂下載地址,點擊第一首歌曲播放

只需要使用json解析結果然后獲取信息,json_page_source[“data”][“list”][0][“AlbumID”]和json_page_source[“data”][“list”][0][“FileHash”]即可獲取下載所需信息。

直接查看網絡,刷新,查看網絡連接,從茫茫多的請求中找到真正的獲取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("正在開始下載搜索到的所有歌曲,請耐心等待\n\n")

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("\n\n\n")

# search_music(u"可不可以")

# get_kugou_mp3_address_and_download("96E064A41AB84EBE4C03C6AAE3CB9334","9618875")

helpmessage()

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

print("\n\n\n")

while True:

# main()

try:

main()

except:

print(u"2秒后關閉程序")

time.sleep(2)

sys.exit(0)

總結

本文是在python實現千千音樂mp3下載后,發現很多資源沒有,因此增加了這個酷狗音樂的下載程序,其中在使用requests獲取網頁的過程中遇到了障礙,不得不使用了selenium調用瀏覽器的方式獲取。但是結果總是好的,最好還是完美的實現了酷狗音樂的下載。

總結

以上是生活随笔為你收集整理的python自动下载酷狗音乐_python实现酷狗音乐mp3下载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。