purazumakoiの[はてなブログ]

技術メモから最近はライフログも増えてきてます。

MOVIE CASTER APIと格闘してみる

使い方とか利用法とか導入方法が、Web上にあまりに情報がない・・・

MOVIE CASTER API
http://api.moviecaster.net/


MOVIE CASTER API自体を見つけるのはたやすいのだが
じゃーどうやって使えばいいの?ってなった時にさー困った。
そんなマッシュアップとかapi使って何かやる系はさっぱりです(*´Д`*)


会社の人がなんかテストしてて出来てるっぽいのですが、丸ごと使っても自分の力にならんので、
まーある程度自力でも出来たいなということでWeb上で探してます。



で、必死に探して出てきたのがコチラのサイト様


ぽりぴぃすらいと - MOVIE CASTER API
http://d.hatena.ne.jp/muddydixon/20061024


ムービーキャスだ: ムービーキャスターAPI
http://moviecasda.bmail.cc/archives/2006/08/api_1.html


前者の方の手法が会社の人が作ったやつと似ているなー



そんな感じでレッツトライ!!

1.まずはファイルのアップロードです
HTML部分のソースから(PHPが動く環境ならどこでもいけるハズ。PEARは使うけど)

<form enctype="multipart/form-data" action="Conversion.php" method="POST">
 <!--<input type="hidden" name="MAX_FILE_SIZE" value="30000" /> -->
 送信ファイル選択: <input name="userfile" type="file" size="50" />
 <input type="submit" value="送信" />
</form>

コメントの部分はまー取りあえず残しておきました^^;



2.PHP部分(動画の変換処理)

PEARでソケット通信というものを使ってデータのやり取りをするので、以下URLの通りの作業が必要
Pukiwiki研究/トライアル/PEAR::HTTP_Request

<?php
 define('PEAR_PATH','/usr/home/test/******/study/php/lib/PEAR/');
 ini_set('include_path', PEAR_PATH . ini_get('include_path'));
    include('HTTP/Request.php');
 
 //エラーチェック
 switch($_FILES['userfile']['error']){
  case 1: exit("php.ini の upload_max_filesize  ディレクティブの値を超えています。");
  case 2: exit("HTML フォームで指定された MAX_FILE_SIZE を超えています。");
  case 3: exit("一部のみしかアップロードされていません。");
  case 4: exit("ファイルはアップロードされませんでした。PHP 4.3.10 と PHP 5.0.3で導入");
  case 5: exit("テンポラリフォルダがありません。");
  case 6: exit("ディスクへの書き込みに失敗しました。PHP 5.1.0 で導入。");
 }
 
 //ファイルがしっかりアップロードされているか
 if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  echo "ファイルをアップしました<br>";
 } else {
  echo "_| ̄|●ダメポ<br>";
 } 
 
 
 //テンポラリにあるファイルを変数に保存(base64にエンコードしつつ)
 $fp = fopen($_FILES['userfile']['tmp_name'], "r");
 base64_encode($str);
 //stream_filter_append($fp, 'convert.base64-encode'); このやり方はphp5じゃないとダメっぽい
 $data = fread($fp, filesize($_FILES['userfile']['tmp_name']));
 $data = base64_encode($data);
 $name = urlencode($_FILES['userfile']['tmp_name']);
 
 fclose($fp);
 
 $today = date("YmdHis");
 $api_key = 'APIキーを入れる';
 $user_id = 'ユーザIDを入れる';
 
 $key = md5($today.$api_key).$today.$user_id;

 // ソケットを開き、送信形式を指定し、データを送信する
 $req = &new HTTP_Request("http://api.moviecaster.net/api.php");
 // メソッドをPOSTにする。
 $req->setMethod(HTTP_REQUEST_METHOD_POST);
 // データを設定
 $req->addPostData('key', $key);
 $req->addPostData('name', $name);
 $req->addPostData('data', $data);
 // 送信
 $req->sendRequest();
 // 結果を受け取る
 $response = $req->getResponseBody();
 
 if (!PEAR::isError($req->sendRequest())) {
  $response = $req->getResponseBody();
 }else {
  print "pear error";
 }
 
 //レスポンスは\t(タブ)で帰ってくるらしい
 $response_list = explode("\t", $response);
 
 switch($response_list[0]){
  case 0: break;
  case 90: exit('認証キーが必要です。');
  case 91: exit('認証エラーです。');
  case 92: exit('引数が正しくありません。');
  case 93: exit('md5が食い違っています。');
  case 99: exit('システム側でなんらかの異常が発生しました。');
 }
 print <<< HTML_RESULT_END
  <table border="1" cellpadding="3">
  <tr>
  <th>EROOR</th>
  <td>$response_list[0]</td>
  </tr>
  <tr>
  <th>MOVIE ID</th>
  <td>$response_list[1]</td>
  </tr>
  <tr>
  <th>Objectタグ</th>
  <td>$response_list[2]</td>
  </tr>
  <tr>
  <th>JavaScriptタグ</th>
  <td>$response_list[3]</td>
  </tr>
  <tr>
  <th>samneil_URI</th>
  <td>$response_list[4]</td>
  </tr>
  <tr>
  <th>FLV_FILE_SIZE</th>
  <td>$response_list[5]</td>
  </tr>
  <tr>
  <th>FLV URI</th>
   <td>???</td><!-- なんか出てこなかった??なんでかなー -->
  </tr>
  <tr>
  <th>timeよ</th>
  <td>$response_list[6]</td>
  </tr>
 </table>
HTML_RESULT_END;
?>

あとは

  • リスト表示
  • データ削除

がありますが、投稿ができたならば同じ要領で出来るでしょう!!