#概要
きちんと規約にのっとった動画を配信するなら、Vimeoは非常に安価で高品質で埋め込みドメイン制限もかけられて便利!
ということで、VimeoのAPIを使ってみます。
言語はPHP使います。
##公式リファレンス
Vimeo Developer API
https://developer.vimeo.com/
##公式ライブラリ
https://developer.vimeo.com/api/libraries
ここからPHPのライブラリをダウンロードします。
#手順
具体的にアクセスするまでの手順です。
##APIにアクセスするためのアプリを作成する
https://developer.vimeo.com/apps
から、アプリを作成します。
##トークンの発行
万人がつかうアプリでなければ、あらかじめアクセストークンを発行しておいて、それでアクセスできます。
不特定多数が使うアプリの場合は、都度アクセストークンを発行できます。
今回は、前者の「あらかじめアクセストークンを発行しておく方法」を使います。
- 前の手順で作成したアプリの画面に入り「Authentication」タブを開きます。
- 下のほうに「Generate an Access Token」という欄があるので、トークンに与える権限を設定して、「Generate Token」ボタンをクリックします。
- アクセストークンが表示されるので、すぐにメモしておきます。(作成した瞬間しか表示されません。)
##PHPからの接続
ライブラリのロードあたりで、公式サンプルの通りでうまく動かず戸惑いましたが、以下そのままコピペしてもらえれば動きます。
ダウンロードしたものを lib フォルダにリネームしていれています。
//事前にダウンロードしたライブラリをロード
require("./lib/autoload.php");
//アクセス情報
$config = array();
$config['client_id'] = 'XXXXXXXXXX';
$config['client_secret'] = 'XXXXXXXXXX';
$config['access_token'] = 'XXXXXXXXXX';
//Vimeoに接続
$lib = new \Vimeo\Vimeo($config['client_id'], $config['client_secret'], $config['access_token']);
//ひとまず、自身の情報を取得してみる
$user = $lib->request('/me');
echo '<pre>';
print_r($user);
echo '</pre>';
###アクセス方法
できることは、こちらにすべて明記されています。
https://developer.vimeo.com/api/endpoints
また、WEB上からAPIアクセスを試すことができます。
https://developer.vimeo.com/api/playground/
以下主要なAPIアクセス方法のメモ(XXXXXXXXは、video_idにおきかえてください。)
####自身のアカウント情報を取得
$user = $lib->request('/me');
echo '<pre>';
print_r($user);
echo '</pre>';
####自身のビデオリストを取得
$result = $lib->request('/me/videos', array('page' => 1, 'per_page' => 10));
//echo '<pre>';
//print_r($result);
//echo '</pre>';
//データ整形:リンクのみリストアップしてみる
for($cnt=0;$cnt<count($result['body']['data']);$cnt++){
echo '<a href="'.htmlspecialchars($result['body']['data'][$cnt]['link']).'" target="_blank">'.htmlspecialchars($result['body']['data'][$cnt]['name']).'</a><br>';
}
####自身のビデオリストを取得(古いもの順)
$result = $lib->request('/me/videos', array('page' => 1, 'per_page' => 10, 'sort'=>'date', 'direction'=>'asc'));
//echo '<pre>';
//print_r($result);
//echo '</pre>';
//データ整形:リンクのみリストアップしてみる
for($cnt=0;$cnt<count($result['body']['data']);$cnt++){
echo '<a href="'.htmlspecialchars($result['body']['data'][$cnt]['link']).'" target="_blank">'.htmlspecialchars($result['body']['data'][$cnt]['name']).'</a><br>';
}
####クエリをつけて検索
- どうもうまくいかないので、いったん保留。
####自身の1つのビデオの詳細情報取得
$result = $lib->request('/me/videos/XXXXXXXX');
echo '<pre>';
print_r($result);
echo '</pre>';
####ビデオの情報変更
$result = $lib->request('/videos/XXXXXXXX',array('name'=>'ビデオのタイトル','privacy'=>array('view'=>'disable','download'=>0,'embed'=>'whitelist'),'review_link'=>0),'PATCH');
echo '<pre>';
print_r($result);
echo '</pre>';
参考 https://developer.vimeo.com/api/endpoints/videos#PATCH/videos/
Boolean型は 0 1 で指定
####自身のEmbedプリセット一覧取得
$result = $lib->request('/me/presets');
echo '<pre>';
print_r($result);
echo '</pre>';
####動画に設定済みのEmbedプリセットを割り付ける
$result = $lib->request('/videos/XXXXXXXX/presets/YYYYYYYY',array(),'PUT');
echo '<pre>';
print_r($result);
echo '</pre>';
YYYYYYYYはプリセットID。
プリセットIDは、プリセット一覧取得したときに[uri] => /users/ZZZZZZZZ/presets/YYYYYYYY
というデータが入ってくるので、その数値。ちなみに、ZZZZZZZZはユーザーID。
####動画をURLからアップロード
$result = $lib->request('/users/ZZZZZZZZ/videos',array('type'=>'pull','link'=>'http://動画までのURLフルパス'),'POST');
echo '<pre>';
print_r($result);
echo '</pre>';
ZZZZZZZZはユーザーID。
すぐに動画ID発行されてレスポンスあるので、一括アップロードなどは、これが便利。
#APIの呼び出し制限(追記)
実際に、一括アップロードするようなプログラムを書いたところ、以下のようなエラーが発生。
1時間当たりのAPIの呼び出し制限があるようです。
https://developer.vimeo.com/guidelines/rate-limiting
エラー時のレスポンスを見ると、リミットは「1000」にみえるのですが、実質100程度のようです。「アップロード」「情報変更」「プリセット設定」の3回呼び出しを1セットにしてアップロード処理をしていると、34ファイル目でエラーになります。
#参考URL
http://stackoverflow.com/questions/37675435/vimeo-api-2016-how-to-display-list-of-users-videos
ライブラリへのアクセスは、公式のサンプルではなく、こちらを参考にしたらうまくいきました。
https://github.com/websemantics/vimeo-upload
非公式、かつ使ってみてはいませんが、JavaScriptのライブラリです。