本文作者:佳加網

酷狗mv文件在哪,python歌曲下載

酷狗mv文件在哪,python歌曲下載摘要: 酷狗mv文件在哪,python歌曲下載酷狗音樂是一款非常不錯的軟件,包含著音樂軟件所有該有的功能。初中開始接觸上網,下載歌曲便一直用酷狗音樂。想當初自己年少無知啊,...
酷狗mv文件在哪,python歌曲下載

酷狗音樂是一款非常不錯的軟件,包含著音樂軟件所有該有的功能。

初中開始接觸上網,下載歌曲便一直用酷狗音樂。想當初自己年少無知啊,好不容易湊夠5塊錢上了2個小時的網,結果愣是一首歌沒下載下來,下載的全是歌詞文件!我興高采烈地往自己的mp4里傳輸,結果發現不能播放!網吧時間到了,口袋錢空了,歌沒下下來,當時氣死老子了。這也可以說是一段難忘的經歷啊。

上了大學以后,為了配合我稍微有一點那么文縐縐的氣質,開始跟隨網易大軍,使用網易云音樂,開啟我的高逼格歷程!大學畢業,氣質全無,我覺得我配不上網易云了,又投入了酷狗音樂的懷抱[笑哭]。

這不,這兩天重看《雙世寵妃2》,再一次深深地迷上了里面的曲檀兒(梁潔飾演)【花癡】,配合葉炫清的《歸去來兮》,簡直了!【好像屌絲本質一覽無余?才不是,是欣賞!哈哈】

開始分析:

MV鏈接:https://www.kugou.com/mvweb/html/mv_866733.html

想直接看的,可跳轉過去哦!

第一步:打開酷狗WEB,搜索《歸去來兮》,點擊

Python-酷狗音樂MV下載

第二步:點擊音樂播放界面的mv,進行跳轉到播放頁面。

Python-酷狗音樂MV下載

Python-酷狗音樂MV下載

簡直了,美美美

哈哈,別忘了正事!

第三步:右鍵(Chrome)檢查,Ctrl+F搜索"歸去來兮",結果如下:

Python-酷狗音樂MV下載

可以看出,這里面有我們需要的MV的標題和MV的哈希值。至于哈希值是啥,待會再解釋。

獲取到它們,方法如下:

access_url ="鏈接地址" # 移除SSL驗證時的警告 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) response = requests.get(access_url, headers=headers, verify=False) html = response.text web_data = etree.HTML(html) datas = web_data.xpath('//script[@type="text/javascript"]') x = datas[1].xpath('./text()')[0].strip().split('.')[0].split(',') mv_hash = x[1].split('"')[1] mv_title = x[2].split('"')[1] print('MV哈希值:%s,MV標題:%s'%(mv_hash,mv_title)) # 劃重點:獲取key key = kugou_hash(mv_hash)

第四步?

在開始第四步之前,先用網上的解釋來說明什么是哈希加密!

轉載鏈接:https://www.liaoxuefeng.com/wiki/897692888725344/923057313018752

Python的hashlib提供了常見的摘要算法,如MD5,SHA1等等。

什么是摘要算法呢?摘要算法又稱哈希算法、散列算法。它通過一個函數,把任意長度的數據轉換為一個長度固定的數據串(通常用16進制的字符串表示)。

舉個例子,你寫了一篇文章,內容是一個字符串'how to use python hashlib - by Michael',并附上這篇文章的摘要是'2d73d4f15c0db7f5ecb321b6a65e5d6d'。如果有人篡改了你的文章,并發表為'how to use python hashlib - by Bob',你可以一下子指出Bob篡改了你的文章,因為根據'how to use python hashlib - by Bob'計算出的摘要不同于原始文章的摘要。

可見,摘要算法就是通過摘要函數f()對任意長度的數據data計算出固定長度的摘要digest,目的是為了發現原始數據是否被人篡改過。

摘要算法之所以能指出數據是否被篡改過,就是因為摘要函數是一個單向函數,計算f(data)很容易,但通過digest反推data卻非常困難。而且,對原始數據做一個bit的修改,都會導致計算出的摘要完全不同。

好,接下來,第四步:用hash得到key!

m = hashlib.md5() # 哈希 md5加密 kugou_slat = 'kugoumvcloud' # 鹽 m.update((mv_hash + kugou_slat).encode("utf8")) # 哈希值+鹽 key = m.hexdigest() return key # 返回key值

第五步:刷新頁面,右鍵檢查,Network,搜索key,得到如下結果:

Python-酷狗音樂MV下載

可以看到,這里面就有我們想要的超清畫質的下載鏈接!

Python-酷狗音樂MV下載

Python-酷狗音樂MV下載

第六步:既然找到了最后的下載鏈接,那下載自然就不在話在!開搞!

download_url = "http://trackermv.kugou.com/interface/index/cmd=100&hash={}&key={}&pid=6&ext=mp4&ismp3=0".format(mv_hash,key) hash_res = requests.get(download_url, headers=headers) hash_js = hash_res.json() # json格式 try: play_url = hash_js['mvdata']['rq']['downurl'] file_suffix = play_url.split('/')[-1].split('.')[-1] if play_url !="": print('1080P MV下載地址已找到,請稍候...') with open(save_path_real+mv_title + "." + file_suffix, "wb")as fp: fp.write(requests.get(play_url).content) print('>>>1080P下載完成!!!')

至此,我們想要的超清MV便可收入囊中!演示:

Python-酷狗音樂MV下載

最后,附上源碼:

import requests import hashlib from lxml import etree import urllib3 import winreg import os # mv保存地址 def get_desktop(): key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders') return winreg.QueryValueEx(key, "Desktop")[0] save_path_real = get_desktop()+'\\' + "酷狗音樂MTV" + "\\" headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \ AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"} print('>>>>>>>>>>>>酷狗MV下載程序開始<<<<<<<<<<<<<\n') print('>>>>>>>>>>>>示例URL:http://www.kugou.com/mvweb/html/mv_1138506.html<<<<<<<<<<<<<\n') # 獲取mv的hash和title def get_mv_name_hash(html, save_path_real): web_data = etree.HTML(html) datas = web_data.xpath('//script[@type="text/javascript"]') x = datas[1].xpath('./text()')[0].strip().split('.')[0].split(',') mv_hash = x[1].split('"')[1] mv_title = x[2].split('"')[1] print('MV哈希值:%s,MV標題:%s'%(mv_hash,mv_title)) # 獲取key key = kugou_hash(mv_hash) # 下載MV download_mv(mv_title,mv_hash,key,save_path_real) # 哈希加密的教程鏈接,轉1:https://www.jianshu.com/p/cc2468b82e90 # 哈希加密的教程鏈接,轉2:https://www.jianshu.com/p/cb77838c69db # 得到key # 傳入MV哈希值 返回KEY值 def kugou_hash(mv_hash): m = hashlib.md5() # 哈希 md5加密 # #song_hash_upper=mv_hash.upper()#大寫 kugou_slat = 'kugoumvcloud' # 鹽 m.update((mv_hash + kugou_slat).encode("utf8")) # 哈希值+鹽 key = m.hexdigest() return key # 返回key值 # 下載 def download_mv(mv_title,mv_hash,key,save_path_real): if not os.path.exists(save_path_real): os.mkdir(save_path_real) print("%s正在下載,請稍候..."%mv_title) download_url = "http://trackermv.kugou.com/interface/index/cmd=100&hash={}&key={}&pid=6&ext=mp4&ismp3=0".format(mv_hash,key) hash_res = requests.get(download_url, headers=headers) hash_js = hash_res.json() # json格式 try: play_url = hash_js['mvdata']['rq']['downurl'] file_suffix = play_url.split('/')[-1].split('.')[-1] if play_url !="": print('1080P MV下載地址已找到,請稍候...') with open(save_path_real+mv_title + "." + file_suffix, "wb")as fp: fp.write(requests.get(play_url).content) print('>>>1080P下載完成!!!') except: try: play_url = hash_js['mvdata']['sq']['downurl'] file_suffix = play_url.split('/')[-1].split('.')[-1] if play_url !="": print('720P MV下載地址已找到,請稍候...') with open(save_path_real+mv_title + "." + file_suffix, "wb")as fp: fp.write(requests.get(play_url).content) print('>>>720P下載完成!!!') except: try: play_url = hash_js['mvdata']['hd']['downurl'] file_suffix = play_url.split('/')[-1].split('.')[-1] if play_url !="": print('540P MV下載地址已找到,請稍候...') with open(save_path_real+mv_title + "." + file_suffix, "wb")as fp: fp.write(requests.get(play_url).content) print('>>>540P下載完成!!!') except: print('>>>無MV!') # 獲取html def get_html(url): access_url = url # 移除SSL驗證時的警告 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) response = requests.get(access_url, headers=headers, verify=False) html = response.text # 獲取mv的hash和標題 get_mv_name_hash(html, save_path_real) def main(): # MV頁面鏈接 url = input('>>>請輸入酷狗音樂MV播放頁URL地址:') get_html(url) continue_download = input('>>>是否繼續下載?輸入Y or N,其余字符不可用!\n\n') if continue_download == 'Y' or continue_download == 'y': main() # 啟動程序 if __name__ == '__main__': main()

好了,今天的分享到此就結束了,有想交流的,請記得私信我哦!

代碼也可以打包成exe文件,電腦安裝python也能下載,我已經打包好了,如果小伙伴有需要的,也記得私信我哦。

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞

閱讀
分享

發表評論

快捷回復:

評論列表 (暫無評論,57人圍觀)參與討論

還沒有評論,來說兩句吧...