bluebillywig / vmsrpc
Composer 包,允许轻松连接和与 Blue Billywig VMS API 通信。
Requires
- php: >=7.1.27
- ext-curl: *
- ext-dom: *
- ext-fileinfo: *
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^5
- symfony/yaml: ^3
This package is auto-updated.
Last update: 2024-09-17 18:01:18 UTC
README
https://support.bluebillywig.com/vms-rpc-php
该 vms rpc 客户端使得连接到 vms 更加容易。这是通过简化一些复杂性(如连接到 vms)来实现的。本文档提供了 PHP vms rpc 客户端的技術總結。
使用方法
入门
创建一个新的 BlueBillywig\RPC 实例。这可以通过提供用户名和密码或共享密钥来完成。
可以通过访问 https://您的出版物.bbvms.com/ovp/#/publication/api-keys(其中 您的出版物 需要替换为您的出版物的名称)并点击“创建新密钥”来生成共享密钥。
使用用户名和密码创建实例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'https://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); } catch (\Exception $e) { echo $e->getMessage(); }
使用共享密钥创建实例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'https://YourPublication.bbvms.com'; $sharedSecret = '123-1234567890abcdefghijklmnopqrstuv'; try { $vms = new RPC($host, null, null, $sharedSecret); } catch (\Exception $e) { echo $e->getMessage(); }
快速入门
以下示例演示了如何搜索一些媒体片段并立即打印每个媒体片段的嵌入代码。
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'https://YourPublication.bbvms.com'; $sharedSecret = '123-1234567890abcdefghijklmnopqrstuv'; $arProps = array( 'query' => 'type:mediaclip AND status:published', 'limit' => '10', 'sort' =>'createddate desc' ); try { $vms = new RPC($host, null, null, $sharedSecret); $search_result = json_decode($vms->json('search', null, $arProps)); if($search_result->count > 0) { foreach($search_result->items as $oMc) { echo '<script type="text/javascript" src="' . $host . '/p/default/c/'.$oMc->id.'.js"></script>'; } } } catch (\Exception $e) { echo $e->getMessage(); }
函数列表
在此您可以找到 RPC 中的可用函数,这些函数可以执行 API 请求。有关 API 请求的更多信息,请参阅此处:https://support.bluebillywig.com/vms-api-guide
doAction
执行 API 请求/操作并返回结果数组。
array doAction(string $entity, string $action, array $arProps)
$entity: 您想要查询以获取所需结果的相应 API 实体。例如 mediaclip、mediacliplist、publication 或 playout。
$action: 您想要执行的操作。操作因实体而异,有关详细信息,请参阅 API 文档。例如,对于 mediaclip 实体,可能的操作包括 get、put 或 getUsageStats。
$arProps: 此数组将包含特定请求所需或可选属性。例如,对于 mediaclip 实体的 put 操作,您需要提供至少属性 xml,以下是一个示例。
以下是一个更新媒体片段的示例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'http://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); //Set the status to draft $arProps = array( 'xml' => '<media-clip id="1234567" status="draft"></media-clip>' ); $r = $vms->doAction('mediaclip', 'put', $arProps); } catch (\Exception $e) { echo $e->getMessage(); }
以下是一个包括视频文件的添加新媒体片段的示例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'http://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); //Add a new mediaclip, add a file, set the title and set the status. $file = getcwd() . "/someVideo.mp4"; $arProps = array( 'xml' => '<media-clip title="New mediaclip" status="draft"></media-clip>', 'Filedata' => '@'.$file ); $r = $vms->doAction('mediaclip', 'put', $arProps); } catch (\Exception $e) { echo $e->getMessage(); }
JSON
执行 API 请求/操作并以 JSON 格式返回结果。目前,仅对 mediaclips、timelines、widgets 和 zones 的 'get' 和 'search' 操作可以以 JSON 格式获取结果。
string json(string $entity, int $objectId = null, array $arProps = null)
$entity: 您想要查询以获取所需结果的相应 API 实体。例如 mediaclip、mediacliplist、publication 或 playout。
$objectId: (可选) 某个实体的 id,例如 mediaclipid。如果设置了 $objectId,则操作将变为 'get'。
$arProps: (可选) 此数组包含特定请求所需或可选属性。
以下是一个搜索几个媒体片段的示例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'http://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); $arProps = array( 'query' => 'type:mediaclip','limit' => '10', 'sort' =>'createddate desc' ); $r = json_decode($vms->json('search', null, $arProps)); } catch (\Exception $e) { echo $e->getMessage(); }
XML
执行 API 请求/操作并以 XML 格式返回结果。
string xml(string $entity, int $objectId = null, array $arProps = null)
$entity: 您想要查询以获取所需结果的相应 API 实体。例如 mediaclip、mediacliplist、publication 或 playout。
$objectId: (可选) 某个实体的 id,例如 mediaclipid。如果设置了 $objectId,则操作将变为 'get'。
$arProps: (可选) 此数组包含特定请求所需或可选属性。如果没有设置,则默认操作将为 'get'。
以下是一个获取出版物的全局配置的示例
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'http://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); $r = $vms->xml('publication'); } catch (\Exception $e) { echo $e->getMessage(); }
URI
执行 API 请求/操作并将特定请求的所有属性通过查询字符串发送。如果需要提供具有相同键的多个属性,这可能很有用,例如 Solr 请求。
string uri(string $apiEntityUrl, string $qs = null)
$apiEntityUrl: 您想要查询以获取所需结果的相应 API 实体。例如 json/mediaclip 或 json/qstats。
$qs: (可选) 要与请求一起发送的查询字符串。
以下是一个获取mainconfig.xml的示例,其中包含您的出版物配置,例如资产路径。
require __DIR__ . '/vendor/autoload.php'; use BlueBillywig\VMSRPC\RPC; $host = 'http://YourPublication.bbvms.com'; $user = 'UserName'; $password = 'Password'; try { $vms = new RPC($host, $user, $password); $apiEntityUrl = ""; $qs = 'mainconfig.xml'; $r = $vms->uri($apiEntityUrl, $qs); } catch (\Exception $e) { echo $e->getMessage(); }
单元测试
要运行PHP单元测试,请克隆此仓库,执行composer install
命令,并将tests/config.example.yaml
复制到tests/config.yaml
。使用适用于您出版物的设置更新tests/config.yml
。
使用以下命令之一运行测试。
./vendor/bin/phpunit
composer test