2017-12-10 92 views
1

Vimeoから情報を取得する簡単なワードプレスプラグインがあります。新しいVimeo Apiを使用してビデオの長さを取得する

function vimeo_duration ($id) { 
try { 


    $ch = curl_init("http://vimeo.com/api/v2/video/$id/json"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $res = curl_exec($ch); 
    $obj = json_decode($res, true); 
    return $obj[0]['duration']; 

} catch (Exception $e) { 
    # returning 0 if the Vimeo API fails for some reason. 
    return '0'; 
} 
} 

結果:空白私は、次のコードで自分の「シンプルなAPI」を使用してVimeoのからのビデオ再生時間のメタデータを取得しようとしていました。何も取得しておらず、「0」もありません。

このリンクは、私たちから情報を取得するために使用しているものです:http://vimeo.com/api/v2/video/244509537/json、そしてあなたがあなたのブラウザでそれを読み込む際には、次のような結果が得られます。

enter image description here

(「末端JSON」 "/ php"または "/ xml"と置き換えることができます。

このapiは現在サポートされていませんと私は使用する必要があります新規Api t o必要な期間のデータを取得します。 (おそらくそれがデータを取得しない理由です)

私はStackOverflowaやその他の情報源から検索しましたが、実際の例は見つかりません。私もvimeoのドキュメントを読んだが、実装することはできない。彼らが提案するようにAPIを作成しました。アクセストークンを持っています。

私はこのコードをStackOverflowで見つけて少し修正しました。ただし、値は返されません。 結果はが再び空白になります。それは何も取得していないし、 "0"も返していません。

function vimeo_duration ($id) { 
try { 
$authorization = 'your_vimeo_api_authorization_token_goes_here'; 
$ch = curl_init(); 

curl_setopt_array($ch, array(
    CURLOPT_URL => "https://api.vimeo.com/videos/$id", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
     "authorization: Bearer {$authorization}", 
     "cache-control: no-cache", 
    ), 
)); 

    $res = curl_exec($ch); 
    $obj = json_decode($res, true);   
    return $obj[0]['duration']; 

} catch (Exception $e) {  
    # returning 0 if the Vimeo API fails for some reason. 
    return "0"; 
} 
} 

誰かがこのコードを手助けできますか?新しいAPIを使用してさまざまな種類の情報を取得することに興味を持っている人もいると思いますが、実際の例はあまり多くありません。

答えて

2

これを試してみてください:

function vimeo_duration ($id) { 
try { 
$authorization = 'your_vimeo_api_authorization_token_goes_here'; 
$ch = curl_init(); 

curl_setopt_array($ch, array(
    CURLOPT_URL => "https://api.vimeo.com/videos/$id?fields=duration", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
     "authorization: Bearer {$authorization}", 
     "cache-control: no-cache", 
    ), 
)); 

    $res = curl_exec($ch); 
    $obj = json_decode($res, true); 
    return $obj['duration']; 

} catch (Exception $e) { 
    # returning 0 if the Vimeo API fails for some reason. 
    return "0"; 
} 
} 

変更は私が作った:

  • https://api.vimeo.com/videos/$idからhttps://api.vimeo.com/videos/$id?fields=durationにURLをフェッチあなたのAPIを変更しました。これは私たちのAPIにのみを返すdurationあなたのために戻ってきます。その結果、お客様が使用していないデータを処理しているわけではなく、レート制限も高いため、応答が速くなります。詳細については、https://developer.vimeo.com/api/common-formats#json-filterを参照してください。
  • return $obj[0]['duration'];は今やreturn $obj['duration'];です。単一のビデオをクエリしているので、結果セットは連想配列です。以下でこれらの変更を実行

、私は戻って9を受け取る:

print_r([ 
    'duration' => vimeo_duration(245823639) 
]); 
+1

あなたのジョンをありがとうございます。スクリプトのどこかに問題があるはずです。私はそれが何であるかを見つけるでしょう、そして、私はあなたに後で答えをつけることを確実にします。 –

関連する問題