简单几步实现网络音乐播放器(Qt版百度FM)

                                                                           百度FM音乐Qt版本

      很久之前写的软件了,一直没有总结,也懒得继续开发了,这里简单总结一下,也算是对自己的努力一个交代吧。

       先来个ubuntu下的

简单几步实现网络音乐播放器(Qt版百度FM)_第1张图片

再来一张Win10下的   

 简单几步实现网络音乐播放器(Qt版百度FM)_第2张图片


       起源:不大习惯打开一个浏览器听歌,在Ubuntu下一直用Y. T. Chung兄的豆瓣FM ,但是豆瓣貌似不支持客户端了,于是自己动手写了一个,凑合用吧。

程序功能:
1.支持百度账号登录(登录享受更好的试听体验哦。。),该功能未完善(验证码部分未完成)
2.可根据喜好选台,被选电台做出标记
3.实时歌词显示
4.歌手图片圆形旋转展示
5.播放进度显示(同步歌词和图片)

6.歌曲下载

       其实动手写一个软件还是蛮简单的,首先肯定是上网搜索相关的素材了,因为百度的API研究的人多,于是决定拿下它,给大家推荐一篇文章,一去二三里 大神的系列博文里面有一篇Qt实现网络播放器 介绍了怎么去写一个播放器,但是自己要实现起来还是要费一番功夫的,而且百度API已经更新了。

      先说明一下获取音乐的思路吧,当从浏览器打开百度FM的时候浏览器地址栏里面的链接是不能用来直接下载或者使用网络播放器收听的,因为百度已经做了封装,目的肯定是为了版权啊之类啦。要想获取真实的链接就要看看人家官方是怎么做的,先插入一个百度FM的播放图

简单几步实现网络音乐播放器(Qt版百度FM)_第3张图片

具体操作请自行登录操作。先说一个概念“输入网址”是指要访问的网址,也可以理解为在浏览器中打开该网址

大致分为以下流程:

1.获取频道列表:

输入网址为http://fm.baidu.com/dev/api/?tn=channellist

返回格式为json格式如下图示。

我们需要的有两个东西1).频道名称;2).频道id(最重要)

具体怎么解析json,请自行查询相关资料,仔细观察下图可以获取上面两个信息

比如第一个频道 解析结果为

名称(channel_name): 

        漫步春天

频道id(channel_id):

public_tuijian_spring

简单几步实现网络音乐播放器(Qt版百度FM)_第4张图片

2.根据第一步查询到的频道,来获取该频道下的歌曲列表网址为

输入网址:http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=频道列表

比如第一步骤中获取的频道为 粤语则 字符串为'public_yuzhong_yueyu'

那么完整的网址为http://fm.baidu.com/dev/api/?tn=playlist&format=json&id=public_yuzhong_yueyu

返回的结果如下图所示

简单几步实现网络音乐播放器(Qt版百度FM)_第5张图片

3.根据第二步中的歌曲列表中的id获取歌曲的“真实”链接

上图中的id就是歌曲的id了(比如第一个歌曲id为1425872),通过该id今儿可以获取到歌曲的全部信息

输入网址:http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=歌曲ID

http://music.baidu.com/data/music/fmlink?type=mp3&rate=320&songIds=341864的返回如下图所示

简单几步实现网络音乐播放器(Qt版百度FM)_第6张图片

观察上图很明显可以得到 歌曲名,艺术家,专辑,歌手图片,歌词链接,歌曲的真实下载地址

1)songName为'\u7231\u4e0e\u75db\u7684\u8fb9\u7f18' 翻译成可识别的为  《爱与痛的边缘》


2)artistName歌手

3)albumName专辑名

4)songPicSmall,songPicBig的链接分别是歌手的小图和大图

5)lrcLink歌词链接

6)songLink歌曲的真实下载链接


是不是很简单呢

最后奉上代码下载地址https://github.com/spygg/QBaiduFm

尽情的给我个star吧


你可能感兴趣的:(Linux,编程,Qt编程,Windows编程,C/C++)