2017-02-02 27 views
1

これはどこかで答えられたかもしれないが、多くの質問/回答や他のウェブサイトを見て、適切な答えを見つけることができません。Youtube idからビデオタイトルを取得

私はYoutubeからのいくつかのビデオを表示するページを作成しようとしています。画像とタイトルが表示されます。私はタイトルの問題を抱えていますが、これらの両方を行うことができました。私が使用しているコードでは、ロード時に非常に遅いです。私はそれがタイトルを得るために実際のウェブサイトを読み込んでいると仮定します。

これは私が現在タイトルを取得するために使用しているものです。

function get_youtube_id($url){ 
    parse_str(parse_url($url, PHP_URL_QUERY), $my_array_of_vars); 
    return $my_array_of_vars['v']; 
} 
function get_youtube_title($video_id){ 
$url = "http://www.youtube.com/watch?v=".$video_id; 

$page = file_get_contents($url); 
$doc = new DOMDocument(); 
$doc->loadHTML($page); 

$title_div = $doc->getElementById('eow-title'); 
$title = $title_div->nodeValue; 

return $title; 

} 

このように、idによってYouTubeのタイトルを取得するにはどうすればよいでしょうか。私が持っているコードは動作しますが、ページの読み込みが非常に遅くなります。

おかげ

+1

ytのデータAPIをご利用ください - https://developers.google.com/youtube/v3/code_samples/php – marmeladze

答えて

0

あなたはここでグラフを開く

Checkout This Link

<?php 
    require_once('OpenGraph.php'); 

    function get_youtube_title($video_id){ 
     $url = "http://www.youtube.com/watch?v=".$video_id; 
     $graph = OpenGraph::fetch($url); 
     // You can get title from array 
     return $graph->title; 
    } 
+0

お返事ありがとうございます。どのようにして配列からタイトルを得ることができますか? –

+0

あなたは 'echo $ og-> title;'を得ることができます – ImBS

+0

あなたは簡単に理解できるリンクを参照することができます – ImBS

3

を使用することができますPHPなしライブラリを使用してそれを行うための簡単な方法です。

function get_youtube_title($ref) { 
     $json = file_get_contents('http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=' . $ref . '&format=json'); //get JSON video details 
     $details = json_decode($json, true); //parse the JSON into an array 
     return $details['title']; //return the video title 
    } 

関数のパラメータは、ビデオIDであること:YouTubeではすでにので、あなたが必要なのは、このような単純な関数である、あなたはJSON形式のビデオ詳細情報を取得することができます。特定の詳細を要求する第2パラメータを追加し、関数名を変更して、希望のJSONから任意のデータを取得することもできます。

EDIT:

あなたはこの機能を使用することができます返された動画の詳細から情報のどの部分を検索したい場合:あなたは、同じビデオに関するさまざまな詳細情報を要求した場合

function get_youtube_details($ref, $detail) { 
    if (!isset($GLOBALS['youtube_details'][$ref])) { 
     $json = file_get_contents('http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=' . $ref . '&format=json'); //get JSON video details 
     $GLOBALS['youtube_details'][$ref] = json_decode($json, true); //parse the JSON into an array 
    } 

    return $GLOBALS['youtube_details'][$ref][$detail]; //return the requested video detail 
} 

を、返されたJSONデータは$GLOBALS配列に格納され、file_get_contentsへの必要な呼び出しを防止します。

また、allow_url_fopenは、共有ホスト上の問題になる可能性がある、仕事にfile_get_contentsためにあなたのphp.iniでオンにする必要があります。

+0

ありがとう!これははるかに速く働いた! –

関連する問題