車主電臺接口文檔
1、公共參數
1.1、客戶端接入API公共參數
字段名 | 類型 | 必填 | 描述 |
---|---|---|---|
app_key | String | 是 | 喜馬拉雅開放平臺應用公鑰 |
device_id | String | 是 | 設備唯一標識,比如Android系統可以傳imei,也可以傳設備MAC地址。 如果公司有用戶隱私政策考慮可以用MD5(真實設備號)取代。 但禁止偽造,否則會被檢測出來并封號! |
client_os_type | Int | 是 | 客戶端操作系統類型,1-iOS系統,2-Android系統,3-Web,4-Linux系統,5-ecos系統,6-qnix系統 |
pack_id | String | 否 | 客戶端包名,如果client_os_type為1或2時必填。對Android客戶端是包名,對IOS客戶端是Bundle ID |
access_token | String | 是 | OAuth2訪問令牌 |
sig | String | 是 | 參數簽名,對除sig外所有參數進行簽名計算得到的值。每次請求都要重新生成,不可復用。簽名生成算法見3.3。 |
1.2、服務端接入API公共參數
公共參數如下:
字段名 | 類型 | 必填 | 描述 |
---|---|---|---|
app_key | String | 是 | 喜馬拉雅開放平臺應用公鑰 |
client_os_type | Int | 是 | 固定值4,表示是服務端API接入 |
nonce | String | 是 | 一個隨機字符串,隨機性越大越好,每個請求都需要重新生成 |
timestamp | Long | 是 | 當前Unix毫秒數時間戳,每個請求都需要重新生成 |
sig | String | 是 | 簽名參數,對除sig外所有參數進行簽名計算得到的值。每次請求都要重新生成,不可復用。簽名生成算法見3.3 |
2、簽名生成算法
簽名計算建議在服務端完成
API接入時簽名參數sig生成步驟:
將除了sig以外的所有請求參數的原始值(即不做任何處理的參數值,比如不能進行URL編碼)按照參數名的字典序排序
將排序后的參數鍵值對用&拼接,即拼接成key1=val1&key2=val2&...
將步驟2得到的字符串進行Base64編碼(注意Base64編碼時要設置字符集為utf8),假設Base64編碼后的字符串為base64EncodedStr
準備下一步需要的HMAC-SHA1哈希key,使用app_secret拼上serverAuthenticateStaticKey作為哈希key,假設得到的HMAC-SHA1哈希key是sha1Key
-
使用sha1Key對base64EncodedStr進行HMAC-SHA1哈希得到字節數組(注意是字節數組,不要轉成十六進制字符串,否則簽名計算會出錯;一般的HMAC-SHA1算法得到的結果是字節數組的十六進制表示,請務必留意這里和一般情況不太一樣),用偽代碼表示即
sha1ResultBytes = hmac-sha1(base64EncodedStr, sha1Key)
對上面得到的sha1ResultBytes進行MD5得到32位字符串,即為sig
3、接口說明
3.1、獲取車主電臺頻道列表
3.1.1、/one_click_listen/channels
接口域名前綴
功能
獲取車主電臺頻道列表
HTTP Method
GET
限制
支持客戶端和服務端調用
參數
除公共參數外,還需要以下參數
參數名 | 類型 | 必填 | 描述 |
---|---|---|---|
device_id | String | 是 | 設備唯一標識,如果公共參數已經傳了,此處可以不用重復傳 |
返回值
返回為頻道列表,其中每個頻道包含以下字段:
參數名 | 類型 | 描述 |
---|---|---|
channel_id | Int | 車主電臺頻道Id |
channel_name | String | 車主電臺頻道名稱 |
cover_url | String | 車主電臺頻道封面 |
order_num | int | 頻道列表排序值,值越小越靠前 |
3.2、獲取當前頻道的下一條聲音
3.1.2、/one_click_listen/get_next_track
接口域名前綴
功能
獲取當前頻道的下一條聲音;
HTTP Method
GET
限制
支持客戶端和服務端調用
參數
除公共參數外,還需要以下參數
參數名 | 類型 | 必填 | 描述 |
---|---|---|---|
device_id | String | 是 | 設備唯一標識,如果公共參數已經傳了,此處可以不用重復傳 |
channel_id | Int | 是 | 車主電臺頻道id |
pre_track_id | Long | 否 | 當前頻道上次收聽的聲音id,如果是首次進入可不填 |
pre_track_played_seconds | int | 否 | 當前頻道上次收聽聲音已播放的時長(單位秒),首次進入可不填 |
返回值
返回聲音列表(內部只有一條待播放聲音返回)
字段名 | 類型 | 描述 |
---|---|---|
tracks | JSON Array | 聲音列表,每條聲音的字段請參考<a href="#model.track">Track</a> |
<a id="model.track" name="model.track">Track</a>
字段名 | 類型 | 描述 |
---|---|---|
id | Int | 聲音ID |
kind | String | 固定值"track" |
track_title | String | 聲音標題 |
order_num | Int | 聲音在專輯中的排序值,從0開始依次遞增,值越小排序越前 |
track_tags | String | 聲音標簽列表,包含運營標簽和主播個人打的標簽,標簽之間以英文逗號分隔 |
track_intro | String | 聲音簡介 |
cover_url_small | String | 聲音封面小圖url,尺寸為60x60(像素) |
cover_url_middle | String | 聲音封面中圖url,尺寸為180x180(像素) |
cover_url_large | String | 聲音封面大圖url,尺寸為640x640(像素) |
announcer | JSON Object | 聲音所屬主播,包含的字段請參考 <a href="#model.announcer">Announcer</a> |
duration | Int | 聲音時長,單位秒 |
play_count | Int | 聲音被播放總次數 |
favorite_count | Int | 聲音被點贊總次數 |
comment_count | Int | 聲音被評論總次數 |
play_url_24_m4a | String | 24位碼率m4a格式音頻播放地址 |
play_size_24_m4a | Int | 24位碼率m4a格式音頻文件大小,單位字節 |
play_url_64_m4a | String | 64位碼率m4a格式音頻播放地址 |
play_size_64_m4a | Int | 64位碼率m4a格式音頻文件大小,單位字節 |
play_url_amr | String | amr格式音頻播放地址,不保證該字段一定有值 |
play_size_amr | Int | amr格式音頻文件大小,單位字節,如果play_url_amr值為""則該字段值為0 |
can_download | Bool | 能否被下載到用戶終端本地,禁止下載/緩存到服務器端 |
download_url | String | 音頻下載地址,m4a格式 |
download_size | Int | 音頻下載文件大小,單位字節 |
subordinated_album | JSON Object | 聲音所屬專輯,包含的字段請參考 <a href="#model.subordinatedAlbum">SubordinatedAlbum</a> |
source | Int | 聲音來源,1-用戶原創,2-轉采自其它專輯 |
updated_at | Int | 聲音更新時間,Unix毫秒數時間戳 |
created_at | Int | 聲音創建時間,Unix毫秒數時間戳 |
<a id="model.announcer" name="model.announcer">Announcer</a>
字段名 | 類型 | 描述 |
---|---|---|
id | Int | 主播用戶ID,即喜馬拉雅賬號ID |
nickname | String | 主播用戶昵稱 |
avatar_url | String | 主播用戶頭像圖片url |
is_verified | Bool | 主播是否加V |
<a id="model.lastUpTrack" name="model.lastUpTrack">LastUpTrack</a>
字段名 | 類型 | 描述 |
---|---|---|
track_id | Int | 最新上傳聲音ID |
track_title | String | 最新上傳聲音標題 |
duration | Int | 最新上傳聲音時長,單位為秒 |
updated_at | Int | 最新上傳聲音更新時間,Unix毫秒數時間戳 |
created_at | Int | 最新上傳聲音創建時間,Unix毫秒數時間戳 |
<a id="model.subordinatedAlbum" name="model.subordinatedAlbum">SubordinatedAlbum</a>
字段名 | 類型 | 描述 |
---|---|---|
id | Int | 聲音所屬專輯ID |
album_title | String | 聲音所屬專輯標題 |
cover_url_small | String | 聲音所屬專輯封面小圖url,尺寸為86x86(像素) |
cover_url_middle | String | 聲音所屬專輯封面中圖url ,尺寸為140x140(像素) |
cover_url_large | String | 聲音所屬專輯封面大圖url,尺寸為290x290(像素) |