我一直是QQ音乐的用户,最近想做一个应用,想用QQ音乐的API,搜索了很久无果,于是就自己分析QQ音乐的API。 前不久发现QQ音乐出了网页版的,是Flash的,但是,我用iPhone打开这个链接的时候,它居然自动跳转到一个地址了,居然跳转到http://soso.music.qq.com/ipad/player.html,看到这个地址,里面有个“ipad”我的第一反应是“难道是HTML5和JS写的”,我在iPhone上试用了一下,发现确实能用。由此得出,这个iPad版的QQ音乐不是Flash,我在电脑上打开了这个地址,发现可以打开,于是果断动了歪点子。“既然是HTML和JS写的,我果断就可以分析出QQ音乐里面的API啦!!!”于是马上动手看代码。

分析的过程就不说了,很快就初步得出下面的一个API了,通过这个可以获取到指定QQ号的QQ音乐列表:

HTTP请求格式:GET

返回格式:json

API地址:http://qzone-music.qq.com/fcg-bin/fcg_music_fav_getinfo.fcg

参数

意义

备注

dirinfo

是否返回用户音乐列表名称与id

为1时返回,为0时不返回

dirid

QQ音乐用户的列表id

 

uin

用户的QQ号码

 

p

随机函数生成的随机数

目前没发现有什么作用随便输一个数就好

例子:

1
GET http://qzone-music.qq.com/fcg-bin/fcg_music_fav_getinfo.fcg?dirinfo=1&dirid=1&uin=81549201&p=1212121

返回:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
jsonCallback({
    code:0,
    msg:"",
    uin:81549201,
    DirList:[
        {
            DirID:1,                //列表id
            DirName:"我最爱听",//列表名
            DirShow:1,//是否开放,1是,0否
            DirTime:1323078355//时间
        }
    ],
    SongDirID:2,//返回的列表id
    SongNum:1,//列表内歌曲数量
    CurNum:1,//当前播放歌曲排序
    SongList:[
        {
            i:1,//列表内歌曲的id
            type:13,//类型
            id:680277,//歌曲在曲库中id
            songname:"跨时代",//歌名
            singerid:4558,//歌手id
            singername:"周杰伦",//歌手名
            url:"http://stream5.qqmusic.qq.com/12680277.wma",歌曲地址
            diskid:56705,//专辑id
            diskname:"跨时代",//专辑名
            playtime:194//歌曲长度
        }
    ]
})

备注:

经过测试,这个API只能获取用户开放的列表,如果用户设定过只有自己可见的话,只能登录后才能获取,

1.获取用户列表

HTTP请求格式:GET

返回格式:json

API地址:http://qzone-music.qq.com/fcg-bin/fcg_music_fav_getinfo.fcg

参数

意义

备注

dirinfo

是否返回用户音乐列表名称与id

为1时返回,为0时不返回

dirid

QQ音乐用户的列表id

 

uin

用户的QQ号码

 

p

随机函数生成的随机数

目前没发现有什么作用随便输一个数就好

例子

GET http://qzone-music.qq.com/fcg-bin/fcg_music_fav_getinfo.fcg?dirinfo=1&dirid=1&uin=81549201&p=1212121

返回

jsonCallback({

code:0,

msg:”",

uin:81549201,

DirList:[

{

DirID:1,                //列表id

DirName:"我最爱听",//列表名

DirShow:1,//是否开放,1是,0否

DirTime:1323078355//时间

}

],

SongDirID:2,//返回的列表id

SongNum:1,//列表内歌曲数量

CurNum:1,//当前播放歌曲排序

SongList:[

{

i:1,//列表内歌曲的id

type:13,//类型

id:680277,//歌曲在曲库中id

songname:"跨时代",//歌名

singerid:4558,//歌手id

singername:"周杰伦",//歌手名

url:"http://stream5.qqmusic.qq.com/12680277.wma",歌曲地址

diskid:56705,//专辑id

diskname:"跨时代",//专辑名

playtime:194//歌曲长度

}

]

})

2.返回用户绿钻等级

HTTP请求格式:GET

返回类型:XML/json

API地址:http://qzone-music.qq.com/fcg-bin/fcg_vip_getlevel.fcg

参数

意义

备注

json

返回格式

为1时json,为0时XML

uin

用户的QQ号码

 

例子

GET http://qzone-music.qq.com/fcg-bin/fcg_vip_getlevel.fcg?json=1&uin=8549201

返回

getVipLevelCallback(

{

level:3,//绿钻等级

vip:0,//是否绿钻

score:0,//。。。

place:0,//。。。

payway:8,//支付方式

isyear:0//是否年费

}

)

3.随便听听列表

HTTP请求格式:GET

返回类型:json

API地址:http://music.qq.com/musicbox/shop/v3/data/random/{type}/random{num}.js?p={random}

参数

意义

备注

type

歌曲类型/曲风

具体对应关系待分析

num

序号

待分析

random

随机函数生成的随机数

目前没发现有什么作用随便输一个数就好

例子:

GET http://music.qq.com/musicbox/shop/v3/data/random/1/random1.js?p=12

返回:

JsonCallback(

{

retcode:”1″,

songlist:

[

{

id:"449205",//id

type:3,//类型

url:"http://stream9.qqmusic.qq.com:0/449205.wma",//试听地址

songName:"稻香",//歌曲名

singerId:"4558",//歌曲id

singerName:"周杰伦",//歌手名

albumId:"36062",//专辑id

albumName:"魔杰座",//专辑名

albumLink:"http://shop.qqmusic.qq.com/static/album/62/album_36062.htm",//专辑链接

playtime:"223"//歌曲长度,单位秒

},

]

}

)

4.获取专辑封面

HTTP请求格式:GET

返回类型:图片

API地址:http://imgcache.qq.com/music/photo/album/{albumid%100}/albumpic_{albumid}_0.jpg

参数

意义

备注

{albumid%100}

专辑id对100取余

 

{albumid}

专辑id

 

例子:

GET http://imgcache.qq.com/music/photo/album/62/albumpic_36062_0.jpg

返回:

周杰伦跨时代专辑封面

5.获取用户QQ空间音乐

HTTP请求格式:GET

返回类型:XML

API地址:http://qzone-music.qq.com/fcg-bin/cgi_playlist_xml.fcg

参数

意义

备注

uin

QQ号

 

例子:

GET http://qzone-music.qq.com/fcg-bin/cgi_playlist_xml.fcg?uin=81549201

返回:

<qqmusic>

<curtime>1323091348</curtime>

<issmarter>1</issmarter>

<xmusicnum>1</xmusicnum>

<playlist>

<song>

<xqusic_id>678348</xqusic_id>

<xctype>3</xctype>

<xexpire_time>0</xexpire_time>

<xdesc>

<![CDATA[ ]]>

</xdesc>

<xsong_name>

<![CDATA[ 迷人的危险 - 紫色迷情 ]]>

</xsong_name>

<xsinger_name>

<![CDATA[ Dance Flow ]]>

</xsinger_name>

<xsong_url>

<![CDATA[ http://stream3.qqmusic.qq.com/12678348.wma ]]>

</xsong_url>

<xsong_size>1675201</xsong_size>

<xsong_playtime>206</xsong_playtime>

<xsong_diskname>

<![CDATA[ df 1 ]]>

</xsong_diskname>

<xsong_dissid>57209</xsong_dissid>

<xis_word>0</xis_word>

<xcopy_right>0</xcopy_right>

<xsinger_id>3594</xsinger_id>

</song>

</playlist>

<systemtime>1323091348</systemtime>

</qqmusic>

6.获取歌曲歌词

HTTP请求格式:GET

返回类型:图片

API地址:http://imgcache.qq.com/music/photo/album/songid%100}/albumpic_{songid}_0.jpg

参数

意义

备注

{songid%100}

歌曲id对100取余

 

{songid}

歌曲id

 

例子:

GET http://music.qq.com/miniportal/static/lyric/5/449205.xml

返回:

<lyric>

<![CDATA[

[00:00.50] 稻香

[00:02.03] 稻香

[00:07.24]

[00:10.08]作词:周杰伦 作曲:周杰伦

[00:15.55]

[00:26.63]

[00:30.61]对这个世界如果你有太多的抱怨

[00:34.15]跌倒了 就不敢继续往前走

[00:36.98]为什么 人要这么的脆弱 堕落

[00:41.11]请你打开

]]>

<![CDATA[

电视看看

[00:42.94]多少人为生命在努力勇敢的走下去

[00:46.87]我们是不是该知足

[00:49.38]珍惜一切 就算没有拥有

[00:53.01]

[00:53.90]还记得你说家是唯一的城堡

[00:57.50]随着稻香河流继续奔跑

[01:00.43]微微笑 小时候的梦我知道

[01:05.53]不要哭让萤火虫带著你逃跑

[01:09.33]乡间的歌谣永远的依靠

[01:12.13]回家吧 回到最初的美好

[01:17.68]

[01:40.86]不要这么容易就想放弃 就像我说的

[01:44.21]追不到的梦想 换个梦不就得了

[01:47.43]为自己的人生鲜艳上色

[01:49.69]先把爱涂上喜欢的颜色

[01:51.77]

[01:52.57]笑一个吧 功成名就不是目的

[01:55.54]让自己快乐快乐这才叫做意义

[01:58.52]童年的纸飞机 现在终于飞回我手里

[02:02.90]

[02:04.16]所谓的那快乐 赤脚在田里追蜻蜓追到累了

[02:08.16]偷摘水果被蜜蜂给叮到怕了

[02:11.42]谁在偷笑呢

[02:13.16]我靠着稻草人吹着风唱着歌睡着了

[02:16.62]哦 哦 午后吉它在虫鸣中更清脆

[02:19.53]哦 哦 阳光洒在路上就不怕心碎

[02:22.62]珍惜一切 就算没有拥有

[02:26.57]

[02:27.38]还记得你说家是唯一的城堡

[02:31.13]随着稻香河流继续奔跑

[02:34.05]微微笑 小时候的梦我知道

[02:39.07]不要哭让萤火虫带著你逃跑

[02:42.81]乡间的歌谣永远的依靠

[02:45.74]回家吧 回到最初的美好

[02:49.90]

[02:51.02]还记得你说家是唯一的城堡

[02:54.49]随着稻香河流继续奔跑

[02:57.50]微微笑 小时候的梦我知道

[03:02.70]不要哭让萤火虫带著你逃跑

[03:06.20]乡间的歌谣永远的依靠

[03:09.35]回家吧 回到最初的美好

[03:15.01]

[al:]摩羯座

[ar:]周杰伦

[ti:]稻香

]]>

</lyric>

QQ音乐API分析记录的更多相关文章

  1. QQ音乐API

    今天分享的是QQ音乐API 搜索歌曲API:http://s.music.qq.com/fcgi-bin/music_search_new_platform?t=0& amp;n={2}&am ...

  2. 【QQ音乐Api】移花接木 打造自己的音乐电台

    最近突发奇想想做个在线音乐小网页.需求很简单,如下 搜索歌曲 或 歌手 在线播放音乐 借用qq 或者 百度的 音乐接口 需求明确那就直接动手了 我首先尝试的百度音乐,但是不能在线播放(提示forbid ...

  3. 调皮的QQ音乐API:修复无法获取歌单

    上一篇完整版:http://www.cnblogs.com/TwilightLemon/p/7076938.html QQ音乐的API真是太调皮了,获取歌单的API又更换了好多次,喵喵喵 旧版API( ...

  4. 网易云和QQ音乐api

    最近有点闲,听歌的时候遇见好听的想下载却遇到尴尬的事,版权!唉,知道我干什么了吧 网易云音乐 获取排行榜中的歌曲列表 https://music.163.com/discover/toplist?id ...

  5. 使用浏览器抓取QQ音乐接口(歌曲篇)

    前言 前面我们获取了歌曲的排行榜的数据,我们现在需要实现歌曲播放 前面我们写了一段函数来得到了回调的数据,现在我们需要使用这一段数据,来实现播放歌曲 完整代码 <!DOCTYPE html> ...

  6. QQ音乐的各种相关API

    QQ音乐的各种相关API 分类: oc2014-01-29 15:34 2676人阅读 评论(2) 收藏 举报 基本上论坛里做在线音乐的都在用百度的API,进来发现百度的API不仅歌曲的质量不可以保证 ...

  7. 个人作业2:QQ音乐APP案例分析

    APP案例分析 QQ音乐 选择理由:毕竟作为QQ音乐九年的资深老用户以及音乐爱好者 第一部分 调研 1.第一次上手的体验    我算是很早期的QQ音乐的用户,用QQ音乐七八年,除了体验各方面还不错之外 ...

  8. 音乐API之QQ音乐

    欢迎大家来到我的博客,这是我在博客园写的第一篇文章,但不会是最后一篇,希望大家多多关注我,支持我哦!正文开始,今天我们要讲的是QQ音乐的API,都是来源于官方的地址,以前我也想写一个,但百度谷歌之后都 ...

  9. QQ音乐无损歌曲接口api

    1.打开QQ音乐官网 y.qq.com 2.选择你要的歌曲,进入后查看网址,以虎口脱险这个歌曲为例:http://y.qq.com/#type=song&mid=000Ib8E71sUNi7 ...

随机推荐

  1. 步进循环语句for

    一.for语句的基本格式 for 变量 in 列表 do 语句块 done 二.使用for语句处理列表(数组) [root@localhost shell]# cat use_for_deal_wit ...

  2. Logistic回归总结

    原文:http://blog.csdn.net/dongtingzhizi/article/details/15962797  Logistic回归总结 作者:洞庭之子 微博:洞庭之子-Bing (2 ...

  3. C#综合揭秘——Entity Framework 并发处理详解

    引言 在软件开发过程中,并发控制是确保及时纠正由并发操作导致的错误的一种机制.从 ADO.NET 到 LINQ to SQL 再到如今的 ADO.NET Entity Framework,.NET 都 ...

  4. Linux下*.tar.bz2等文件如何解压--转

    如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包.压缩解压 linux下怎么解后缀名是gzip的文件? ...

  5. yar

    <?php class Operator { /** * 两数相加 */ public function add($a, $b) { return $this->_add($a, $b); ...

  6. 第一节:Maven 下载,安装和配置

    Maven是Apache的一个产品所以要下载Maven的话可以到https://www.apache.org网站上下载 进入到APache这个网站后看一下几部操作 第一: 选择点击导航栏上面的proj ...

  7. [Oracle AR]Territory Flexfield

    You can use the Territory Flexfield for recording and customized reporting on your territory informa ...

  8. LeetCode 122

    Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price of a ...

  9. MultiMap、BidiMap及LazyMap的使用

    一.MultiMap 在日常的开发工作中,我们有的时候需要构造像Map<K, List<V>>或者Map<K, Set<V>>这样比较复杂的集合类型的数 ...

  10. css 盒模型相关样式

    话不多说,一切还是从最基础的说起.  盒的类型  1.盒的基本类型 在css中,用display定义盒的类型,一般分为block类型与inline类型. 例如div属于block类型,span属于in ...