Python下載網易雲音樂歌曲[簡單 方便]


進行下載文件時應該先定下步驟:

1.我們需要抓取下載歌曲的網址 [網易雲的下載歌曲鏈接:http://music.163.com/song/media/outer/url?id={}.MP3]   {}要換成歌名   我們可以運用str.format("歌名")去構成鏈接  

2.我們需要知道下載歌曲需要哪些參數[網易雲的下載歌曲只需要知道歌曲的ID就行了]

3.網易雲歌曲的ID怎么獲取呢?            ------請看下圖

復制鏈接后我們只需要拿去我們需要的id

實例:

我們復制的鏈接為:https://music.163.com/song?id=1901371647&userid=2032247162

我們發現id=1901371647

我們只要他的數值:1901371647

我們運用pyperclip庫將我們復制的內容定義一個變量   ↓

SongUrl = pyperclip.paste()

判斷SongUrl是否為空    如果他是空的就證明我們沒有復制成功 ↓

if SongUrl == "" : 

  print("請復制鏈接!")     //打印文字  提示用戶去復制鏈接

  sys.exit()     //這行代碼可以讓程序退出!

else : 這里開始寫截取id的代碼

 

截取id的機制:

我們需要運用到str.find()的函數

我們知道str的值擁有着一個數值   比如  HelloWorld   ↓

H = 0 

e = 1 

l = 2 

l = 3

o = 4 

最后的d = 9

str.find()的函數就是可以找到str值所對應的數值    比如運用find函數找上面HelloWorld的W數值 ↓

Message = HelloWorld    

print(str(Message).find("W"))     最后打印的結果為5

我們可以運用str[x:x]來截取我們想要的內容

運用以上機制我們開始寫獲取ID的代碼

 

1. SongUrl不為空時說明我們復制成功了    開始找id所對應的數值 運用str(SongUrl).find("id")

2. 找到id所對應的數值后我們發現他只獲取到了i的數值    我們運用i的數值+3就可以獲取到=后面值的數值    例如  https://music.163.com/song?id=1901371647&userid=2032247162

這時候我們獲取到i的值是27      因為id是1901371647  我們只需要這一串其他都不需要  因此我們用i的數值+3就可以獲取到=后面值的數值 這里我們獲取的是1的數值

3.我們發現ID后面有個&的符號這個是一個我們可以利用的點    我們用str.find("&")來獲取&所對應的數值  這里所對應的是40

4.我們知道了=和&的數值后開始用str[x:x]來截取我們所需要的ID       代碼如下↓

songid = str(SongUrl)[int(str(SongUrl).find('id')) + 3:int(str(dd.find('&')))]      因為字符串開始是從0算的  所以i對應的數值+3才是1所對應的數值 + 2 的話我們獲取到的內容就是   "=1901371647"  我們只需要ID 但是這里多了個=號  所以 + 3

songid我們獲取到了  現在就要運用到requests來下載歌曲了

url = "http://music.163.com/song/media/outer/url?id={}.MP3"

heards = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"} 這個不用管

r = requests.get(url.format(songid), headers=heards) 創建 requests變量

用requests.iter_content()來下載歌曲

進行一個ID判斷  因為我們的ID只有數字沒有英文等因素所以用str里面的isnumeric來判斷

if not songid.isnumeric() : 

  print("復制鏈接錯誤!")

  sys.exit()

else : 這里面寫下載歌曲的代碼  ↓

if not os.path.exists("./Songs") : os.mkdir("./Songs")    判斷該目錄是否有Songs文件夾 如果沒有側新建一個叫Songs的文件夾

file_name = "./Songs/id " + str(songid) + " .mp3"     這個是下載歌曲的路徑
with open(file_name, "wb") as f:         
  for j in r.iter_content(chunk_size=512):
    f.write(j)

print("下載完成!")

我們先去網易雲音樂復制分享鏈接   接着運行程序    

 

由於是第一次投稿  組織能力可能沒那么好 請見諒。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM