如何使用数学软件 Matlab 进行 web 网络请求 API 应用教程(更新中)
Matlab中有关于web网络请求API的相关应用1、webread 读取内容从 RESTful Web 服务data = webread(url)从 url 指定的 Web 服务读取内容并在 data 中返回内容。返回的是结构体数组(struct array)等等类型如果想要存储数据,比如另存为Excel文件xlswrite%(不推荐)写入 Microsoft Excel 电子表格文件不推荐使用
·
1、webread 读取内容
从 RESTful Web 服务
data = webread(url)
从 url 指定的 Web 服务读取内容并在 data 中返回内容。
返回的是结构体数组(struct array)等等类型
如果想要存储数据,比如另存为Excel文件
xlswrite %(不推荐)写入 Microsoft Excel 电子表格文件
不推荐使用 xlswrite。请改用 writetable、writematrix 或 writecell。
xlswrite(filename,A)
将矩阵 A 写入 Microsoft® Excel® 电子表格工作簿 filename 中的第一个工作表,从单元格 A1 开始写入。
writetable(T)
将表 T 写入逗号分隔的文本文件。文件名为表的工作区变量名称,附加扩展名 .txt。
writetable(T,filename)
写入具有 filename 指定的名称和扩展名的文件。
# # First argument must be a table. struct2table(data)
writetable(___,Name,Value)
通过一个或多个 Name,Value 对组参数指定的其他选项将表写入文件中,并且可以包含以前语法中的任何输入参数。
- data = webread(url) 从网络请求中获取数据
- table = struct2table(data) 结构体数组转换成table表格
- writetable(table,filename) 将table表格写入文件中
data = webread(url,QueryName1,QueryValue1,...,QueryNameN,QueryValueN)
照一个或多个名称-值对组参数指定的方式将查询参数追加到 url。要将查询放入消息主体,请使用 webwrite。Web 服务定义查询参数。
2、webread 调用网易云 API
首先要通过Matlab读取音乐,并实现进行播放的功能。
[y,Fs] = audioread(filepath)
从名为 filename 的文件中读取数据,并返回样本数据 y 以及该数据的采样率 Fs。
player = audioplayer(y,Fs)
使用采样率 Fs 为信号 Y 创建 audioplayer 对象。该函数返回音频播放器对象 player。
play(player) 开始播放歌曲
stop(player) 终止播放歌曲
pause(player) 暂停播放歌曲
resume(player) 继续播放歌曲
我们这次的方法是调用网易云音乐的API接口,获取音乐源文件。
接口:处理加工后的接口:由 https://api.vvhan.com/ 提供
请求示例 (mp3 输出):
https://api.vvhan.com/api/rand.music?sort=热歌榜
请求示例 (JSON 输出):
https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜
具体过程
data = webread("https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜")
获取接口返回的数据,用变量data保存
data 数据
data.info的数据
name :歌曲的名称
auther :歌曲的歌手名称
picUrl : 歌曲的封面图片 地址
mp3url :歌曲源文件 MP3 地址
简单测试播放代码
data = webread("https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜");
music_infor = data.info
% 获取音频的数字信号y,和采样频率Fs
[y,Fs] = audioread(music_infor.mp3url);
% 使用采样率 Fs 为信号 Y 创建 audioplayer 对象。该函数返回音频播放器对象 player。
player = audioplayer(y,Fs);
% 开始播放 音频播放器对象 player
play(player);
3、GUI 随机音乐播放器
Player 对象函数
Player 对象函数 | Player 对象函数介绍 |
---|---|
get | 查询 audioplayer 对象的属性值 |
isplaying | 查询 audioplayer 对象的属性值 |
pause | 暂停播放或录制 |
play | 从 audioplayer 对象播放音频 |
playblocking | 播放 audioplayer 对象中的音频,保持控制权直到播放完成 |
resume | 从暂停状态继续播放或录制 |
set | 设置 audioplayer 对象的属性值 |
stop | 停止播放或录制 |
Player 对象属性
BitsPerSample - 采样位数。 正整数
CurrentSample - 当前播放的样本。 正整数
DeviceID - 音频设备标识符。 整数
NumChannels - 音频通道数 1 | 2
Running - 音频播放器状态 on | off
SampleRate - 采样频率 数值标量
TotalSamples - 音频数据的总长度 整数
Tag - 标签 字符向量
Type - 对象类名 'audioplayer'
UserData - 用户定义的数据 [] (默认) | 任意数据类型
StartFcn - 在开始时要执行的函数 字符向量 | 字符串标量 | 函数句柄
StopFcn - 在结束时要执行的函数 字符向量 | 字符串标量 | 函数句柄
TimerFcn - 要重复执行的函数 字符向量 | 字符串标量 | 函数句柄
TimerPeriod - 计时器周期 0.05 (默认) | 数值标量
Gui 界面设计
获取新的歌曲的代码:
global player time
data = webread("https://api.vvhan.com/api/rand.music?type=json&sort=热歌榜");
music_infor = data.info;
app.MusicName.Text = music_infor.name;
app.MusicSinger.Text = music_infor.auther;
% 获取音频的数字信号y,和采样频率Fs
[y,Fs] = audioread(music_infor.mp3url);
time = (length(y(:,1))/Fs);
Logo=imread(music_infor.picUrl);
app.MusicLogo.ImageSource = Logo;
app.MusicTime.Text = append('0:00',' / ',app.sec2ms(time));
% 使用采样率 Fs 为信号 Y 创建 audioplayer 对象。该函数返回音频播放器对象 player。
app.MusicHistory.Items(end+1) = {music_infor.name};
player = audioplayer(y,Fs);
play(player)
delete(timerfind)
function process(timer,event)
app.MusicProcess.Value = (player.CurrentSample / player.TotalSamples);
app.MusicTime.Text = append(app.sec2ms(time*(player.CurrentSample / player.TotalSamples)),' / ',app.sec2ms(time));
end
t = timer('StartDelay', 1,'Period', 1,'TasksToExecute', Inf,'ExecutionMode','fixedRate');
t.TimerFcn = @ process;
start(t)
更多推荐
所有评论(0)