dailymotion / cloudkey-php
Dailymotion 云API PHP绑定
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: 4.0.17
This package is not auto-updated.
Last update: 2024-09-14 14:39:55 UTC
README
Dailymotion 云API PHP绑定暴露了API参考中描述的所有API方法。一个名为CloudKey
的顶级类通过对象属性暴露所有命名空间。例如,在media
命名空间中调用count
方法如下
$cloudkey = new CloudKey($user_id, $api_key);
$result = $cloudkey->media->count();
对于期望参数的方法,这些参数必须以关联数组的形式传递
$media = $cloudkey->media->info(array('id' => $a_media_id));
返回值(如有)要么是stdClass
实例(当结果是一个结构时),要么是stdClass
实例的数组(当结果是一系列结构时)
# Simple structure response
$media = $cloudkey->media->info(array('id' => $a_media_id));
echo $media->id;
# List of structures response
$page = 1;
while(1) {
$res = $cloudkey->media->list(array('fields' => array('id', 'meta.title'), 'page' => $page++));
foreach($res->list as $media) {
printf("%s %s\n", $media->id, $media->meta->title);
}
if ($res->page == $res->pages) {
break;
}
}
本地方法
CloudKey类暴露了额外的本地方法。这些方法在API参考中没有记录,并提供为辅助工具,以简化Dailymotion云API集成。
file->upload_file($path)
此方法管理文件上传到Dailymotion云上传服务器。与API媒体创建过程相关的信息将以dict
的形式返回。
参数
$path
: (必需) 上传文件的路径。
示例
# source asset upload example
$file = $cloudkey->file->upload_file('path/to/video.mov');
# The list of encoding assets that we want
$assets = array('mp4_h264_aac', 'mp4_h264_aac_hq', 'jpeg_thumbnail_medium', 'jpeg_thumbnail_source');
# Metadata
$meta = array('title' => 'My video', 'author' => 'Author');
$media = $cloudkey->media->create(array('assets_names' => $assets, 'meta' => $meta, 'url' => $file->url));
media.get_embed_url(id)
此方法返回一个指向Dailymotion云播放器嵌入的签名URL(有关详细信息,请参阅API参考)。生成的URL是临时的,并且根据提供的权限级别掩码授予访问权限。
参数
id
: (必需) 媒体ID。seclevel
: 权限级别掩码(默认为CLOUDKEY_SECLEVEL_NONE
,下面将详细介绍)。expires
: UNIX纪元过期时间(默认为time() + 7200
(从现在起2小时))。secure
:true
以获取https嵌入URL(默认为false
)。
如果seclevel参数中未指定CLOUDKEY_SECLEVEL_DELEGATE
选项,则可能需要以下参数,具体取决于其他选项。这不建议这样做,因为它可能会导致意外的访问拒绝,主要由于GeoIP数据库的不一致。
asnum
: 客户端的自治系统编号(默认为None
)。ip
: 客户端的IP地址(默认为None
)。useragent
: 客户端的HTTP User-Agent头(默认为None
)。
示例
// Create an embed URL limited only to the AS of the end-user and valid for 1 hour
$url = $cloudkey->media->get_embed_url(array('id' => $media->id, 'seclevel' => CLOUDKEY_SECLEVEL_DELEGATE | CLOUDKEY_SECLEVEL_ASNUM, 'expires' => time() + 3600));
media.get_stream_url(id)
此方法返回一个指向Dailymotion云视频流的签名URL(有关详细信息,请参阅API参考)。生成的URL是临时的,并且根据提供的权限级别掩码授予访问权限。
参数
id
: (必需) 媒体ID。asset_name
: 想要的媒体资产名称(默认为mp4_h264_aac
)。seclevel
: 权限级别掩码(默认为CLOUDKEY_SECLEVEL_NONE
,下面将详细介绍)。expires
: UNIX纪元过期时间(默认为time() + 7200
(从现在起2小时))。download
:True
以获取下载URL(默认为False
)。filename
: 下载URL的文件名(如果设置,则覆盖download
参数)。version
: 插入URL的任意整数,用于刷新缓存。仅在需要时使用此参数,并且仅在需要刷新缓存时更改其值。protocol
: 流协议('hls'、'rtmp'、'hps'或'http')。如果为'http',则覆盖download
参数。
如果seclevel参数中未指定CLOUDKEY_SECLEVEL_DELEGATE
选项,则可能需要以下参数,具体取决于其他选项。这不建议这样做,因为它可能会导致意外的访问拒绝,主要由于GeoIP数据库的不一致。
asnum
: 客户端的自治系统编号(默认为None
)。ip
: 客户端的IP地址(默认为None
)。useragent
: 客户端的HTTP User-Agent头(默认为None
)。
示例
// Create a stream URL limited only to the AS of the end-user and valid for 1 hour
url = cloudkey.media.get_stream_url(id=media['id'], seclevel=CLOUDKEY_SECLEVEL_DELEGATE | CLOUDKEY_SECLEVEL_ASNUM, expires=time() + 3600)
$url = $cloudkey->media->get_stream_url(array('id' => $media->id, 'seclevel' => CLOUDKEY_SECLEVEL_DELEGATE | CLOUDKEY_SECLEVEL_ASNUM, 'expires' => time() + 3600));
安全级别选项
安全级别定义了Dailymotion云架构确保媒体流URL访问仅限于单个用户或一组用户的机制。不同的(可组合)选项包括
-
CLOUDKEY_SECLEVEL_NONE
: URL访问授予所有人。 -
CLOUDKEY_SECLEVEL_ASNUM
:仅允许指定的AS号码访问URL。AS号码代表“自治系统编号”,大致将IP分组映射到互联网上的电信公司和大型组织(例如,每个ISP都有自己的AS号码,Dailyotion的AS号码是AS41690)。 -
CLOUDKEY_SECLEVEL_IP
:仅允许指定的IP地址访问URL。此选项可能导致误拒绝访问,因为一些用户在访问互联网时可能被多个代理负载均衡(这种情况通常发生在ISP和大型组织中)。 -
CLOUDKEY_SECLEVEL_USERAGENT
:仅允许发送指定User-Agent HTTP头部的用户访问URL。 -
CLOUDKEY_SECLEVEL_DELEGATE
:ASNUM、IP和User-Agent值将在第一次URL访问时在服务器端收集,不需要在客户端预先指定(这是推荐的方法,因为它将确保100%准确地识别ASNUM)。 -
CLOUDKEY_SECLEVEL_USEONCE
:仅允许访问一次URL(使用此选项可能会阻止搜索功能正常工作)。
有关更多信息,请参阅Dailymotion Cloud流的文档。
异常
当发生错误时,Dailymotion Cloud API方法可能会抛出异常,应在您的代码中捕获这些异常。可用的异常有
-
CloudKey_Exception
:发生了意外的API响应。 -
CloudKey_ProtocolException
:发生了传输层错误。 -
CloudKey_InvalidNamespaceException
:使用了无效的命名空间。 -
CloudKey_InvalidMethodException
:调用了无效的方法。 -
CloudKey_NotFoundException
:在无效的项目上请求了操作。 -
CloudKey_MissingParamException
:方法调用中缺少了必需的参数。 -
CloudKey_InvalidParamException
:方法调用中指定了无效的参数。 -
CloudKey_AuthorizationRequiredException
:调用了需要认证的方法,但没有提供认证信息。 -
CloudKey_AuthenticationFailedException
:提供了无效的认证信息。