使用Java调用音乐开放API,并进行播放

news2024/11/30 10:39:07

使用Java调用音乐开放API,并进行播放

在这里插入图片描述

背景描述

电脑没有下载音乐软件,使用网页播放又不太方便,所有就想着使用Java语言直接调用音乐开放API,然后进行播放音乐。

具体代码如下,包含了注释

package com.lowkey.complex.music;

import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.lowkey.complex.util.HttpClientUtil;
import javazoom.jl.player.Player;
import org.slf4j.LoggerFactory;

import java.io.BufferedInputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.List;

public class MusicMain {
    //设置Main函数的日志级别
    static {
        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        List<Logger> loggerList = loggerContext.getLoggerList();
        loggerList.forEach(logger -> logger.setLevel(Level.INFO));
    }

    private static final org.slf4j.Logger logger = LoggerFactory.getLogger(MusicMain.class);
    static Player player = null;

    public static void main(String[] args) throws Exception {

        getMusic();
        // 等待播放结束(这里仅作为示例,实际应用中可能需要更复杂的控制逻辑)
        while (player.isComplete()) {
            getMusic();
        }
    }

    public static void getMusic() {
        try {
            // 1、根据歌曲id解析歌曲
            //https://dataiqs.com/api/netease/music/?type=songid&id=2026224214
            String randomMusic = "https://dataiqs.com/api/netease/music/?type=random";
            HttpClientUtil httpClientUtil = new HttpClientUtil();
            String post = httpClientUtil.post(randomMusic);
            logger.debug("post:{}", post);
            HashMap<String, JSONObject> hashMap = JSON.parseObject(post, HashMap.class);

            JSONObject data = hashMap.get("data");
            String musicUrl = data.get("song_url").toString();
            //编写一个音乐播放的程序
            String url = "http://m10.music.126.net/20240410171109/2df65763e8e66dbea0ce10e9ab3d8cee/ymusic/0630/fa15/769e/e739439db8aa7cebfe82e1f5800eca3d.mp3";
            // 打开网络连接并获取输入流
            URLConnection connection = new URL(musicUrl).openConnection();
            BufferedInputStream in = new BufferedInputStream(connection.getInputStream());

            // 创建Player对象并开始播放
            player = new Player(in);
            player.play();
        } catch (Exception e) {
            logger.error("异常了:", e);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1602858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于改进遗传算法的配电网故障定位(matlab代码)

1 主要内容 该程序复现文章《基于改进遗传算法的配电网故障定位》&#xff0c;将改进的遗传算法应用于配电网故障定位中, 并引入分级处理思想, 利用配电网呈辐射状的特点, 首先把整个配电网划分为主干支路和若干独立区域, 再利用该算法分别对各独立区域进行故障定位, 然后进行…

node.js服务器动态资源处理

一、node.js服务器动态资源处理与静态资源处理的区别&#xff1f; 静态与动态服务器主要区别于是否读取数据库&#xff0c;若然在数据库中的资料处理中将数据转换成可取用格式的结构&#xff0c;也就是说把对象转化为可传输的字节序列过程称为序列化&#xff0c;反之则为反序列…

她在《繁花》大放异彩,“浪姐”暴瘦15斤,打脸了不看好她的观众

不知不觉&#xff0c;《浪姐》已经迎来第5季了。播到第4季的时候&#xff0c;改名成《乘风破浪2023》&#xff0c;这一季叫《乘风2024》&#xff0c;和前几季相比&#xff0c;热度依然不减。 都说3个女人一台戏&#xff0c;更何况这个节目&#xff0c;每次能请到30位姐姐&…

再生龙(Clonezilla)网络克隆linux系统实现迁移——筑梦之路

官方网站&#xff1a;Clonezilla - 簡介 环境说明 源端&#xff1a;CentOS 7 操作系统的虚拟机&#xff0c;硬盘大小为 40GiB&#xff0c;分为 1GiB 的 /boot&#xff08;启动&#xff09;分区、4GiB 的 swap&#xff08;交换&#xff09;分区和 35GiB 的 /&#xff08;根&…

LeetCode236:二叉树的最近公共祖先

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以是…

二分查找的时间复杂度的讲解

二分查找的代码&#xff1a; 二分查找的时间复杂度&#xff1a; 最坏的情况&#xff1a; 就是找不到和查找区间只剩一个值的时候&#xff0c;这两种都是最坏的结果&#xff0c;假设查找了x次&#xff0c;达到了最坏的结果&#xff1a; N代表每一次折半区间数据的个数&#xf…

【C语言】——字符串函数的使用与模拟实现(下)

【C语言】——字符串函数的使用与模拟实现&#xff08;下&#xff09; 前言五、长度受限类字符串函数5.1、 s t r n c p y strncpy strncpy 函数5.2、 s t r n c a t strncat strncat 函数5.3、 s t r n c m p strncmp strncmp 函数 六、 s t r s t r strstr strstr 函数6.1、函…

20240329-1-SVM面试题

SVM面试题 1. SVM直观解释 SVM&#xff0c;Support Vector Machine&#xff0c;它是一种二分类模型&#xff0c;其基本模型定义为特征空间上的间隔最大的线性分类器&#xff0c;间隔最大使它有别于感知机&#xff1b;其还包括核技巧&#xff0c;这使它成为实质上的非线性分类…

使用SpringBoot将中国地震台网数据保存PostGIS数据库实践

目录 前言 一、数据转换 1、Json转JavaBean 2、JavaBean与数据库字段映射 二、空间数据表设计 1、表结构设计 三、PostGIS数据保存 1、Mapper接口定义 2、Service逻辑层实现 3、数据入库 4、运行实例及结果 总结 前言 在上一篇博客中基于Java的XxlCrawler网络信息爬…

解决yarn第一次使用无法运行的问题

报错&#xff1a; yarn : 无法加载文件 D:\program software\NVM\nvm\v16.20.0\yarn.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Execution_Policies。 所在位置 行:1 字符: 1 …

鲲鹏920RDMA应用示例代码

当前针对鲲鹏920服务器&#xff0c;编写了RDMA通信传输代码&#xff0c;首先采用TCP socket进行管理信息获取&#xff0c;然后调用verbs函数接口进行数据传输。需要安装rdma-core-devel库才可以编译 代码如下&#xff1a; /** rdma_lib.h** Created on: 2021年1月1日* A…

java激活

此破解码适合2023所有版本 找到idea64.exe.vmoption添加下面三行 链接:破解包下载 提取码:jqw1

软件工程 考研复试常考知识点总结

软件工程 什么是软件工程&#xff0c;这门课讲的什么&#xff1f; 软件工程就是把软件的开发、运行、维护的各个阶段进行系统化和规范化的过程&#xff0c;也就是把工程化的方法运用在软件技术之中&#xff0c;以构建和维护高质量的软件。 进一步&#xff0c;什么是工程化思想…

0基础学习SQL注入之万能账号密码(BUUctf例题-[极客大挑战 2019]EasySQL1)

做题 借助例题[极客大挑战 2019]EasySQL1来理解SQL注入中的万能账号密码。 我们现解题&#xff0c;解题过程中的知识点在后面都会说到。 打开网址&#xff0c;我们看到的是这个界面。根据题目提示应该是属于SQL注入类型的 1.寻找注入点&#xff0c;很明显&#xff0c;输入用…

JDK17的Mybatis-Plus报错问题

添加 --add-opens java.base/java.langALL-UNNAMED

物理机安装centos7并配置基本环境,网络配置,docker配置

1.首先下载镜像Download 2.下载UltraISO 安装docker 第1步&#xff1a;卸载当前版本docker yum erase docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \do…

unity制作拼接地图

前段时间有个朋友问我想要制作一款地图编辑器&#xff0c;最开始我还想着在一个平面用节点切割制作地图编辑器这倒是也行&#xff0c;但不太好控制每一个点&#xff0c;如果未来项目大了&#xff0c;更加不好维护。 偶然间翻到一篇文章&#xff1a;unity地图边缘检测 或许我们…

升级啦!探索全新 StarRocks 中文社区与高效使用秘籍!

眼尖的朋友可能已经注意到&#xff0c;StarRocks 中文社区最近换上了全新的皮肤。是的&#xff0c;我们 StarRocks 的聚集地升级了&#xff01;&#x1f389; 自成立两年半以来&#xff0c;StarRocks 中文社区不断壮大&#xff0c;现已发展成为一个拥有数万名成员的活跃社区。…

2024年团队程序设计天梯赛模拟赛 L1 + L2

目录 L1 - 6 剪切复制 L1 - 8 小偷踩点 L2 - 1 推宝塔 L2 - 2 含茶量 L2 - 3 到底爱不爱我 L2 - 4 寻宝图 L1 - 6 剪切复制 使用计算机进行文本编辑时常见的功能是剪切功能&#xff08;快捷键&#xff1a;Ctrl X&#xff09;。请实现一个简单的具有剪切和粘贴功能的文本…

MSSQL 命令行操作说明 sql server 2022 命令行下进行配置管理

说明&#xff1a;本文的内容是因为我在导入Access2019的 *.accdb 格式的数据时&#xff0c;总是出错的背景下&#xff0c;不得已搜索和整理了一下&#xff0c;如何用命令行进行sql server 数据库和用户管理的方法&#xff0c;作为从Access2019 直接导出数据到sql server 数据库…