Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Class_Parser_Youtube extends Class_Parser
- {
- protected $_name = 'youtube';
- protected $_homeUrl = 'https://youtube.com';
- public $apiKey;
- public function __construct($version)
- {
- $this->_version = $version;
- }
- public static function getVersions()
- {
- return array(
- 'AU' => 'Австралия',
- 'RU' => 'Россия',
- 'GB' => 'Англия',
- 'US' => 'США',
- 'CA' => 'Канада',
- 'BR' => ' Бразилия',
- 'VN' => 'Вьетнам',
- 'DE' => 'Германия',
- 'HK' => 'Гонконг',
- 'IN' => 'Индия',
- 'IQ' => 'Ирак',
- 'ES' => 'Испания',
- 'KZ' => 'Казахстан',
- 'MX' => 'Мексика',
- 'NL' => 'Нидерланды',
- 'PL' => 'Польша',
- 'RS' => 'Сербия',
- 'TR' => 'Турция',
- 'UA' => 'Украина',
- 'FR' => 'Франция',
- 'SE' => 'Швеция',
- 'KR' => 'Южная Корея',
- 'JP' => 'Япония',
- );
- }
- /*
- * функция для получения полного названия страны по ее коду
- * return string
- */
- public function getCountryName($shortName) {
- $countries = self::getVersions();
- return $countries[$shortName];
- }
- /*
- * получаем информацию о канале
- * param $url полная ссылка на канал
- * return Class_Parser_Youtube_Channel
- */
- public function getChannelInfo($url) {
- $channel = new Class_Parser_Youtube_Channel();
- $channel->url = $url;
- $parseUrl = $this->buildParseChannelInfo($url);
- //получаем информацию о канале
- $data = json_decode($this->getContent($parseUrl));
- $this->log('Получены данные о канале ' . $parseUrl);
- if (isset($data->items[0]->snippet)) {
- $channelInfo = $data->items[0]->snippet;
- }
- $channel->title = $channelInfo->title;
- $channel->description = $channelInfo->description;
- if (isset($channelInfo->country)) {
- $channel->blockedCountryList[] = $channelInfo->country;
- }
- $nextPageToken = '';
- do {
- $data = json_decode($this->getContent($this->buildParseChannelUrl($url, $nextPageToken)));
- foreach ($data->items as $item) {
- //если попался плейлист а не видео, пропускаем шаг
- if (!isset($item->id->videoId)) {
- continue;
- }
- $videoUrl = $this->buildVideoUrl($item->id->videoId);
- $channel->videoList[] = $videoUrl;
- }
- //получаем токен на следующую страницу, если токена нет, то закончился список видео
- if (isset($data->nextPageToken)) {
- $nextPageToken = $data->nextPageToken;
- } else {
- break;
- }
- } while (!empty($data->items));
- return $channel;
- }
- /*
- * получаем информацию о видео
- * param $url полная ссылка на видео
- * return Class_Parser_Youtube_Video
- */
- public function getVideoInfo($url) {
- $video = new Class_Parser_Youtube_Video();
- $video->url = $url;
- $parseUrl = $this->buildParseVideoUrl($url);
- //получаем информацию о видео
- $data = json_decode($this->getContent($parseUrl));
- $video->title = $data->items[0]->snippet->title;
- $video->description = $data->items[0]->snippet->description;
- if (!empty($data->items[0]->contentDetails->regionRestriction->blocked)) {
- $video->blockedCountryList[] = $data->items[0]->contentDetails->regionRestriction->blocked;
- }
- return $video;
- }
- /*
- * получаем информацию о доступности канала
- *
- */
- public function checkChannelAvailability() {
- }
- /*
- * устанвливаем ключ для работы с youtube api
- */
- public function setApiKey($key) {
- $this->apiKey = $key;
- }
- /*
- * функция для получения ссылки на получение данных о канале
- * return string
- */
- public function buildParseChannelUrl($url, $nextPageToken = null) {
- $channelId = str_replace('https://www.youtube.com/channel/', '', $url);
- $channelId = preg_replace('/\/.*/', '', $channelId);
- $url= "https://www.googleapis.com/youtube/v3/search?pageToken=" . $nextPageToken . "&order=date&part=snippet&channelId=" . $channelId . "&maxResults=50&key=" . $this->apiKey;
- return $url;
- }
- /*
- * формируем ссылку на видео по его id
- * return string
- */
- public function buildVideoUrl($idVideo) {
- $url = "https://www.youtube.com/watch?v=" . $idVideo;
- return $url;
- }
- /*
- * функция для получения ссылки на получение данных о видео
- * return string
- */
- public function buildParseVideoUrl($url) {
- $videoId = str_replace('https://www.youtube.com/watch?v=', '', $url);
- $url = "https://www.googleapis.com/youtube/v3/videos?part=contentDetails,snippet&id=" . $videoId . "&key=" . $this->apiKey;
- return $url;
- }
- /*
- * функция для формирование ссылки к api на получение информации о канале
- * return string
- */
- public function buildParseChannelInfo($url) {
- $channelId = str_replace('https://www.youtube.com/channel/', '', $url);
- $channelId = preg_replace('/\/.*/', '', $channelId);
- $url = "https://www.googleapis.com/youtube/v3/channels?part=snippet&id=" . $channelId . "&key=" . $this->apiKey;
- return $url;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement