QQ音乐的各种相关API

简介:   QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证,而且返回信息里面只有URL,没有一些相关的属性信息。

 

QQ音乐的各种相关API

分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报

基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证,而且返回信息里面只有URL,没有一些相关的属性信息。所以就想方设法弄到了QQ音乐的API

已经用xCode尝试过并且可行的API:
搜索音乐(歌词)
http://shopcgi.qqmusic.qq.com/fcgi-bin/shopsearch.fcg?value=歌曲名&artist=歌手名&type=qry_song&out=json&page_no=页码&page_record_num=单页记录数量
这个网上搜索不到的,自己用fiddler抓出来的,会返回一个json,注意的是返回的json的key没有用引号引起来而且需要对URL本身和返回的内容使用gb2312编(解)码
看这样一个例子:

 

复制代码

  1.        NSString *title=@"记得";
  2.        NSString *artist=@"林俊杰";
  3.        
  4.        //-使用歌名和歌手执行搜索
  5.        NSString *searchURLString=[NSString stringWithFormat:@"http://shopcgi.qqmusic.qq.com/fcgi-bin/shopsearch.fcg?value=%@&artist=%@&type=qry_song&out=json&page_no=%i&page_record_num=%i",title,artist,1,3];
  6.        searchURLString=[searchURLString stringByAddingPercentEscapesUsingEncoding:NSGB2312StringEndoding];
  7.        NSString *searchResult=[NSString stringWithContentsOfURL:[NSURL URLWithString:searchURLString] encoding:NSGB2312StringEndoding error:nil];
  8.        NSLog(@"%@",searchResult);


就会得到这样的不标准json,之后的步骤简单的就说下,截取searchCallBack()中间的内容,对key进行加引号,然后就可以用json解码框架来解码

 

复制代码

  1. searchCallBack({result:"0",msg:"",totalnum:"138",curnum:"3",search:"记得",songlist:[{idx:"1",song_id:"1679711",song_name:"记得",album_name:"上海老歌 CD07",singer_name:"欧阳飞莺(Chu Shia)",location:"8",singer_id:"16343",album_id:"133528",price:"250"},{idx:"2",song_id:"1516144",song_name:"记得",album_name:"小精选",singer_name:"刘浩龙",location:"3",singer_id:"4797",album_id:"122193",price:"250"},{idx:"3",song_id:"1512932",song_name:"记得(《爱情睡醒了》插曲)",album_name:"爱情睡醒了",singer_name:"林俊杰",location:"8",singer_id:"4286",album_id:"121988",price:"320"}]})



下载歌词
搜索完成后,每首歌曲会对应一个price属性,如果这个属性对应的值是250就说明没有歌词,确认有歌词,就可以用下面的接口下载歌词
http://music.qq.com/miniportal/static/lyric/歌曲id求余100/歌曲id.xml
如果正常会返回这样的xml(json的返回地址没抓到)

看这个例子:
前一个例子中返回的第三首歌有的price属性值为320,表示有歌词,如果下载这首歌的歌词,就用这个url:
http://music.qq.com/miniportal/static/lyric/32/1512932.xml
腾讯就会送回这样的xml

 

复制代码

  1. [ti:记得]
  2. [ar:林俊杰]
  3. [al:288966]
  4. [offset:0]
  5. [00:17.55]谁还记得
  6. [00:19.33]是谁先说永远的爱我
  7. [00:26.03]以前的一句话
  8. [00:29.02]是我们以后的伤口
  9. [00:33.75]过了太久
  10. [00:35.47]没人记得当初那些温柔
  11. [00:42.40]我和你手牵手
  12. [00:45.36]说要一起走到最后
  13. [01:06.37]我们都忘了
  14. [01:11.05]这条路走了多久
  15. [01:15.11]心中是清楚的
  16. [01:17.49]有一天有一天都会停的
  17. [01:23.04]让时间说真话
  18. [01:26.94]虽然我也害怕
  19. [01:31.00]在天黑了以后
  20. [01:33.29]我们都不知道会不会有以后
  21. [01:41.82]谁还记得
  22. [01:43.61]是谁先说永远的爱我
  23. [01:50.24]以前的一句话
  24. [01:53.24]是我们以后的伤口
  25. [01:57.77]过了太久
  26. [01:59.44]没人记得当初那些温柔
  27. [02:06.20]我和你手牵手
  28. [02:09.07]说要一起走到最后
  29. [02:30.40]我们都累了
  30. [02:34.44]却没办法往回走
  31. [02:38.34]两颗心都迷惑
  32. [02:40.69]怎么说怎么说都没有救
  33. [02:46.22]亲爱的为什么
  34. [02:50.21]也许你也不懂
  35. [02:54.11]两个相爱的人
  36. [02:56.65]等着对方先说找分开的理由
  37. [03:05.15]谁还记得爱情开始变化的时候
  38. [03:13.52]我和你的眼中
  39. [03:16.49]看见了不同的天空
  40. [03:21.09]走的太远
  41. [03:22.77]终于走到分岔路的路口
  42. [03:29.40]是不是你和我
  43. [03:32.40]要有两个相反的梦
  44. [03:40.84]谁还记得
  45. [03:42.60]是谁先说永远的爱我
  46. [03:49.38]以前的一句话
  47. [03:52.22]是我们以后的伤口
  48. [03:56.82]过了太久
  49. [03:58.44]没人记得当初那些温柔
  50. [04:05.48]我和你手牵手
  51. [04:08.15]说要一起走到最后
  52. [04:21.42]我和你手牵手
  53. [04:24.36]说要一起走到以后
  54. ]]>



如果你用price为250的歌曲对应的id来搜索,比如第一个例子中的第一首歌,那么你使用的这个url:
http://music.qq.com/miniportal/static/lyric/11/16797.xml

那么就会送回404错误信息:

 

复制代码

  1. The requested URL '/miniportal/static/lyric/11/1679711.xml' was not found on this server.



获取专辑插图
如果需要获取专辑插图,就可以使用下面的接口
http://imgcache.qq.com/music/photo/album/专辑id求余100/albumpic_专辑id_0.jpg
看这个例子:
要获取第一个例子的中的第三个结果的专辑插图,就这么用:
http://imgcache.qq.com/music/photo/album/88/albumpic_121988_0 .jpg
就会返回500*500的插图(QQ音乐的插图清晰度很高)

获取排行榜(尚未经过xCode测试)
目前抓到两个排行榜的地址:
新歌榜:http://music.qq.com/musicbox/shop/v3/data/hit/hit_newsong.js
总榜:http://music.qq.com/musicbox/shop/v3/data/hit/hit_all.js

因为还没有进行进一步的尝试就不放例子了

获取音乐地址
http://stream1歌曲信息中的location值.qqmusic.qq.com/3歌曲ID(7位数,不足在前面补0). mp3
例如之前搜索出来的第一首歌的地址应该是:
http://stream18.qqmusic.qq.com/31679711. mp3
第二首歌的地址应该是
http://stream13.qqmusic.qq.com/31516144. mp3

这个仍然在测试中

希望对和我一样正在努力做在线音乐的童鞋有些帮助

[ 此帖被hxy060799在2012-09-09 11:20重新编辑 ]

 

目录
相关文章
|
9月前
|
机器学习/深度学习 自然语言处理 算法
小红书:通过商品标签API自动生成内容标签,优化社区推荐算法
小红书通过商品标签API自动生成内容标签,提升推荐系统精准度与用户体验。流程包括API集成、标签生成算法与推荐优化,实现高效率、智能化内容匹配,助力社交电商发展。
|
小程序
仿qq音乐播放微信小程序模板源码
手机qq音乐应用小程序,在线音乐播放器微信小程序网页模板。包含:音乐歌曲主页、推荐、排行榜、搜索、音乐播放器、歌单详情等。
377 1
|
人工智能 机器人 API
AppFlow:将文心智能体加入你的社交群聊
通过阿里云AppFlow,只需简单配置,无需编写代码,即可将百度文心智能体接入钉钉群聊,为群聊添加一个专业的AI助手。本文以钉钉群聊为例,详细介绍了如何创建钉钉应用、AI卡片、配置AppFlow连接流以及创建钉钉机器人,最终实现AI助手在群聊中的应用。
1027 9
|
数据采集 SQL 数据库
小说爬虫-01爬取总排行榜 分页翻页 Scrapy SQLite SQL 简单上手!
小说爬虫-01爬取总排行榜 分页翻页 Scrapy SQLite SQL 简单上手!
521 0
|
JSON JavaScript 数据格式
vue 格式化展示json(含彩色样式)
vue 格式化展示json(含彩色样式)
1191 1
|
JSON API 数据格式
网易云音乐随机歌曲调用API接口
网易云音乐随机歌曲调用API接口
|
持续交付 Android开发 开发者
构建高性能微服务架构:后端开发的终极指南构建高效Android应用:Kotlin与Jetpack的完美结合
【5月更文挑战第28天】 在现代软件开发的浪潮中,微服务架构已经成为了设计灵活、可扩展且易于维护系统的重要模式。本文将深入探讨如何构建一个高性能的微服务架构,涵盖从基础概念理解到实践策略部署的全过程。我们将讨论关键的设计原则、技术选型、性能优化技巧以及安全性考虑,旨在为后端开发者提供一个全面的指南,帮助他们构建出能够适应快速变化的市场需求和技术挑战的系统。 【5月更文挑战第28天】 在移动开发的世界中,效率和性能是衡量一个应用成功与否的关键因素。本文将深入探讨如何通过结合Kotlin语言和Android Jetpack组件,来构建一个既高效又易维护的Android应用。我们将透过实际案例分析
|
数据采集 Web App开发 JavaScript
vscode跟踪vue代码方法
vscode跟踪vue代码方法
563 0
|
存储 移动开发 JavaScript
使用vue互联QQ音乐完成网站音乐播放器
记录使用APlayer播放器+MetingJs实现 在线播放qq音乐、网易云音...等平台的音乐
952 1
使用vue互联QQ音乐完成网站音乐播放器
|
机器学习/深度学习 API Python
阿里云DSW实例wandb使用示例
wandb是一个免费的,用于记录实验数据的工具。wandb相比于tensorboard之类的工具,有更加丰富的用户管理,团队管理功能,更加方便团队协作。本文主要演示如何在阿里云DSW实例中使用wandb。
2492 1

热门文章

最新文章