2018-07-13

車主電臺接口文檔

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生成步驟:

  1. 將除了sig以外的所有請求參數的原始值(即不做任何處理的參數值,比如不能進行URL編碼)按照參數名的字典序排序

  2. 將排序后的參數鍵值對用&拼接,即拼接成key1=val1&key2=val2&...

  3. 將步驟2得到的字符串進行Base64編碼(注意Base64編碼時要設置字符集為utf8),假設Base64編碼后的字符串為base64EncodedStr

  4. 準備下一步需要的HMAC-SHA1哈希key,使用app_secret拼上serverAuthenticateStaticKey作為哈希key,假設得到的HMAC-SHA1哈希key是sha1Key

  5. 使用sha1Key對base64EncodedStr進行HMAC-SHA1哈希得到字節數組(注意是字節數組,不要轉成十六進制字符串,否則簽名計算會出錯;一般的HMAC-SHA1算法得到的結果是字節數組的十六進制表示,請務必留意這里和一般情況不太一樣),用偽代碼表示即

    sha1ResultBytes = hmac-sha1(base64EncodedStr, sha1Key)
    
  6. 對上面得到的sha1ResultBytes進行MD5得到32位字符串,即為sig

3、接口說明

3.1、獲取車主電臺頻道列表

3.1.1、/one_click_listen/channels

接口域名前綴

https://api.ximalaya.com

功能

獲取車主電臺頻道列表

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

接口域名前綴

https://api.ximalaya.com

功能

獲取當前頻道的下一條聲音;

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(像素)
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容