YouTube API v.3 — Парсинг видеороликов по ключевым фразам на php

YouTube позволяет бесплатно работать через своё API, поэтому парсить его сплошное удовольствие. А учитывая, что он еще и ищет отлично и релевантно — то парсинг в двойне приятнее.

Для начала надо зарегистрироваться и получить свой API ключ. По идее для этих дел лучше создать отдельный аккаунт, а то вдруг забанят или еще что. Полная инструкция по получинию ключа тут: https://developers.google.com/youtube/v3/getting-started

Первое — зарегистрироваться тут: https://accounts.google.com/SignUp?continue=https%3A%2F%2Faccounts.google.com%2FManageAccount

Второе — подключить api Youtube тут: https://console.developers.google.com/apis/dashboard (там сами разберетесь, вы ведь программисты, а гугл все чтото меняет, но методом тыка разобраться можно). Включить это API и получить свой ключ вида:

Получение ключа API Youtube

Третье — php код функции для поиска через API:

Четвертое (необязательное) — документация по API: https://www.youtube.com/yt/dev/ru/api-resources.html. Знание документации позволит делать более хитрый поиск по указанию страны, каналов и всякого такого. Например у нас в адресе запросов присутствует &regionCode=RU — это значит, что искать видео не запрещенные для просмотра в России.

17 комментариев

  1. Все работает, данные получены

    stdClass Object ( [kind] => youtube#searchListResponse [etag] => «m2yskBQFythfE4irbTIeOgYYfBU/IB8VfRVWrn_O5a1jdDURGfJS_vE» [nextPageToken] => CAMQAA [regionCode] => RU [pageInfo] => stdClass Object ( [totalResults] => 226903 [resultsPerPage] => 3 ) [items] => Array ( [0] => stdClass Object ( [kind] => youtube#searchResult [etag] => «m2yskBQFythfE4irbTIeOgYYfBU/UWiC68W72iQl6dfY8n8BhDsFgsY» [id] => stdClass Object ( [kind] => youtube#video [videoId] => NASSH0b-9p8 ) [snippet] => stdClass Object ( [publishedAt] => 2016-03-25T22:28:09.000Z [channelId] => UCV7gZC4eG-jbcDBrI-tbiSA [title] => Покемон 18 сезон 41 серия [description] => [thumbnails] => stdClass Object ( [default] => stdClass Object ( [url] => https://i.ytimg.com/vi/NASSH0b-9p8/default.jpg [width] => 120 [height] => 90 ) [medium] => stdClass Object ( [url] => https://i.ytimg.com/vi/NASSH0b-9p8/mqdefault.jpg [width] => 320 [height] => 180 ) [high] => stdClass Object ( [url] => https://i.ytimg.com/vi/NASSH0b-9p8/hqdefault.jpg [width] => 480 [height] => 360 ) ) [channelTitle] => YouMedia Television [liveBroadcastContent] => none ) ) [1] => stdClass Object ( [kind] => youtube#searchResult [etag] => «m2yskBQFythfE4irbTIeOgYYfBU/l3ZSpl4ti9ouQA7Za2G9AG-RvqA» [id] => stdClass Object ( [kind] => youtube#video [videoId] => UhGmvhc0BBk ) [snippet] => stdClass Object ( [publishedAt] => 2013-06-28T14:06:59.000Z [channelId] => UCdo2ldnEZCO5DVcCI1ISCvA [title] => Покемоны 1 сезон 1 серия [description] => [thumbnails] => stdClass Object ( [default] => stdClass Object ( [url] => https://i.ytimg.com/vi/UhGmvhc0BBk/default.jpg [width] => 120 [height] => 90 ) [medium] => stdClass Object ( [url] => https://i.ytimg.com/vi/UhGmvhc0BBk/mqdefault.jpg [width] => 320 [height] => 180 ) [high] => stdClass Object ( [url] => https://i.ytimg.com/vi/UhGmvhc0BBk/hqdefault.jpg [width] => 480 [height] => 360 ) ) [channelTitle] => valgert volderven [liveBroadcastContent] => none ) ) [2] => stdClass Object ( [kind] => youtube#searchResult [etag] => «m2yskBQFythfE4irbTIeOgYYfBU/Dqigi8sZhaL1HbTVyYAzx0emqOA» [id] => stdClass Object ( [kind] => youtube#video [videoId] => rGQtwBqqHos ) [snippet] => stdClass Object ( [publishedAt] => 2016-12-23T09:19:26.000Z [channelId] => UCYgNWi7GmvIzaajt23UZcOg [title] => Покемон: фильм 19 — Вулканион и Механическое чудо [description] => Перевод: lord666 Озвучка: lord666 и Анна Полевская. [thumbnails] => stdClass Object ( [default] => stdClass Object ( [url] => https://i.ytimg.com/vi/rGQtwBqqHos/default.jpg [width] => 120 [height] => 90 ) [medium] => stdClass Object ( [url] => https://i.ytimg.com/vi/rGQtwBqqHos/mqdefault.jpg [width] => 320 [height] => 180 ) [high] => stdClass Object ( [url] => https://i.ytimg.com/vi/rGQtwBqqHos/hqdefault.jpg [width] => 480 [height] => 360 ) ) [channelTitle] => B2tm2n1 [liveBroadcastContent] => none ) ) ) )

    но как их вывести по отдельности, там надо переменную и массив уточнять? покажите плз как вывести картинку например из второго ролика

  2. Все понятно, все работает. Спасибо.

    А вы не подскажите как в поисковый запрос ($search = «Поисковый запрос»;) передать переменную. Сайт на ВП, хочу передать заголовок. Например,:

    $search = wp_title(); или $search = $drugaya_peremennaya; в переменной содержится заголовок страницы, но таким методом не работает. Не понимаю как правильно сделать это, точнее сделать поисковый запрос на основе заголовка страницы

  3. Здравствуйте, у меня такой вопрос. Возможно-ли настроить так, чтоб с анкетной части моего сайта люди могли загружать свой видео на прямую на канал в Ютубе, и чтоб загруженное в анкете видео попадала в плей лист который указан в пункте анкеты??

  4. У меня все работает, но результаты поисковых запросов не правильно отрабатывают. Например, если на ютубе https://www.youtube.com/ ввести запрос, то выдает много результатов, а через скрипт может найти только 2 видоса или 1

  5. Денис, в строке №3:
    $url = «https://www.googleapis.com/youtube/v3/search?part=snippet&q=$search&type=video&maxResults=$limit&regionCode=RU&key=$apikey»;

    Посмотрите, возможно &regionCode=RU ограничивает выборку. На сколько я помню, это поиск для России или типа того.

  6. Умед, думаю это возможно. Только не настроить, а разработать соответствующий функционал. Основная проблема может быть — мощностей виртуального хостинга может не хватить на загрузку видео через php и надо будет брать сервер (ВПС или Дедик).

  7. Денис, в строке №3… Алексей, не помогает, не знаю что делать блин

  8. Ну или такой вопрос… можно ли передать несколько ключевых фраз по отдельности, а результат получить один в массиве

  9. Денис, можно несколько запросов отправить и соединить результаты в один массив.
    Я сейчас пишу без тестов (у меня не сохранены рабочие файлы), но даже если ошибки будут, то должно навести вас на правильную мысль.
    Начиная с 19 строки:
    $res_json = youtube_search($apikey, «Запрос 1», $limit) ;
    $res = json_decode( $res_json, true ); // true- чтобы не объект, а ассоциативный массив получить
    $res_json = youtube_search($apikey, «Запрос 2», $limit) ;
    array_push( $res, json_decode( $res_json, true ) );
    ..
    $res_json = youtube_search($apikey, «Запрос n», $limit) ;
    array_push( $res, json_decode( $res_json, true ) );

  10. Лех, ты, конечно, не обижайся, ты молодец. Ты потратил свое время и всё такое. Но людям хочется чего-то готового. Может ты будешь тем самым человеком, который выложит готовый плагин?

    Просто эта статья полезна лишь некому узкому кругу людей, которые разбираются в этом. Я даже не разбирал код. Потому что время не хочу тратить. Я лучше его потрачу на написание этого поста. Так вот. Сделай какой-нибудь плагин или напиши код, напиши мануал и т.д., чтобы человек мог просто создать страницу в WP, вставил туда shortcode и после сохранения на этой странице появилась строка поиска и кнопка «Найти». И когда человек вводит какую-то фразу или словосочетание, ему выдает список ссылок с картинками видео, нажав на которые он сможет смотреть видео в нормальном Ajax плеере с рамкой, который не закрывается при перелистывании страниц и который можно двигать, изменять его размеры и т.д. Иначе эту статью прочитает максимум несколько человек.

    «Я что, ишак тут распинаться бесплатно перед всеми», — подумаешь ты. Так а зачем ты время вообще тратишь на это все? Зачем тебе этот сайт, если тебя понимает лишь узкий круг аутистов, которые вообще не понятно о чём разговаривают, будь-то инопланетяне? Давай че-нить для людей, а не для НЛО.

  11. Сергей, спасибо за фидбэк. Но у меня встречный вопрос, а почему именно для WP? Мне вот Битрикс нравится. А еще не плох ModX (обе ветки). Да думаю найдется и еще с десяток не плохих CMS.
    По поводу для «людей», а не НЛО — так я определился с форматом этого блога. Это в большей степени моя записная книжка. Чтобы заносить сюда, то чего нету (небыло) на десятке других блогов. Чиркнуть о том, в чем пришлось самому разобраться, чтобы в будущем при аналогичной задаче было к чему вернуться, подсмотреть, как пользоваться. Т.е. в первую очередь для меня.

  12. Что касается почему для WP, то, по-моему, это наиболее функциональная CMS благодаря обилию плагинов, которые пишут и выкладывают добрые господа и дамы. Может быть я другие не использовал, но вордпрес — классная штука.

  13. Что касается того, что ваша это ваш блокнот, так это безусловно хорошо. Однако неплохо было бы внести свою лепту в многообразие предложений в рамках множества плагинов. Вам ведь это не стоит ничего, вы хорошо разбираетесь. За час бы создали, думаю. И прославились бы. А людям это принесло бы много радости. Аналогов пока что не существует.

  14. Сергей, это не так работает) Чтобы прославиться — это удел молодых и беззаботных. Остальные выкладывают то, что пришлось разработать и этой разработкой можно и не стыдно поделиться.
    Попробуйте внести свои предложения на форумах посвященных WP. Работать с готовым API под силу любому программисту.
    А я этого API ютуба коснулся, только для того, чтобы автоматически подтягивать к товарам видеообзоры. Кстати для сайта на MODx. И это было куда более полезно, чем то что вы просите. Может со временем выложу этот сниппет для всех (если он достаточно универсальным получился).

  15. ответ Денису на вопрос-«…результаты поисковых запросов не правильно отрабатывают…»:
    это известный баг API ютуба

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *