demo对接php,喜马拉雅数据API 接入 demo PHP版 API
记录一下使用经验,常规参数封装使用。
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相关推荐
- 喜马拉雅数据接口 接入 demo PHP版 API
记录一下使用经验,常规参数封装使用. API接口版 具体操作类XmlyApi.php 示例,更多需求可前往喜马拉雅官方文档查询,调用方法同理. <?php/*** author : zhw* 2 ...
- php采集喜马拉雅,喜马拉雅数据 JSSDK API 接入 demo WEB版 标准登录 、免登陆
1.引入jssdk config, XMLY, XMplayer 喜马拉雅sdk封装好的 2.初始化(授权登录.免登陆) config({ app_key: '2e*****1', // 必传,官方 ...
- 【分享】星图地球数据云影像图API接入指南
星图地球数据云(GEOVIS Earth Datacloud)为广大用户提供高品质.高可靠的在线时空数据云服务,极大降低用户的时空数据获取门槛和使用成本,为数字化世界构建提供强有力的数据基座. 今天我 ...
- java接入顺丰快递api(有可运行demo)(包括下单、路由查询、路由推送、查询订单状态、取消订单)
故事发生的背景: 公司快递业务这一块之前接入的是快递100,由于快递100的推送的实时性没有达到公司的要求,而且公司全都用的顺丰快递,所以直接接入了顺丰快递的api.demo文章最后下载(新增了jso ...
- Java+Demo对接中国移动 云MAS短信发送(http协议详解,新测成功!)
一.登录官网,下载http接入文档(随着官网不断更新,可参考官网的文档) 官网地址为:云mas业务平台 进入云MAS管理平台,找到 管理-接口管理 的列表页. (必读:本文对接方式是 java引用ja ...
- 神策数据上线 IPTV Demo ,三大价值助力数据驱动
工信部发布的 "2019 年上半年通信业经济运行情况"中显示,IPTV 用户已经达到 2.81 亿户,占据大屏市场大片江山,成为 IPTV 成长史上的高光时刻.但高光时刻往往意味着 ...
- 基于阿里云实现游戏数据运营(附Demo)
摘要: 原作者:阿里云解决方案架构师,陆宝.通过阅读本文,您可以学会怎样使用阿里云的maxcompute搭建一套数据分析系统. 一.总览 一个游戏/系统的业务数据分析,总体可以分为图示的几个关键步骤: ...
- 【转载】Elasticsearch客户端API使用Demo
Elasticsearch客户端API使用Demo, 转载自官方文档, 以索引雇员文档为示例, 在命令行使用curl演示了一系列的Restful API操作. 1.索引雇员文档 第一个业务需求就是存储 ...
- 菜鸟云打印接入Demo
菜鸟云打印接入Demo 0. 接入流程图 1. 连接打印客户端 首先要打开打印客户端,然后使用下面的方法,连接客户端(WebSocket协议): 地址 : 连接打印客户端 function doCo ...
最新文章
- BZOJ 2879 美食节(费用流-动态加边)
- µC/OS-II和µC/OS-III比较
- maven java archetype_使用Maven Archetype创建Java项目模板
- 灵剑问道服务器维护到几点,问道手游2020年12月31日维护公告_问道手游12月31日更新了什么_玩游戏网...
- VM虚拟机下如何和Windows主机共享文件夹
- 前端处理订单支付超时
- win7+Linux(centos 7.2)双系统--总结
- kibana去重统计和分组统计
- w3af 基于Python的Web应用扫描器
- 双击易语言没有反应,按住shift再双击可解决
- 超声波检测中的横波与纵波分别
- html网页中加五角星,html如何添加五角星/星星图案
- Windows x64为动态代码添加unwind信息
- Enea公司----OSE/OSEck RTOS --2
- tp5使用外部类的两种方法
- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
- 【3D建模干货】国外建模大师精心总结,成为建模高手的必备技巧
- 机器学习笔记-Adaptive Boosting
- 以太网控制器ENC28J60编程要点
- Android开发引导页进入应用,第二次欢迎页进入应用
热门文章
- 比较好用的python编译器_比的解释|比的意思|汉典“比”字的基本解释
- 谷歌开发者工具 Network:Disable cache 和 Preserve log
- 告别单身不容易 程序员告别单身功略
- 80 Gbps 的 USB4 2.0 要来了!
- 网站被同行恶意攻击了打不开怎么办
- 分享:kiftd账户设置及权限分配详细教程
- c# string bytes 转换
- 【go】xxx is not in GOROOT 错误
- 分析扁平线圈特斯拉模块电路
- PCL点云学习 十二(RoPs 特征与惯性矩描述子)