简单几步实现网络音乐播放器(Qt版百度FM)
百度FM音乐Qt版本
很久之前写的软件了,一直没有总结,也懒得继续开发了,这里简单总结一下,也算是对自己的努力一个交代吧。
先来个ubuntu下的
再来一张Win10下的
起源:不大习惯打开一个浏览器听歌,在Ubuntu下一直用Y. T. Chung兄的豆瓣FM ,但是豆瓣貌似不支持客户端了,于是自己动手写了一个,凑合用吧。
程序功能:
1.支持百度账号登录(登录享受更好的试听体验哦。。),该功能未完善(验证码部分未完成)
2.可根据喜好选台,被选电台做出标记
3.实时歌词显示
4.歌手图片圆形旋转展示
5.播放进度显示(同步歌词和图片)
6.歌曲下载
其实动手写一个软件还是蛮简单的,首先肯定是上网搜索相关的素材了,因为百度的API研究的人多,于是决定拿下它,给大家推荐一篇文章,一去二三里 大神的系列博文里面有一篇Qt实现网络播放器 介绍了怎么去写一个播放器,但是自己要实现起来还是要费一番功夫的,而且百度API已经更新了。
先说明一下获取音乐的思路吧,当从浏览器打开百度FM的时候浏览器地址栏里面的链接是不能用来直接下载或者使用网络播放器收听的,因为百度已经做了封装,目的肯定是为了版权啊之类啦。要想获取真实的链接就要看看人家官方是怎么做的,先插入一个百度FM的播放图
具体操作请自行登录操作。先说一个概念“输入网址”是指要访问的网址,也可以理解为在浏览器中打开该网址
大致分为以下流程:
1.获取频道列表:
输入网址为http://fm.baidu.com/dev/api/?tn=channellist
返回格式为json格式如下图示。
我们需要的有两个东西1).频道名称;2).频道id(最重要)
具体怎么解析json,请自行查询相关资料,仔细观察下图可以获取上面两个信息
比如第一个频道 解析结果为
名称(channel_name):
漫步春天
频道id(channel_id):
public_tuijian_spring
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
返回的结果如下图所示
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的返回如下图所示
观察上图很明显可以得到 歌曲名,艺术家,专辑,歌手图片,歌词链接,歌曲的真实下载地址
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吧
简单几步实现网络音乐播放器(Qt版百度FM)相关推荐
- 简单几步实现网络音乐播放器(Python爬虫版百度FM)
Python入门之爬取百度音乐 先说一下为什么会有这篇文章,首先肯定是有这个需求了,本人出差在外地,这里的网速卡到爆,根本支撑不了在线听歌的要求,所以就想下载到本地来慢慢听.这可是python的绝活, ...
- android网络音乐播放器
** 网络音乐播放器 ** 转载请指明博客网址 作者:WangYouHu我的主页网址 链接:https://www.jianshu.com/p/855659f266ae 著作权归作者所有,任何形式的转 ...
- 基于QT的网络音乐播放器(一)
自学Qt已经有一段时间了,但是始终感觉自己还是很弱(其实并不是感觉自己很弱,是自己本来就很弱,哈哈).自己也照着书上敲了几个例子,但觉得还是要写点东西才能真正运用起来.所以,前段时间就写了个很简单的音 ...
- 基于android的网络音乐播放器-添加viewpager和fragment实现滑动切换多个界面(二)
作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...
- 100个vc小项目开发:二、一步一点设计音乐播放器 [I]
100个vc小项目开发:二.一步一点设计音乐播放器 [源码解读] 文章作者: July 软件来源:开源 ================== 1.有不正之处,恳请指正. 2.本文贴出的是关键实现代码部 ...
- 全网首个tk网络音乐播放器!支持歌词滚动!你看我吊不?
这是一个用 Python 的 tkinter 库做的一个网络音乐播放器.我不说它的 UI 设计的有多好看,但是它的功能绝对是全站首个!坚持看到底,你不点赞算我输! 成果展示 程序截图 前期准备 程序结 ...
- android 收藏歌曲功能,基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)...
作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...
- 基于android的网络音乐播放器-播放音乐及收藏音乐的效果展示(四)
作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...
- 基于android的网络音乐播放器-回调实现音乐播放及音乐收藏的实现(三)
作为android初学者,最近把疯狂android讲义和疯狂Java讲义看了一遍,看到书中介绍的知识点非常多,很难全部记住,为了更好的掌握基础知识点,我将开发一个网络音乐播放器-EasyMusic来巩 ...
最新文章
- 在cell中取得UITableView所在的ViewController对象
- python中是干嘛的-python中def是做什么的
- engnix php 插件 管理_nginx配置支持php-fpm
- mariadb mysql 5.6_MySQL 5.6 和 MariaDB-10.0 的性能比较测试
- VBA编程教程(基础二)
- 2020博客之星结束了,感谢这些小伙伴们为我投票|博客之星TOP20的几位大佬
- vue react 写法区别
- 盘点:在造自行车的团队里,你最看好哪个?
- 传奇手游战神引擎开服教程架设教程工具全套图文教程
- 【安防监控】如何利用无人机技术严防夏天溺水?
- 综艺视频素材在哪下?怎么下载综艺高清视频?
- Kafka安装web界面监控工具(kafka-manager)
- 越是穷人,就越需要大数据
- 【科技与狠货】云盘变硬盘
- python蓝桥算法提高
- 群联MPALL(Rel) 7F V5.03.0A-DL07量产工具 PS2251-07(PS2307)
- 05-ubuntu安装mysql8
- 仿个人税务 app html5_你下载的个税APP可能是假的!当心抢你的钱!
- FOC——16.单片机最小系统
- Worthington丨Worthington 中性蛋白酶说明书
热门文章
- Ubuntu下搭建hadoop出现Permission denied (publickey,password)的问题
- Android 8.1 中Systemui中的常见修改(六)NavigationBar加载流程
- python人脸识别系统库_GitHub - mybug/face_collection: python的face_recognition人脸识别库的使用...
- .dll、.lib、.a的转换
- Uni-App从入门到实战
- 如何使用分布是缓存Hazelcast
- k8s探针检测php,k8s实践11:kubernetes监测探针简单测试
- STM32定时器延时函数
- 谭民机器人_科学网—中科院自动化所喻俊志,谭民研究员等:冰雪运动生物力学及其机器人研究进展 - 欧彦的博文...
- hybrid7 宝马active_宝马Active Hybrid 7:最快的混合动力轿车