ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-01-03 16:37:03  阅读:260  来源: 互联网

标签:网易 Python find 数值 我们 歌曲 str ID id


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

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("下载完成!")

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

 

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

 

 

 

标签:网易,Python,find,数值,我们,歌曲,str,ID,id
来源: https://www.cnblogs.com/Murmy/p/15759797.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有