首先向大家推荐一个github上的一个项目,是关于网易云音乐的一个APIservice,这个小的自动获取的程序就是建立在这个项目的基础之上的

项目地址
程序需要的基础

  1. 电脑上已将找好了node.js
  2. 使用npm install,或者也可以使用yarn install安装项目需要的依赖文件
  3. 下载解析json的jar包,这里我使用的是JSON.jar

    出现类似这样的界面就是项目启动成功了,可以在浏览器中进行访问

通过查看文档可以得到,得到音乐下载地址的步骤是

歌单详情
长方形
获取音乐id
获取音乐的url

我们得到的文件是一个json文件,于是我们就需要使用java的json库进行解析得到我们想要的文件

package RTTI;import org.json.JSONArray;
import org.json.JSONObject;import java.io.*;
import java.util.HashMap;
import java.util.Map;public class JSON {public static Map<String, Integer> getSongId(String fileName){Map<String, Integer> songMap = new HashMap<>();try {BufferedReader reader = new BufferedReader( new FileReader(fileName));String data = reader.readLine();JSONObject jo = new JSONObject(data);JSONObject jo1 = jo.getJSONObject("playlist");Boolean b = jo1.getBoolean("subscribed");System.out.println(b);JSONArray jo2 = jo1.getJSONArray("tracks");for(int i=0; i<jo2.length(); i++){JSONObject temp = (JSONObject) jo2.get(i);int id = temp.getInt("id");String name = temp.getString("name");songMap.put(name, id);}return songMap;} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null ;}public static String getSongUrl(String fileName){String url = "" ;try {BufferedReader reader = new BufferedReader(new FileReader(fileName));String data = reader.readLine();JSONObject jo = new JSONObject(data);JSONArray ja = jo.getJSONArray("data");JSONObject jo1 = ja.getJSONObject(0);Object object = jo1.get("url");if(object instanceof String){System.out.println("ok");return (String)object;}elsereturn "";} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return url ;}
}

上面的类是用来的解析json文件,得到自己需要的id的

package RTTI;import org.json.JSONArray;
import org.json.JSONObject;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Map;
import java.util.Set;public class Download {public static void  downLoadFromUrl(String urlStr,String fileName,String savePath) throws IOException {URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection)url.openConnection();//设置超时间为3秒conn.setConnectTimeout(3*1000);//防止屏蔽程序抓取而返回403错误conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");//得到输入流InputStream inputStream = conn.getInputStream();//获取自己数组byte[] getData = readInputStream(inputStream);//文件保存位置File saveDir = new File(savePath);if(!saveDir.exists()){saveDir.mkdir();}File file = new File(saveDir+File.separator+fileName);FileOutputStream fos = new FileOutputStream(file);fos.write(getData);if(fos!=null){fos.close();}if(inputStream!=null){inputStream.close();}System.out.println("info:"+url+" download success");}/*** 从输入流中获取字节数组* @param inputStream* @return* @throws IOException*/public static  byte[] readInputStream(InputStream inputStream) throws IOException {byte[] buffer = new byte[1024];int len = 0;ByteArrayOutputStream bos = new ByteArrayOutputStream();while((len = inputStream.read(buffer)) != -1) {bos.write(buffer, 0, len);}bos.close();return bos.toByteArray();}public static void main(String[] args) {FileWriter fileWriter = null ;try {fileWriter = new FileWriter("d:\\url.txt");} catch (IOException e) {System.out.println("文件创建失败");}//通过第一次获得的是关于歌曲的name和对应的idMap<String, Integer> songMap = JSON.getSongId("d:\\id.json");Set name = songMap.keySet();Object[] names = name.toArray();for(int i=0; i<names.length; i++){//然后我们通过歌曲的id,循环得到歌曲对应的具体的json文件//其中就包含了我们想要的下载地址的urltry{downLoadFromUrl("http://127.0.0.1:3000/song/url?id="+songMap.get(names[i]),"temp.json","d:/");}catch (Exception e) {// TODO: handle exception}//通过第二次解析,我们的到的是所有歌曲的json文件中的urlString url = JSON.getSongUrl("D:\\temp.json");if(url=="") continue;try {//进行保存歌曲文件downLoadFromUrl(url,  names[i]+".mp3", "e:/song");} catch (IOException e) {e.printStackTrace();}}}
}

首先的得到了一个歌单的json文件,就是在主函数中的d:\id.json

上面这个类实现的功能是通过得到的url地址将文件保存到本地

最后贴上一张效果图

最后,如果什么问题或者疑问欢迎提出,大家一起讨论,一起进步

使用java自动下载网易云音乐相关推荐

  1. 如何自动下载网易云音乐评论

    本次例子是如何用Selenium来自动获取网易云某首歌的评论 例如许飞的父亲写的散文诗:https://music.163.com/#/song?id=417250673. 1.准备工作 首先需要下载 ...

  2. 零基础也能看懂python_零基础也能看懂的Python下载网易云音乐爬虫

    Python Selenium(配置方法参照:Selenium配置) Chrome浏览器(其它的也可以,需要进行相应的修改) 解析 以前抓取过网易云网页的朋友可能都清楚网易云有反爬虫策略的,post时 ...

  3. Python3批量下载网易云音乐热歌榜

    Python3批量下载网易云音乐热歌榜 可以批量下载网易云音乐热歌榜的歌曲,可以自己设定数量,速度非常快. https://music.163.com/#/discover/toplist?id=37 ...

  4. 如何下载网易云音乐APP里的MV和短视频?

    本人:网易云音乐死粉,朋友圈大多都用的是云音乐,因为推荐功能牛逼 然后:发现云音乐APP里越来越多吸引我的短视频,经常看到好的就想保存到相册,然后微信发给朋友 但是:不知道怎么下载网易云音乐的短视频, ...

  5. 使用Python实现下载网易云音乐的高清MV

    Python下载网易云音乐的高清MV,没有从首页进去解析,直接循环了.... downPage1.py ''' 想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经 ...

  6. 不登录,不用任何技术,一分钟下载网易云音乐

    最近在写 Python 爬虫,想爬取网易云的歌曲并下载或者保存 Url 到 MongoDB,发现了一个可以快速下载网易云歌曲的方式,不需要登录,也不需要什么技术,简单几步就可以网易云上的音乐. 因此分 ...

  7. 利用 Python 一键下载网易云音乐 10W+ 乐库

    如果你常听音乐的话,肯定绕不开网易云,作为一款有情怀的音乐 App,我对网易云也是喜爱有加.虽然说现在都已经是 5G 时代了,大家的手机流量都绰绰有余,但在线播放还是不如本地存着音乐文件靠谱,今天我们 ...

  8. python 爬虫爬取下载网易云音乐歌单的歌曲(需要使用JS的加密方法得出params去获取下载地址)

    要点:1.js加密就是麻烦,只能百度寻找了!设计的加密模块binascii.Crypto.base64 2.requests.Session的用法,可以指定headers.cookies 3.可以用s ...

  9. Python下载网易云音乐(云音乐飙升榜)

    最近突然想用python写一个自动下载的工具,于是就先拿网易云来练练手,并把过程中的心得写下来便于后面有想玩这个的童鞋们参考. 首先我们分析网页源码,找到我们想要的获取数据位置: 每一个标签对应着飙升 ...

  10. 下载网易云音乐的MV

    网易云音乐有很多经典视频, 但是苦于没有下载按钮...今天就记录下如何保存MV到本地, 又get一项新技能!!! 一. 安装360极速浏览器(非安利) 二. 打开网易云音乐客户端, 点击"等 ...

最新文章

  1. ゾーン10進数、パック10進数
  2. 各版本windows操作系统获取地址,sqlserver全版本数据库工具下载网站分享
  3. vuex - 基础篇
  4. 7-37 整数分解为若干项之和(20 分)
  5. 原来还有这样一个东西,重来不知道过-linux ,ulimit
  6. 关于HTTP协议及SOCKET通信
  7. 【CF#-931A】 Friends Meeting(思维)
  8. 官方晒中兴AXON 30 Pro真机亮屏谍照:第二代屏下摄像头技术提升明显
  9. TCP/IP:TCP SYN Flood攻击原理与实现
  10. 吴恩达神经网络和深度学习-学习笔记-37-inception网络
  11. jquery系列教程3-DOM操作全解
  12. 关于EPOLL的ET和LT模式的深入理解
  13. 深入剖析引用参数Ref和Out
  14. Spring的bean管理(xml方式)之Bean实例化的方式
  15. 【net core】VSCode调试NetCore Web项目问题集锦
  16. 写一篇meta分析要多少时间?如何写好一篇Meta分析,你需要这样做
  17. Excel/WPS之粘贴可见内容
  18. donet 微服务开发 学习-使用docker部署Asp.net core web应用程序
  19. google chrome 同步书签 查看gmail邮箱 谷歌浏览器同步助手
  20. 计算机多媒体教学一体机包括,学校使用多媒体教学触摸一体机应用效果的介绍...

热门文章

  1. Android实现手机静音,Android实现手机静音
  2. Python输出函数print()总结(python print())
  3. 关于计算机英语手抄报全国一等奖,获奖手抄报图片
  4. Pegasus 在 Apache Conf 上的分享
  5. python爬取LOL皮肤
  6. 腾讯产品策划运营类职位笔试题和参考答案
  7. mysql中data后面加什么_mysql中data_format用法
  8. Python地理数据处理 四:矢量数据读写(二)
  9. 一块硬盘的爱情故事,好揪心
  10. 中国医科大计算机在线作业答案,16秋中国医科大学《计算机应用基础(中专起点大专)》在线作业标准答案包100分...