Сначала декодируйте его и используйте второй индекс ( [1] ) массива matches :
if(isset($_GET[«q»]))
$url = urldecode(rawurldecode($_GET[«q»]));
# https://www.youtube.com/watch?v=nn5hCEMyE-E
preg_match(«/^(?:http(?:s)?://)?(?:www.)?(?:m.)?(?:youtu.be/|youtube.com/(?:(?:watch)??(. *»‘>]+)/», $url, $matches);
echo $matches[1];
# nn5hCEMyE-E
>
ответил(а) 2016-05-12T15:05:00+03:00 7 лет, 4 месяца назад
добавить комментарий
пожаловаться
Попробуйте это (не забудьте make urldecode(rawurldecode($url)) перед тем, как передать его функции)
ответил(а) 2016-05-12T15:02:00+03:00 7 лет, 4 месяца назад
добавить комментарий
пожаловаться
Еще в рубрике
Как гарантировать, что ответ API YouTube будет содержать только видеоролики, подходящие для воспроизведения на мобильном устройстве
Видео с JPlayer с youtube
Встраивание видео Youtube на веб-сайте
WordPress: Создать записи в блоге из твитов и видео YouTube автоматически?
КАК СОЗДАТЬ КАНАЛ НА ЮТУБЕ С ТЕЛЕФОНА В 2023 ГОДУ
Другие вопросы
Отстроенное видео в формате HTML
Официальный пример API iframe API дает ошибки
Проверка правильности регулярного выражения DailyMotion PHP
Источник: progi.pro
Youtube API v3: получаем API key и работаем
Это уже становится не смешно: сто́ит мне разместить информацию по API для какого-либо сервиса, как в скором времени сервис умирает. Очень надеюсь, что в этот раз статья будет актуальной более длительное время. Итак, сегодняшняя тема — Youtube API версии 3.
Для работы нам потребуется всего лишь PHP версии 5.2.0 или выше. Если учесть, что версия 5.3 появилась уже в середине 2009 года, нужно «иметь» ооочень древнего хостера, чтобы не заработало. По плану у нас следующее:
- — получаем API key;
- — исследуем описание (увы, на английском);
- — получаем содержимое плейлиста и выводим его на странице.
Старый код, к сожалению, не актуален. Запрос фида выдаёт ошибку — «No longer available». Возможно, Google пойдёт навстречу массовым жалобам пользователей, но рассчитывать на это не нужно. Посему, обновим наш код так, чтобы всё работало, как и раньше.
Список доступных методов можно посмотреть на этой странице. Там же ссылка на официальную докуменатцию.
Недолгие копания приведут к следующему адресу, на который должен осуществляться запрос:
имеет то же значение, что и в прошлой статье. Но для продолжения работы жизненно необходим .
Получаем API key
2. Жмём кнопку Create Project. В появившемся окошке вводим имя. Я использую my-test-youtube-api. Ставим галочку согласия I agree… и нажимаем кнопку Create. Подождём, пока проект создастся.
3. Для открытия, в пункте «Boost your app with a Google API» активируем кнопку Enable an API.
4. Нам необходимо работаmь с данными YouTube, поэтому выбираем «YouTube Data API».
5. Нажимаем на кнопку «Enable API». Теперь всё готово, можно осуществлять запросы. Выделенная квота находится во вкладке Quotas. Но ещё нужен ключ.
6. Для получения ключа выбираем в меню слева API
Как создать аккаунт в Ютубе? Как сделать себе аккаунт на YouTube?
Данные возвращаются в виде JSON-объекта, осталось разрулить их и сформировать «старый» массив.
Решение
В представленном коде забейте ВАШ-API-KEY , полученный на седьмом шаге (без этого код не будет работать!).
Обратите внимание, что в коде происходит запрос файла по HTTPS протоколу. Если вы испытываете скрипт на локальной машине, под Windows, и код не работает (скрипт ругается на https), необходимо в файле php.ini раскомментировать (удалить точку с запятой ; в начала строки) инструкцию extension=php_openssl.dll и перезагрузить веб-сервер.
Вот, собственно, и всё. Работать с функцией можно так же, как и в прошлой статье. Функция либо добавляется в ваш файл, либо в новосозданный документ, например, youtube_api.php , после чего подключается стандартным способом:
require_once ‘youtube_api.php’;
Возвращаемый массив данных сделан совместимым со старым решением, таким образом, достаточно лишь заменить тело функции.
Пользуйтесь на здоровье!
- Скачать Google APIs Client Library for PHP — клиентские библиотеки
- Скачать API Client Library for PHP — библиотека для работы с API
Примеры кода
Получение последних видео из указанный плейлистов и сохранение информации в файл
/*
Получение последних видео для указанных каналов
*/
header(‘Content-Type:text/plain;charset=utf-8’);
function getYoutubeDataXml($id) // Ключ для запросов
$api_key = ‘ВАШ-API-KEY’;
// специальный адрес, отвечающий за выдачу фида
$url = ‘https://www.googleapis.com/youtube/v3/search?part=snippet’
. ‘order=date’ // упорядочивать по дате добавления
. ‘fields=items/id/videoId’ // нам нужны только идентификаторы видео
. ‘
$buf = file_get_contents($url);
// декодируем JSON данные
$json = json_decode($buf, 1);
return $json;
>
// список каналов
$channel_list = array(
‘UCmOpCyZ1j406Qyun7dJgOFg’,
‘UCvBGdmck9fnkFa1jWucN87Q’,
);
// хэш в виде: array(‘id_канала-1’ => [vid1, vid2, . ], ‘id_канала-2’ => [vid1, vid2, . ])
$lastvideo = array();
// пробежаться по каналам, получить для них идентификаторы последних видео
foreach ($channel_list as $channel_id) $tarr = getYoutubeDataXml($channel_id);
$lastvideo[$channel_id] = array();
if ( !empty($tarr[‘items’]) ) foreach ($tarr[‘items’] as $v) $lastvideo[$channel_id][] = $v[‘id’][‘videoId’];
>
>
>
// сохранить в текстовой файл, каждая строка: id-канала|id-видео через пробел
$s = »;
foreach ($lastvideo as $channel_id => $video_list) $s .= $channel_id . ‘|’ . implode(‘ ‘, $video_list) . «rn»;
>
// файл создаётся в директории с ЭТИМ скриптом
file_put_contents( __DIR__ . DIRECTORY_SEPARATOR . ‘lastvideo.txt’, $s );
// вывод результата в браузер, для визуального контроля
print_r($lastvideo);
Поддержка сайта
С удовольствием создаю годный контент. Буду очень признателен, если вы поддержите мои усилия:
Свежим хлебушком типа батон —>
днём интернета
шоколадкой для работы мозга
коробочкой ароматного чая для бодрости продлением домена —>
продлением хостинга на +1 месяц
Источник: a-panov.ru