Четверг , 12 Декабрь 2024
ДомойПубликацииYoutube API v3: получаем API key и работаем

Youtube API v3: получаем API key и работаем

Приветствую, друзья!

Это уже становится не смешно: сто́ит мне разместить информацию по API для какого-либо сервиса, как в скором времени сервис умирает. Очень надеюсь, что в этот раз статья будет актуальной более длительное время. Итак, сегодняшняя тема — Youtube API версии 3.

Youtube API v3

Для работы нам потребуется всего лишь PHP версии 5.2.0 или выше. Если учесть, что версия 5.3 появилась уже в середине 2009 года, нужно «иметь» ооочень древнего хостера, чтобы не заработало. По плану у нас следующее:

  1. — получаем API key;
  2. — исследуем описание (увы, на английском);
  3. — получаем содержимое плейлиста и выводим его на странице.

Старый код, к сожалению, не актуален. Запрос фида выдаёт ошибку — «No longer available». Возможно, Google пойдёт навстречу массовым жалобам пользователей, но рассчитывать на это не нужно. Посему, обновим наш код так, чтобы всё работало, как и раньше.

Список доступных методов можно посмотреть на этой странице. Там же ссылка на официальную докуменатцию.

Недолгие копания приведут к следующему адресу, на который должен осуществляться запрос:

{PLAY_LIST_ID} имеет то же значение, что и в прошлой статье. Но для продолжения работы жизненно необходим {YOUR_API_KEY}.

Получаем API key

1. Идём сюда.

2. Жмём кнопку Create Project. В появившемся окошке вводим имя. Я использую my-test-youtube-api. Ставим галочку согласия I agree… и нажимаем кнопку Create. Подождём, пока проект создастся.
Создание нового проекта

3. Для открытия, в пункте «Boost your app with a Google API» активируем кнопку Enable an API.
Активация API

4. Нам необходимо работаmь с данными YouTube, поэтому выбираем «YouTube Data API».
Активация YouTube Data API

5. Нажимаем на кнопку «Enable API». Теперь всё готово, можно осуществлять запросы. Выделенная квота находится во вкладке Quotas. Но ещё нужен ключ.

6. Для получения ключа выбираем в меню слева API & authCredentials. Правее нажимаем кнопку «Create new Key».
Создание нового ключа API key

7. Жмём «Browser key». По необходимости указываем домены, с которых разрешаются запросы. Я ничего не вбивал (разрешены запросы с любых доменов) и сразу нажал «Create». Значимая информация это API key — он понадобится для работы.

Youtube API v3

Нам нужен метод PlaylistItems: list.

Описания доступных параметров приведены на странице, хотя и на английском. Мы же будет использовать четыре:

  1. part — через запятую перечисляются значения свойств, которые должны быть возвращены. Чтобы всё было без гемороя, используем спецслово snippet;
  2. playlistId — идентификатор плейлиста;
  3. maxResults — сколько результатов (данных по видеороликам) возвращать;
  4. key — API key, ключ, полученный на шаге 7.

Данные возвращаются в виде JSON-объекта, осталось разрулить их и сформировать «старый» массив.

Решение


<?php
/**
* Получить список последних видео заданного плейлиста
*
* @param string $ytlist идентификатор плейлиста
* @param int $cnt по сколько позиций обрабатывать (не всегда нужно содержимое всего плейлиста)
* @param int $cache_life время жизни кеша в секундах (чтобы не получить бан IP за рилтайм запросы)
* @return array список найденных видео, не более $cnt штук
*/
function getYoutubePlaylistDataXml($ytlist$cnt 5$cache_life 3600) {
    
# файл, содержащий копию ленты
    
$cache_file dirname(__FILE__) . DIRECTORY_SEPARATOR $ytlist '.json';
    
    
# Ключ для запросов
    
$api_key 'ВАШ-API-KEY';
    
    
# специальный адрес, отвечающий за выдачу фида
    
$url 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet'
         
'&playlistId=' $ytlist
         
'&maxResults=' $cnt
         
'&key=' $api_key;
    
    
# если кеш устарел...
    
if (time() - @filemtime($cache_file) >= $cache_life) {
        
# ...пытаемся обновить его
        
$buf file_get_contents($url);
        
# в случае успеха запишем в файл обновлённые данные
        # проверка на пустоту нужна для того, чтобы не запороть кеш при ошибке
        
if ($buffile_put_contents($cache_file$buf);
    }
    
    
# если фид получить не удалось...
    
if (empty($buf)) {
        
# ...просто берём содержимое из кеша
        
$buf file_get_contents($cache_file);
    }
    
    
# декодируем JSON данные
    
$json json_decode($buf1);
    
    
$arr = array();
    
    
# если данных нет — на выход
    
if (empty($json['items'])) return $arr;
    
    
# перебор доступных значений
    
foreach ($json['items'] as $v) {
        
$t = array(
            
'title' => $v['snippet']['title'], # название
            
'desc'  => $v['snippet']['description'], # описание
            
'url'   => $v['snippet']['resourceId']['videoId'], # адрес
        
);
        
        
# изображения
        
if (isset($v['snippet']['thumbnails'])) {
            
$t['imgs']['all'] = array();
            foreach (
$v['snippet']['thumbnails'] as $name => $item) {
                
$t['imgs']['all'][] = $item['url'];
                
$wh $item['width'] . 'x' $item['height'];
                
$t['imgs'][$wh][0] = $item['url'];
            }
        }
        
        
$arr[] = $t;
    }
    
    return 
$arr;
}

В представленном коде забейте ВАШ-API-KEY, полученный на седьмом шаге (без этого код не будет работать!).

Обратите внимание, что в коде происходит запрос файла по HTTPS протоколу. Если вы испытываете скрипт на локальной машине, под Windows, и код не работает (скрипт ругается на https), необходимо в файле php.ini раскомментировать (удалить точку с запятой ; в начала строки) инструкцию extension=php_openssl.dll и перезагрузить веб-сервер.

Вот, собственно, и всё. Работать с функцией можно так же, как и в прошлой статье. Функция либо добавляется в ваш файл, либо в новосозданный документ, например, youtube_api.php, после чего подключается стандартным способом:

require_once 'youtube_api.php';

Возвращаемый массив данных сделан совместимым со старым решением, таким образом, достаточно лишь заменить тело функции.

Пользуйтесь на здоровье!

Полезные ссылки


Примеры кода

Получение последних видео из указанный плейлистов и сохранение информации в файл


<?php
/*
Получение последних видео для указанных каналов
*/
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'
         
'&channelId=' $id
         
'&order=date'    // упорядочивать по дате добавления
         
'&maxResults=5'  // за раз получать не более 5 результатов
         
'&fields=items/id/videoId'  // нам нужны только идентификаторы видео
         
'&key=' $api_key;
    
$buf file_get_contents($url);
    
    
// декодируем JSON данные
    
$json json_decode($buf1);
    
    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) . "\r\n";
}
// файл создаётся в директории с ЭТИМ скриптом
file_put_contents__DIR__ DIRECTORY_SEPARATOR 'lastvideo.txt'$s );

// вывод результата в браузер, для визуального контроля
print_r($lastvideo);
Рейтинг: 0

Автор публикации

2 070
не в сети 4 месяца

x64 (aka andi)

Комментарии: 2893Публикации: 405Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (4 голосов, в среднем: 5,00 из 5)
Загрузка...

71 комментарий

  1. Да уж, гугля решил усложнить все в край.

    Рейтинг: 0
  2. Добрый день. Подскажите пожалуйста как получить список плейлиста из вашей статьи https://a-panov.ru/2015/06/youtube-api-v3-api-key/ начиная с момента подключения функции. В программировании я совсем нуб, пыталась взять код из прошлой статьи с html, но как html встроить в php или наоборот нужно встраивать в html php.

    Рейтинг: 0
    • Здравствуйте.
      В прошлой статье рабочий вариант. Только если вставить код в простую html-страницу, ничего не выйдет. Файл должен пропускаться через механизм php. По умолчанию на хостингах это файлы с расширением *.php
      Если это условие выполняется, то достаточно несколько шагов:
      1. сохранить код выше под каким-либо именем (имеется ввиду в файл), залить его на хостинг и подключить скрипт в требуемом файле:
      require_once ‘/путь/к/файлу/имя_файла.php’;
      2. получить содержимое плейлиста:
      $playlist_id = ‘PLC6A0625DCA9AAE2D’;
      $arr = getYoutubePlaylistDataXml($playlist_id);
      3. вывести его.
      Все подробно расписано здесь:
      https://a-panov.ru/2015/04/parse-youtube-feed/#example-code

      Ещё раз повторюсь: если добавить код в html-файл и запустить в браузере (двойным кликом), ничего не случится. Для просмотра результата в браузере необходим веб-сервер (например, apache) и сам пых.

      Рейтинг: 0
  3. Добрый день. Голову уже сломал, никак не могу сообразить… Получил API key. Можно ли вывести только количество подписчиков по YouTube API? Необходимо чтобы по ссылке выводилось только количество подписчиков и всё. Как это можно сделать и какими способами? Спасибо за помощь

    Рейтинг: 1
    • Вячеслав, здравствуйте.

      Используйте запрос:
      _https://www.googleapis.com/youtube/v3/channels?part=statistics&key={API-KEY}&forUsername={ЮЗЕР}
      В [‘items’][‘subscriberCount’] будет результат.

      Если имени нет, то подставляем идентификатор канала в таком контексте:
      _https://www.googleapis.com/youtube/v3/channels?part=statistics&key={API-KEY}&id={КАНАЛ}

      Рейтинг: 0
  4. Добрый день. Подскажите пожалуйста как выводить больше 50 видео? Выяснил, что есть некий параметр nextPageToken, добавил его в строку адреса (значение взял из json), но выводит все равно только последние 50 видео.
    Спасибо

    Рейтинг: 1
    • Евгений,
      здравствуйте.
      Для получения токенов запрос нужно несколько видоизменить, вместо snippet используйте хотя бы id:
      part=id
      В результате, вернётся массив, в котором будет определён элемент nextPageToken. Его и подставляем.
      &pageToken=[полученный nextPageToken]
      Запросив API с этим «хвостиком», получим очередной массив, но в нём уже будут параметры nextPageToken (следующая страница) и prevPageToken (предыдущая страница).
      Общее число результатов в значении-массиве pageInfo, ключ — totalResults. И, да, количество возвращаемых элементов ограничивается числом 50. Потом снова делаем запрос с nextPageToken, и ещё раз, пока не получим все токены.

      Рейтинг: 0
  5. Андрюш, помоги со скриптом одним, как будешь в сети smile Вроде все сделала правильно, но не работает…

    Рейтинг: 0
  6. Как подключить в html дайте простой пример в хтмл пжлста

    Рейтинг: 0
    • Евгений, здравствуйте.
      HTML — клиентский «язык», как и JavaScript. Код же — для серверного языка, PHP.
      Вам нужен хостинг с поддержкой PHP, причём, бесплатные скорее всего не подойдут — на них отключена функция получения данных из сети, что в данном случае необходимо.

      Рейтинг: 0
  7. Добрый день!

    Вас не затруднит подсказать, почему может возникать эта ошибка? Я так понимаю на этапе формирования урл он сталкивается с тем, что не может получить доступ к сформированному урлу (о чем говорит 403)

    [12-Feb-2016 17:48:30] PHP Warning: file_get_contents(https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=PLC6A0625DCA9AAE2D&maxResults=6&key=мой ключ) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /путь/к/файлу/parser.php on line 26

    Рейтинг: 1
  8. По поводу вопроса выше — разобрался, спасибо.
    А можете подсказать, как записать полученные данные в БД mysql? Соответствующая табличка есть, но сутки попыток не увенчались успехом (только начинаю постигать php).

    За основу брал _http://www.kodingmadesimple.com/2014/12/how-to-insert-json-data-into-mysql-php.html

    Пробовал выводить вставку и со страницы с кодом парсера, и со страницы, где в UI выводятся результаты парсинга. Даже если отрабатывает без ошибок — в базе от этого записи не появляются. Если сможете помочь — будет супер.

    Рейтинг: 1
  9. А как можно сделать вывод у себя на сайте последних комментариев к видео (которое на ютубе)?

    Рейтинг: 0
  10. Как получить доступ ко всем своим комментариям?

    Рейтинг: 0
  11. А можно ли вывести комментарии под выбранным видео а также количество лайков под кажным из них?

    Рейтинг: 0
  12. Илья Бутусов

    Здравствуйте, большое спасибо за пример! Когда-то у меня был скрипт для APIv2, сейчас я решил заняться этой темой и переделать его. Посмотрел другие методы этого API и не пойму, как получить список видео определённого пользователя / канала. Здесь только плейлист.

    Рейтинг: 0
    • Илья, здравствуйте.
      Посмотрите в сторону методов channels (возвращает список каналов пользователя). С помощью метода playlists можно получить список идентификаторов плейлистов. Видео с плейлистов — тема статьи.

      Рейтинг: 0
      • Илья Бутусов

        Здравствуйте, спасибо, но слишком сложно — получается много запросов, а они у Google теперь каждый на счету… Я нашёл проще: в методе youtube.search.list есть поля channelId и type — в первом передаётся id канала, с которого надо взять что-то. В другом можно просто указать «video» — таким образом можно получить все видео с определённого канала. Id копируется просто из ссылки на канал. Единственный минус — видео будут идти по порядку с самого первого из загруженных. Чтобы это обойти, придётся их фильтровать ещё и по времени, но этого я ещё не делал.
        Ещё раз спасибо, благодаря Вам разобрался с этой ерунденью!

        Рейтинг: 1
        • Илья, здравствуйте. Да что Вы, решительно не за что.
          Ещё посмотрите в сторону метода activities, который возвращает список событий для заданного канала. Например, последние загруженные видео.
          search дорогой, 100 единиц квоты за вызов требует.

          Рейтинг: 0
          • Илья Бутусов

            Да, я уже смотрел. Дело в том, что там нельзя отделить видео от других типов активности, их надо будет фильтровать скриптом, т.е. выдача оказывается в основном заспамлена лайками (т.к. их обычно больше, чем видео). Думаю, 100 единиц — нормальная стоимость с учётом того, что запрашиваться будут только новые данные, а существующие — браться из кэша. Если заспамленную лайками выдачу запрашивать несколько раз, вместо одного вызова search придётся делать несколько activities, что может оказаться ещё дороже.

            Рейтинг: 1
  13. Здравствуйте, спасибо за полезную информацию. А подскажите пожалуйста формат запроса для поиска видео на конкретном канале по какому-нибудь слову, куда его (это слово) всунуть?

    Рейтинг: 1
  14. Ясно. Большое спасибо за ответ)

    Рейтинг: 1
  15. Подскажите, а есть возможность использовать «загрузчик» у ютуба на своем сайте с помощью АПИ?
    Например у меня есть форма, где человек выкладывает свое сообщение и подкрепляет видео, которое в свою очередь грузится на сервера ютуба и подкрепляются к сообщению уже ссылкой?)
    Если это возможно, то задайте пожалуйста вектор направления, если не трудно) куда копать.

    Заранее спасибо за ответ!

    Рейтинг: 0
  16. Здравствуйте, спасибо вам за статью.
    А есть способ получить информацию:
    — лайкнул ли пользователь определенное видео
    — подписался ли на определенный канал ?

    Может можно зайти немного с другой стороны и искать среди айдишников подписчиков/лайкнувших определнный айди пользователя

    Рейтинг: 0
    • Анатолий, здравствуйте.
      На данный момент затрудняюсь дать точный ответ.
      По логике, этой возможности быть не должно. Но получить статус своего действия можно, однако вряд ли это требуется.

      Рейтинг: 0
    • Илья Бутусов

      Возможно, стоит использовать метод youtube.subscriptions.list (правда, я до конца не понимаю, как он работает), а потом youtube.activities.list — там выдаётся и список лайков тоже. Потом надо выбрать оттуда интересующие данные (отфильтровать по полям массива) и попробовать найти лайки таким образом. Но это в теории. Чтобы понять, можете ли Вы на практике сделать так, лучше зайдите в консоль API: https://developers.google.com/apis-explorer/#p/youtube/v3/ — и там попробуйте подставить свои данные. Посмотрите, что выдаст.

      Рейтинг: 1
  17. Здравствуйте.
    Скажите, применима ли в качестве веб-сервера для работы созданных *.PHP скиптов программа Denwer?

    далее, при работе с Denwer, когда я кладу в виртуальную Z:\111 скрипт с API, и скрипт ID-плейлистом,

    тогда исполняемый (ID-плейлистовый) скрипт будет такой

    require_once ‘http://111/youtube_from_API.php’;
    # пример работы с функцией
    $playlist_id = ‘PLzSKREVb38LFKjZG7tZOlKjtDR7OE6tcg’;
    $arr = getYoutubePlaylistDataXml($playlist_id);

    Warning: require_once() [function.require-once]: http:// wrapper is disabled in the server configuration by allow_url_include=0 in Z:\home\mysite1\www\test_youtube.php on line 2

    Warning: require_once(http://mysite1/youtube_from_API.php) [function.require-once]: failed to open stream: no suitable wrapper could be found in Z:\home\mysite1\www\test_youtube.php on line 2

    Fatal error: require_once() [function.require]: Failed opening required ‘http://mysite1/youtube_from_API.php’ (include_path=’.;C:\php\pear’) in Z:\home\mysite1\www\test_youtube.php on line 2

    Рейтинг: 1
    • Алексей, здравствуйте.
      Денвер вполне годится. В данном случае проблема не в нём, а в том, что Вы подключаете исполняемый скрипт по http; это запрещено конфигурацией (allow_url_include).
      Если оба скрипта лежат в одном месте, подключить можно так:
      require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . ‘youtube_from_API.php’;

      Рейтинг: 0
  18. Здравствуйте!
    Извините за столь глупый вопрос!
    Подскажите пожалуйста, — Youtube API v3 — позволяет получать прямую ссылку на видео?
    По логике не должен, но а вдруг smile
    Вчера хотел скачать видео в 1080р но FlashGot показал только 720р. Поставил Ummi Downloader, но тот тоже показывает максимум 720р. При этом смотрю-то я в 1080р. В общем перебрал несколько загрузчиков и везде одна и та же картина. Написал парсер на Python для получения прямых ссылок на видео.
    Но мне не нравится как это все выглядит. Должен быть способ более лаконичным, очевидным.
    Глянул мельком https://developers.google.com/youtube/v3, но не нашел такой возможности.
    Может вы в курсе?
    Заранее благодарю!

    Рейтинг: 1
    • Здравствуйте.
      Сервис принципиально не даёт возможности получить прямые урлы видео. Методов, что позволяют это сделать через API, мне неизвестны. Как неизвестно, почему FG и UD отказались качать — не пользуюсь ими.
      Сомневаюсь, что есть что-то более правильное, нежели Ваш парсер. Гугл привязывает прямой адрес к IP и устанавливает время действия линка, так что, получить уникальный урл навсегда и для всех вряд ли возможно.

      Рейтинг: 0
      • Благодарю за ответ!
        Время линка ограничено, IP привязывает, но при вызове ссылки youtube сам обновит информацию. Можете сами попробовать. Замечу, что изначально IP в ссылке будет не ваш.
        Сгенерирует прямую ссылку: http://rus.lostcut.net/youtube/g.php?v=mcixldqDIEQ&link_only=1&min_height=720
        Генератор хостится в Новосибирске. И его IP будет в линке. Но скачать сможет кто угодно.
        Только опять же, — нету 1080р. Так что алгоритм старый, до смены формата. И писался скорее по этой статье: https://habrahabr.ru/post/137496/
        Нашел несколько англоязычных ресурсов, которые генерят прямые ссылки нормально. И программу хорошую нашел (4K Video Downloader), но она естественно платная.

        Рейтинг: 1
        • Доброго утра!
          Спасибо за ссылочку. Интересно получается: IP указывается явно, но не участвует в проверке.
          По статье формируемые адреса не рабочие (у меня белый экран с 403 ошибкой вываливается). Попробую ещё посидеть над этим хаком, не для соревнования с платными программами, конечно, но вдруг что выйдет.
          Ещё раз спасибо за наводки!

          Рейтинг: 0
          • Добрый вечер!
            Выйдет, конечно! У других же выходит! ;)
            Я вообще только начал изучать программирование. 2 недели тому назад закончил бесплатный курс от «codecademy.com».
            Я самым первым делом попробовал как в статье сделать, но потерпел фиаско по понятным уже причинам. А потом целый день сниферил WireShark’ом. И за 2 часа написал первую в жизни рабочую программу. Правда без сортировки и отброса мусора. Видео я скачал в 1080р (41 шт.). В ручном режиме (каждое видео по отдельности), но потом нормально сделаю.
            Вчера вечером приходил друг (программист с 14 летним стажем) и похвалил и пальцем покрутил у виска, когда про WireShark услышал. Показал мне инструменты разработчика… Теперь чувствую себя идиотом т.к. мог бы и сам догадаться…
            P.S. Еще интересный факт. Если отправлять запрос https то и ссылки будут начинаться с https://. Но если отправить http, то ссылки будут начинаться http://
            Вот как это выглядит у меня.

            Рейтинг: 0
            • Вы молодец!
              Что-то понравилось, прошли обучение, а после сразу стали применять полученные знания, попутно значительно повысив свой скилл.
              Встречались программисты, окончившие университеты и пришедшие на работу, которые не понимали, для чего нужен отладчик, к примеру.
              Ещё раз спасибо, что подтолкнули к такой интересной теме.

              Рейтинг: 0
  19. Спасибо! Мне очень понравилось программировать, но начинать было очень тяжело. А начал из-за того, что 2 грыжи на спине заработал и пришлось уйти с работы. Теперь даже сидеть подолгу не могу.
    Вот бы начать лет 15 назад заниматься этим ремеслом…
    P.S. Это вам спасибо! Сэкономили мне много времени.

    Рейтинг: 1
    • Здравствуйте, Bugap!
      А не поделитесь ссылками — «Нашел несколько англоязычных ресурсов, которые генерят прямые ссылки нормально»

      И еще «Написал парсер на Python для получения прямых ссылок на видео. »

      smile
      Была бы очень признательна smile

      Рейтинг: 0
  20. Добрый день. Ответьте, пожалуйста, не приходилось ли сталкиваться с такой задачей: на странице в помещён видеоролик с youtube, а за пределами есть кнопочка «Later», по нажатию на которую видеоролик должен попасть в список «Watch Later» пользователя youtube. Если не лень и есть время, поделитесь, пожалуйста, соображениями, как это можно сделать.

    Рейтинг: 1
    • Влад, здравствуйте.
      К сожалению, ютубом почти не пользуюсь, поэтому даже примерно не знаю, в какую сторону копать.
      Есть мнение, что API для этого не нужно: пользователь же хочет добавить в свой список новое видео, соответственно, должен быть как минимум авторизован.

      Рейтинг: 0
  21. Здравствуйте!
    Спасибо за полезную статью.
    Вопрос такой: можно ли скачивать превью-фото через curl?
    Не забанят за это?
    Или можно скачать через API?

    Рейтинг: 0
    • Ильдар, здравствуйте.
      Миниатюры находятся на серверах, раздающих статику. Теоретически, способны выдержать почти любые нагрузки.
      Десятки изображений за секунду получаются без проблем. Но гарантировать, что это сохранится на тысячах, либо в течение долгого времени при постоянной нагрузке, не могу. Про баны не слышал. Однако это не значит, что их никогда не было. Может, и были. Если на компьютере динамический IP, я бы хоть с него запустил тест на несколько тысяч картинок.

      Рейтинг: 0
  22. Спасибо за ответ!
    Картинок думаю получится не тысячи, запрос по ключевому слову и за последний час (каждый час).
    В таком случае видимо придется предварительно тестировать на нерабочем месте.
    Думал может уже есть проверенный опыт)

    Рейтинг: 1
  23. Здравствуйте не могу понять почему не работает: [скрыл адрес]
    Пишет про какие-то лимиты.
    если в запросе ставлю search за место playlistItems то все норм.

    Рейтинг: 0
  24. Здравствуйте с чем может быть связана ошибка:
    {
    «error»: {
    «errors»: [
    {
    «domain»: «usageLimits»,
    «reason»: «dailyLimitExceededUnreg»,
    «message»: «Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.»,
    «extendedHelp»: «https://code.google.com/apis/console»
    }
    ],
    «code»: 403,
    «message»: «Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.»
    }
    }

    Рейтинг: 0
    • Алексей, Вы почти всё верно сделали.
      Отсутствуют обязательные параметры: PlaylistItems: list
      После добавления вылезет другое предупреждение: Invalid field selection videoId
      Для получения этого парамтра нужно указать полный путь:
      fields=items/snippet/resourceId/videoId
      Либо вообще не использовать fields и работать с полным содержимым.

      Рейтинг: 0
  25. Здравствуйте!

    Меня интересует Как создать АПИ ключ YouTube v.3. НО новая инструкция! У вас сайт не обновлялся с 2009?!

    Рейтинг: 0
  26. Доброго времени суток. Спасибо за хороший материал! Но одно место никак не могу понять… Создал я проект, получил все необходимые данные. все хорошо, но… Ведь я же буду ограничен только своим аккаунтом. А хотелка звучит так, как получить содержимое произвольного аккаунтв ютуб, зная его логин и пароль. Подскажите плиз направление куда копать… Заранее спасибо!

    Рейтинг: 0
    • Здравствуйте.
      Получить для этих аккаунтов API KEY и работать через него.

      Рейтинг: 0
      • Спасибо за ответ! Но этот путь не возможен… Мне хочется сделать так, чтобы польз-ли сами прописывали свои логин с паролем и… имели возможность видеть содержимое своего аккаунта. Ведь как-то же это реализовано в виджете ютуб для смарт-тв, насколько я помню.

        Рейтинг: 0
  27. Приветствую!
    Что то не могу «догнать»!
    Запрос: https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId={PLAY_LIST_ID}&maxResults=5&key={YOUR_API_KEY} результат выдаёт. Список любого плёйлиста.
    А вот в конструкции файла youtube_api.php ничего не выдаёт.
    Вот чувствую что какая-то «фигня» а не пойму… wacko

    Рейтинг: 0
    • Влас, здравствуйте.
      Функция рабочая, только что проверил.
      Возможные проблемы:
      1. Используете функцию как есть, не вызывая её.
      2. Заместо идентификатора плейлиста используется что-то другое.
      3. Хостер запрещает внешние запросы или запросы на конкретные сайты (Гугл-апи).
      4. Гугл забанил IP хостера, возможно, сосед по серверу/сети создавал дикую нагрузку на их сервера.
      Вообще, включите вывод ошибок и посмотрите, на что ругается.

      Рейтинг: 0
      • Здравствуйте! Я слабо понимаю о чём вы написали… )))
        1. Используете функцию как есть, не вызывая её.
        Я и использую ваш код и только вношу свои id.
        2. Заместо идентификатора плейлиста используется что-то другое.
        Например номер телефона? (шутка), какая разница, что если совсем не выводит (и почему-то ошибки не выводит)
        3. Хостер запрещает внешние запросы или запросы на конкретные сайты (Гугл-апи).
        Такого точно нет. Очень серьёзный хостинг с большими расширенными возможностями.
        4. Гугл забанил IP хостера, возможно, сосед по серверу/сети создавал дикую нагрузку на их сервера.
        Слабо себе представляю, чтобы гугл банил рег.ру.
        Видимо буду сам писать. Спасибо.

        smile

        Рейтинг: 0
        • 1. Мне неизвестен Ваш уровень. Это рабочее:

          function echo_h1( $str ) {
              echo '<h1>' . $str . '</h1>';
          }

          но код, в данном контексте, никогда не выполнится. Почему? Да потому, что не вызывается.

          echo_h1( 'Крутой заголовок' );

          2. Хорошо, что у Вас есть чю. Но код, тем не менее, требует идентификатора плейлиста. Не видео, не канала, не имя владельца.
          Для вывода всех ошибок в пыхе есть функции:

          ini_set( 'display_errors', 1);
          error_reporting(-1);

          Юзать в начала скрипта.

          3. Из серьёзных хостингов раньше был Зенон. Сейчас это шарашка, ютящаяся на съёмной площади рядом с Наунетом.

          4. Гугл не банит (как правило) конкретного хостера. Он банит IP, с которых создаётся повышенная нагрузка на его инфраструктуру. В особых случаях в бан может подсеть улететь.

          Пожалуйста.

          Рейтинг: 0
          • ini_set( ‘display_errors’, 1);
            error_reporting(-1);
            ставил и результат 0! Почемуто не срабатывает.
            Уровень мой в зависимости от «ватерлинии».
            Про хостинг я тоже написал REG.RU, не там причина.
            Ладно нет смысла «мереться» чуйками и знаниями. Я наверно совершил ошибку и в начале не обозначил свою задачу.
            Мне нужно было только вывод с определенного канала всех видео галереей.
            Решил так может кому-то пригодиться.

            //Get videos from channel by YouTube Data API
            $API_key = ‘API_Key’;
            $channelID = ‘Channel_ID’;
            $maxResults = 10;

            $videoGallery = json_decode(file_get_contents(‘https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=’.$channelID.’&maxResults=’.$maxResults.’&key=’.$API_key.»));
            и вывел:
            foreach($videoGallery->items as $item){
            //Embed video
            if(isset($item->id->videoId)){
            echo ‘
            id->videoId.'» frameborder=»0″ allowfullscreen>
            ‘. $item->snippet->title .’
            ‘;
            }
            }
            Извините за неточности.

            Рейтинг: 0

Оставить комментарий

Политика конфиденциальности

Наш сайт использует файлы cookies, чтобы улучшить работу и повысить эффективность сайта. Продолжая работу с сайтом, вы соглашаетесь с использованием нами cookies и политикой конфиденциальности.

Принять