记录一下使用经验,常规参数封装使用。

API接口版

具体操作类XmlyApi.php

示例,更多需求可前往喜马拉雅官方文档查询,调用方法同理。

/**

* author : zhw

* 2020-03-03

* 喜马拉雅认证接口

*/

header('Content-Type:application/json; charset=utf-8');

include_once("xmly.php");

class XmlyApi extends Xmly

{

public function __construct($get)

{

$this->get = $get;

}

/**

* 获取分类

*/

public function getCategoriesList()

{

$o_url = "/categories/list";

$parme = array(

'server_api_version' => '1.0.0', //服务器端API版本号

);

$url = $this->createUrl($o_url, $parme);

$res = json_decode(file_get_contents($url), true);

var_dump($res);

}

/**

* 获取专辑

* @param Int $category_id 分类ID,为0时表示热门分类。

* @param Int $calc_dimension 返回结果排序维度:1-最火,2-最新,3-最多播放

* @param Int $page 返回第几页,从1开始,默认为1

* @param Int $count 每页大小,范围为[1,200],默认为20

* @return ArrayObject $res

*/

public function getAlbumsList($category_id = 6, $calc_dimension = 1, $page = 1, $count = 20)

{

$o_url = '/v2/albums/list';

$category_id = $this->get['category_id'] ? $this->get['category_id'] : 6;

$page = $this->get['page'];

$count = $this->get['limit'];

if (empty($page)) {

$page = 1;

}

if (empty($count)) {

$count = 20;

}

$parme = array(

'category_id' => $category_id,

'calc_dimension' => $calc_dimension,

'page' => $page,

'count' => $count,

'server_api_version' => '1.0.0',

);

$url = $this->createUrl($o_url, $parme);

$res = file_get_contents($url);

echo $res;

}

/**

* 获取专辑

* @param Int $ids 以英文逗号分隔的专辑ID,一次最多传200个,超出部分ID会被忽略

* @param Boolen $with_metadata true代表返回metadata,false或不填不返回,获取所有元数据列表,可以使用接口/metadata/list

* @return ArrayObject $res

*/

public function getAlbumsInfo($ids = '29122679,17592887,30589078,245037,', $with_metadata = true)

{

$o_url = '/albums/get_batch';

$parme = array(

'ids' => $ids,

'with_metadata' => $with_metadata,

'server_api_version' => '1.0.0',

);

$url = $this->createUrl($o_url, $parme);

$res = json_decode(file_get_contents($url), true);

var_dump($res);

}

/**

* 获取专辑下声音列表

* @param SInt $album_id 专辑ID

* @param Boolean $sort 返回结果排序方式: "asc" - 喜马拉雅正序,"desc" - 喜马拉雅倒序,"time_asc" - 发布时间升序,"time_desc" - 发布时间降序,默认为"asc"

* @param Int $page 返回第几页,从1开始,默认为1

* @param Int $count 每页大小,范围为[1,200],默认为20

* @return ArrayObject $res

*/

public function getAlbumsBrowseList($album_id = 35505996, $sort = 'asc', $page = 1, $count = 20)

{

$o_url = '/albums/browse';

$album_id = $this->get['album_id'] ? $this->get['album_id'] : 35505996;

$page = $this->get['page'];

$count = $this->get['limit'];

$parme = array(

'album_id' => $album_id,

'sort' => $sort,

'page' => $page,

'count' => $count,

'server_api_version' => '1.0.0',

);

$url = $this->createUrl($o_url, $parme);

$tracks_res = file_get_contents($url);

$tracks_res = json_decode($tracks_res,true);

$ids = '';

foreach($tracks_res['tracks'] as $v){

$ids .= $v['id'].',';

}

$res['tracks_count'] = $tracks_res['total_count'];

$res['tracks'] = $this->getBatchTracksInfo($ids);

echo json_encode($res);

}

/**

* 批量获取声音信息

* @param String $ids 以英文逗号分隔的声音ID,一次最多传200个,超出部分ID会被忽略

* @param Boolean $only_play_info 可选参数,为true时只返回音频播放地址

* @return ArrayObject $res

*/

public function getBatchTracksInfo($ids = '270369642,270372994,270372995,270372996', $only_play_info = true)

{

$o_url = '/tracks/get_batch';

$parme = array(

'ids' => $ids,

'only_play_info' => $only_play_info,

'server_api_version' => '',

);

$url = $this->createUrl($o_url, $parme);

$res = json_decode(file_get_contents($url),true);

return $res;

}

}

$method = $_GET['method'];

$data = $_GET;

if (!$method) {

$method = $_POST['method'];

$data = $_POST;

}

$c = new XmlyApi($data);

if (method_exists($c, $method)) {

$c->$method();

} else {

echo 'cess';

}

父类xmly.php

主要是生成访问链接等公用方法,包含:sig参数的生成。

/**

* author : zhw

* 2020-03-03

* 喜马拉雅认证接口

*/

header('Content-Type:application/json; charset=utf-8');

header('Access-Control-Allow-Origin:*');

//喜马拉雅开发者后台配置得到参数

define("CLIENT_ID", "2********1");

define("CLIENT_SECRET", "a*****51");

define("CLIENT_STATIC_KEY", "g****P");

class Xmly

{

public function __construct($get)

{

}

/**

* createUrl 生成请求连接

* @param String $url

* @param Array $data

* @return $tmpInfo

*/

public function createUrl($o_url, $data)

{

if (!$data['device_id']) {

$rand = rand(1, 99999);

$data['device_id'] = md5($rand);

}

$url = "https://api.ximalaya.com{$o_url}?";

$rand_only = time() . rand(1, 9999);

$data['app_key'] = CLIENT_ID;

$data['client_os_type'] = 4; //客户端系统类型,固定值

$data['nonce'] = (string) $rand_only; //设备唯一码

$data['timestamp'] = $this->getMillisecond(); //毫秒级别时间戳

//$data['server_api_version'] = '1.0.0'; //服务器端API版本

//生成sign

ksort($data);

$parme = "";

foreach ($data as $k => $v) {

$parme .= "$k=$v&";

}

$parme = trim($parme, '&');

$str = base64_encode($parme);

$hashKey = CLIENT_SECRET . CLIENT_STATIC_KEY;

$sigStr = "&sig=" . md5(hash_hmac('sha1', $str, $hashKey, true));

$url .= $parme . $sigStr;

return $url; //生成的url的timestamp 标签被html页面转译了 如果是用浏览器测试 记得修改一下这个标签

}

/**

* 时间戳 - 精确到毫秒

* @return float

*/

public function getMillisecond()

{

list($t1, $t2) = explode(' ', microtime());

return (float) sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000);

}

/**

* curl 方法

* @param String $url

* @param Array $data

* @return $tmpInfo

*/

public function curl($url, $data = null)

{

$ch = curl_init();

$header = array("Content-Type:application/x-www-form-urlencoded");

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$tmpInfo = curl_exec($ch);

if (curl_errno($ch)) {

return curl_error($ch);

}

curl_close($ch);

return $tmpInfo;

}

}

本文分享 CSDN - 阿……莫西林。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

demo对接php,喜马拉雅数据API 接入 demo PHP版 API相关推荐

  1. 喜马拉雅数据接口 接入 demo PHP版 API

    记录一下使用经验,常规参数封装使用. API接口版 具体操作类XmlyApi.php 示例,更多需求可前往喜马拉雅官方文档查询,调用方法同理. <?php/*** author : zhw* 2 ...

  2. php采集喜马拉雅,喜马拉雅数据 JSSDK API 接入 demo WEB版 标准登录 、免登陆

    1.引入jssdk config, XMLY, XMplayer  喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方 ...

  3. 【分享】星图地球数据云影像图API接入指南

    星图地球数据云(GEOVIS Earth Datacloud)为广大用户提供高品质.高可靠的在线时空数据云服务,极大降低用户的时空数据获取门槛和使用成本,为数字化世界构建提供强有力的数据基座. 今天我 ...

  4. java接入顺丰快递api(有可运行demo)(包括下单、路由查询、路由推送、查询订单状态、取消订单)

    故事发生的背景: 公司快递业务这一块之前接入的是快递100,由于快递100的推送的实时性没有达到公司的要求,而且公司全都用的顺丰快递,所以直接接入了顺丰快递的api.demo文章最后下载(新增了jso ...

  5. Java+Demo对接中国移动 云MAS短信发送(http协议详解,新测成功!)

    一.登录官网,下载http接入文档(随着官网不断更新,可参考官网的文档) 官网地址为:云mas业务平台 进入云MAS管理平台,找到 管理-接口管理 的列表页. (必读:本文对接方式是 java引用ja ...

  6. 神策数据上线 IPTV Demo ,三大价值助力数据驱动

    工信部发布的 "2019 年上半年通信业经济运行情况"中显示,IPTV 用户已经达到 2.81 亿户,占据大屏市场大片江山,成为 IPTV 成长史上的高光时刻.但高光时刻往往意味着 ...

  7. 基于阿里云实现游戏数据运营(附Demo)

    摘要: 原作者:阿里云解决方案架构师,陆宝.通过阅读本文,您可以学会怎样使用阿里云的maxcompute搭建一套数据分析系统. 一.总览 一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤: ...

  8. 【转载】Elasticsearch客户端API使用Demo

    Elasticsearch客户端API使用Demo, 转载自官方文档, 以索引雇员文档为示例, 在命令行使用curl演示了一系列的Restful API操作. 1.索引雇员文档 第一个业务需求就是存储 ...

  9. 菜鸟云打印接入Demo

    菜鸟云打印接入Demo 0. 接入流程图 1. 连接打印客户端 首先要打开打印客户端,然后使用下面的方法,连接客户端(WebSocket协议): 地址 :  连接打印客户端 function doCo ...

最新文章

  1. BZOJ 2879 美食节(费用流-动态加边)
  2. µC/OS-II和µC/OS-III比较
  3. maven java archetype_使用Maven Archetype创建Java项目模板
  4. 灵剑问道服务器维护到几点,问道手游2020年12月31日维护公告_问道手游12月31日更新了什么_玩游戏网...
  5. VM虚拟机下如何和Windows主机共享文件夹
  6. 前端处理订单支付超时
  7. win7+Linux(centos 7.2)双系统--总结
  8. kibana去重统计和分组统计
  9. w3af 基于Python的Web应用扫描器
  10. 双击易语言没有反应,按住shift再双击可解决
  11. 超声波检测中的横波与纵波分别
  12. html网页中加五角星,html如何添加五角星/星星图案
  13. Windows x64为动态代码添加unwind信息
  14. Enea公司----OSE/OSEck RTOS --2
  15. tp5使用外部类的两种方法
  16. Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
  17. 【3D建模干货】国外建模大师精心总结,成为建模高手的必备技巧
  18. 机器学习笔记-Adaptive Boosting
  19. 以太网控制器ENC28J60编程要点
  20. Android开发引导页进入应用,第二次欢迎页进入应用

热门文章

  1. 比较好用的python编译器_比的解释|比的意思|汉典“比”字的基本解释
  2. 谷歌开发者工具 Network:Disable cache 和 Preserve log
  3. 告别单身不容易 程序员告别单身功略
  4. 80 Gbps 的 USB4 2.0 要来了!
  5. 网站被同行恶意攻击了打不开怎么办
  6. 分享:kiftd账户设置及权限分配详细教程
  7. c# string bytes 转换
  8. 【go】xxx is not in GOROOT 错误
  9. 分析扁平线圈特斯拉模块电路
  10. PCL点云学习 十二(RoPs 特征与惯性矩描述子)