Python下载网易云音乐歌曲[简单 方便]

进行下载文件时应该先定下步骤:

1.我们需要抓取下载歌曲的网址 [网易云的下载歌曲链接:http://music.163.com/song/media/outer/url?id={}.MP3]   {}要换成歌名   我们可以运用str.format("歌名")去构成链接  

2.我们需要知道下载歌曲需要哪些参数[网易云的下载歌曲只需要知道歌曲的ID就行了]

3.网易云歌曲的ID怎么获取呢?            ------请看下图

Python下载网易云音乐歌曲[简单 方便]

复制链接后我们只需要拿去我们需要的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("下载完成!")

我们先去网易云音乐复制分享链接   接着运行程序    

 

由于是第一次投稿  组织能力可能没那么好 请见谅。

 

 

 

上一篇:linux学习笔记6


下一篇:Linux之find命令的使用