吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4081|回复: 5
收起左侧

[Python 转载] 自动下载歌单音乐

[复制链接]
1678613071 发表于 2021-2-8 14:53
本帖基于
“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[2]:
songs_name = ''
for item in i:
if item != '-':
songs_name += item
else:
songs_name_list.append(songs_name)
break
print(songs_name_list)
with  open('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[0]
lrc2 = lrcs[0]
name = titles[0] + " - " + authors[0]

        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():
strlist = []
str
= ''
fo = open("songsname.txt", "r",encoding='utf-8')
str = fo.read()
for i in str:
if i != '\n':
str_ += i
else:
strlist.append(str)
str_ = ''
fo.close()
return str_list

if name == 'main':
type = choose_()
music_list = musiclist()
down
(music_list)




2,将songsname.txt文件与本代码放到同一文件夹内,运行程序即可


再次感谢乐于分享的老哥们。辣眼代码水平见谅{:1_896:}
Snipaste_2021-02-08_14-50-47.png
Snipaste_2021-02-08_14-51-58.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

17601243856 发表于 2021-2-8 16:06
Python菜鸟帮顶,感谢楼主分享
头像被屏蔽
阿跃蜀黍 发表于 2021-2-8 19:26
 楼主| 1678613071 发表于 2021-2-8 23:29
阿跃蜀黍 发表于 2021-2-8 19:26
看到我帖子了老哥加油,支持支持

嘿嘿 老哥牛
没咋搞懂 就基本都没动你的代码hahhhh
直接照搬
papapa 发表于 2021-2-9 01:46
这玩意儿  不会用啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 18:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表