Получение информации о видео YouTube [PHP, C#]
Потребовалось мне получить некоторую информацию о видео YouTube. Благодаря гугловскому API это достаточно просто.
Для получения информации (заголовка, количества просмотров и т.д.) достаточно отправить GET-запрос по следующему адресу:
http://gdata.youtube.com/feeds/api/videos/<id>?v=2&alt=json
, где <id> — id видео (например, lE3a5-Kep3Y ).
В ответ вы получите строку в формате JSON, в которой закодирована информация о видео.
Для получения нужной мне информации (заголовок видео, количество просмотров, лайков и дизлайков) я написал простенький класс (ниже реализации на C# и PHP).
PHP
class youtube
{
public $VideoId = "";
public $Title = "NO TITLE";
public $ViewCount = -1;
public $NumDislikes = -1;
public $NumLikes = -1;
public function __construct( $link )
{
$this->getData( $link );
}
private function getData( $link )
{
$videoId = $link;
$matches = array();
if ( preg_match( "/watch\?v=([^&]+)(&)?/", $link, $matches ) )
{
$videoId = $matches[ 1 ];
}
$json_output = file_get_contents( "http://gdata.youtube.com/feeds/api/videos/"
. $videoId . "?v=2&alt=json" );
$json = json_decode( $json_output, true );
$this->VideoId = $videoId;
$this->Title = $json[ 'entry' ][ 'title' ][ '$t' ];
$this->ViewCount = $json[ 'entry' ][ 'yt$statistics' ][ 'viewCount' ];
$this->NumDislikes = $json[ 'entry' ][ 'yt$rating' ][ 'numDislikes' ];
$this->NumLikes = $json[ 'entry' ][ 'yt$rating' ][ 'numLikes' ];
}
}
пример использования (можно передавать как ссылку на видео, так и непосредственно id видео):
$youtube = new youtube( "https://www.youtube.com/watch?v=lE3a5-Kep3Y" );
print "title = " . $youtube->Title;
print "view count = " . $youtube->ViewCount;
Думаю, алгоритм понятен:
- Отправляем GET-запрос;
- Парсим json;
- ???
- Profit!
Пример: