此脚本仅用作学习交流之用,禁止任何个人及团体利用此脚本进行其他用途。
网易云平台的音乐的歌曲需要会员才能下载,而且使用其他工具下载此平台上的音乐大多只能一首一首下载。而我想要的是批量下载整个歌单的音乐。 所以我只做了这个脚本。很便利的下载网易云歌曲。 我已经将脚本文件上传到github仓库中,欢迎交流学习 python+IDM批量下载网易云音乐歌单歌曲,这个脚本的详细介绍也可以去仓库里看。
非常感谢github上的开源api提供的支持,web请求使用的是此api 网易云 NodeJS 版 API
使用的python工具,运行 python musics.py
,然后一步步按提示做就可以了
下载的歌曲会自己重命名。
- python3
- python的一些库:requests;subprocess;tqdm (没有的使用pip安装,在requirements.txt已列出)
import os
import json
import traceback
import requests
import time
import sys
from subprocess import call
from tqdm import tqdm
import cv2
import base64
import skimage.io
- IDM (歌单一般包含大量歌曲,使用idm多线程下载较好,而且idm应该电脑必备吧,用的人多。)
方式1: 点击下方链接下载.py文件 python+IDM批量下载网某平台音乐歌单歌曲 文件放的位置无所谓。 方式2
调出cmd,cd切到文件所在目录,并输入python musics.py 如下图
如果你要下载自己创建的歌单,一定要登录!
如果你下载的是那种公共的歌单(好几万播放量那种),是不用登录也可以下载的。
输入“y”或者"n"
我输入“y” 在第一版中我使用账号密码登录,但是考虑到安全性,我再第二版换成了扫描二维码登录,这样更加方便一些
输入歌单id,然后按回车键,脚本会收集歌单中所有歌曲的信息 如下图
注意:这里的进度条不是下载的进度条,这是分析id得到歌单下所有歌曲信息的进度条。你歌单的音乐越多,这步花费的时间越长。进度完成之后,会提示你是否下载。
补充:如果你不知道歌单的id怎么获取,请在文末“补充-获取歌单id”一节中了解。
会提示你是否下载 输入“y” 会提示文件保存路径和idm安装路径。 一般这俩不用管,一直回车就行。
将下载队列添加到idm中,脚本的使命就完成了。 剩下的活交给idm就行了。
不一会,idm队列就开始工作了,耐心等待下载就行了
脚本比较简单,就是调用一些api。 以下是比较重要的方法
# 判断密码是否正确
def confirmPassword(name,password,data):
#验证cookie可用性
def confirmCookie(cookies):
# 登录方法
def login():
# 获取歌单详情(包括介绍,名字等等)
def getListDetail(ids,cookie):
# 获取音乐真实下载地址
def getMusicUrl(id,cookie):
# 打包歌单的歌曲下载链接、歌名等,返回的是json数组对象 # 过程时间比较长,需要进度条
def publishDownLoad(ids,cookie) :
# idm下载
def IDMdownload(dl,file):
在这里贴一下idm下载的方法:
def IDMdownload(dl,file):# dl参数是列表,每个列表项为字典
idm_path=input("请输入idm软件存放地点,直接回车将使用默认路径")
if idm_path=="":
IDM = 'C:\\Program Files (x86)\\Internet Download Manager\\IDMan.exe'
else:
IDM=idm_path
if os.path.exists(IDM):
print("idm下载中......")
down_path = file+"\\"+ReplaceName(playlistName).strip()
# 建立文件夹
if os.path.exists(down_path):
pass
else:
os.mkdir(down_path)
for i in dl:
if i["url"]!=None:
down_url = i["url"]
str=i["name"]
name=ReplaceName(str)
output_filename=name.strip()+".mp3"
call([IDM, '/d',down_url, '/p',down_path, '/f', output_filename, '/n', '/a'])
print("idm正在下载,请打开idm查看下载进度")
else:
print("IDM程序不存在,将使用普通下载")
Comdownload(dl,file)
点击分享,点击“复制链接”
将复制的文本粘贴在一个地方,你会看到链接中有“id=xxxxxx”字样 那个数字就是歌单id
总体说来这个脚本比较简单,可以下载网某云歌单中的歌曲。但是,网易云无版权的歌曲是下载不了的。 有不明白的地方可以私信或者评论,我都尽可能答复的。