自动下载歌单音乐
本帖基于“Python抓取全网音乐
https://www.52pojie.cn/thread-1358748-1-1.html
(出处: 吾爱破解论坛)
”
这位老哥的代码
弟弟叫我帮忙下载歌曲到u盘用于车载播放,想起在论坛里看到过这位老哥的代码就拿过来用了 但是在歌单里近300首歌曲要一首首输入名称下载还是有点过于繁琐,所以就自己动手进行增删减改。
第一次发帖的小白 代码质量辣眼请见谅{:1_896:}
实现功能:
1,在网易云播放器中将歌单歌曲全部下载后 提取歌曲名称存为 songsname.txt
2,自动下载歌单 songname.txt中的歌曲
q:为什么不直接用爬虫爬取歌单里的歌曲名称,还要先下载一次呢?
a:技术不到位,爬取歌单最多只爬出10首 剩下的不知道为什么爬取不到,有老哥能指教一下的话万分感谢。
q:既然都直接在网易云里下次了我还要这干嘛呢?
a:网易云下载下来后好多歌曲的是ncm格式,但是在车载上播放不了。
使用方法:
import os
file_dir = "D:\CloudMusic\新建文件夹"
for files in os.walk(file_dir, topdown=False):
files = files
songs_name_list = []
for i in files:
songs_name = ''
for item in i:
if item != '-':
songs_name += item
else:
songs_name_list.append(songs_name)
break
print(songs_name_list)
withopen('songsname.txt','w',encoding='utf-8') as f:
for i in songs_name_list:
f.write(i)
f.write('\n')
f.close()
1,将file_dir = "D:\CloudMusic\新建文件夹"的路径改为你网易云下载储存的路径,运行后得到songsname.txt 文件
import requests
import jsonpath
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"
}
def choose_():
print("——————————")
print("1-网易")
print("2-QQ")
print("3-酷狗")
print("4-酷我")
types = int(input("请选择搜索引擎:"))
if types == 1:
type = "netease"
elif types == 2:
type = "qq"
elif types == 3:
type = "kugou"
elif types == 4:
type = "kuwo"
else:
print("输入有误,程序已退出!")
exit()
return type
def down_(music_list):
count = 1
for i in music_list:
try:
keyword = i
data = {
'input': keyword,
'filter': 'name',
'type': type,
'page': '1'
}
url = "https://tool22.com/zb_tools/ajax.php?act=MusicTools"
url_html = requests.post(url, headers=headers, data=data).json()
titles = jsonpath.jsonpath(url_html, "$..title")
authors = jsonpath.jsonpath(url_html, "$..author")
urls = jsonpath.jsonpath(url_html, "$..url")
lrcs = jsonpath.jsonpath(url_html, "$..lrc")
hash = urls
lrc2 = lrcs
name = titles + " - " + authors
save(name,lrc2,hash)
print('已下载',count,'首')
count += 1
except:
continue
def save(name,lrc2,hash):
url_data = requests.get(hash, headers=headers).content
with open(name + ".lrc", "w") as f:
f.write(lrc2)
with open(name + ".mp3", "wb") as f:
f.write(url_data)
print("——————————")
print("{} —— 已下载".format(name))
def music_list():
str_list = []
str_ = ''
fo = open("songsname.txt", "r",encoding='utf-8')
str = fo.read()
for i in str:
if i != '\n':
str_ += i
else:
str_list.append(str_)
str_ = ''
fo.close()
return str_list
if __name__ == '__main__':
type = choose_()
music_list = music_list()
down_(music_list)
2,将songsname.txt文件与本代码放到同一文件夹内,运行程序即可
再次感谢乐于分享的老哥们。辣眼代码水平见谅{:1_896:} Python菜鸟帮顶,感谢楼主分享 阿跃蜀黍 发表于 2021-2-8 19:26
看到我帖子了老哥加油,支持支持
嘿嘿 老哥牛
没咋搞懂 就基本都没动你的代码hahhhh
直接照搬 这玩意儿不会用啊
页:
[1]