Потребовалось мне получить некоторую информацию о видео YouTube. Благодоря гугловскому API это достаточно просто.
Для получения информации (заголовка, количества просмотров и т.д.) достаточно отправить GET-запрос по следующему адресу:
1 |
http://gdata.youtube.com/feeds/api/videos/<id>?v=2&alt=json |
, где <id> — id видео (например, lE3a5-Kep3Y ).
В ответ вы получите строку в формате JSON, в которой закодирована информация о видео.
Для получения нужной мне информации (заголовок видео, количество просмотров, лайков и дизлайков) я написал простенький класс (ниже реализации на C# и PHP).
PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
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 видео):
1 2 3 |
$youtube = new youtube( "https://www.youtube.com/watch?v=lE3a5-Kep3Y" ); print "title = " . $youtube->Title; print "view count = " . $youtube->ViewCount; |
Пример реализации на C# можно глянуть на GitHub (там немного больше кода 🙂 ).
Думаю, алгоритм понятен:
- Отправляем GET-запрос;
- Парсим json;
- ???
- Profit!
Здравствуйте.
Спасибо за статью.
при запуске кода для C# выскакивает сообщение.
«Проект, создающий библиотеку классов, не может быть непосредственно запущен.
Для отладки данного проекта добавьте к решению проект,
создающий приложение и ссылающийся на эту библиотеку, и сделайте его запускаемым»
Скрин http://prntscr.com/cpbu8g
Ну потому что это библиотека. Ее подключать нужно к существующему приложению и в нем использовать.