YouTube PHP API - получение статуса ранее загруженного видео? - PullRequest
5 голосов
/ 26 сентября 2011

Просто начал копаться в API PHP YouTube и получил работающий на браузере скрипт загрузки Zend. Тем не менее, я не могу найти документацию о том, как получить статус видео после его загрузки. Основная причина, по которой мне это нужно, - обработка ошибок - мне нужно знать, было ли видео одобрено YouTube, поскольку технически кто-то мог загрузить изображение или файл слишком большого размера. Мне нужно знать, что видео было одобрено, чтобы я знал, какое сообщение отображать конечному пользователю, когда он возвращается на сайт (т. Е. «Ваше видео в прямом эфире» или «Ошибка загрузки видео»).

Загрузка через браузер YouTube YouTube возвращает состояние параметра URL-адреса 200, даже если формат или размер указаны неверно, что, конечно, бесполезно. Любые идеи о том, как еще получить эту информацию из объекта YT?

В общем, когда пользователь возвращается на сайт, я хочу иметь возможность создать объект YT на основе его конкретного идентификатора видео и хочу подтвердить, что он не был отклонен. Я использую ClientLogin для запуска YouTube:

$authenticationURL= 'https://www.google.com/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
              $username = 'myuser@gmail.com',
              $password = 'mypassword',
              $service = 'youtube',
              $client = null,
              $source = 'MySource', // a short string identifying your application
              $loginToken = null,
              $loginCaptcha = null,
              $authenticationURL);

Есть мысли?

Ответы [ 2 ]

4 голосов
/ 27 сентября 2011

Вот так, наконец, нашел ответ на этот вопрос после поиска и объединения кода за последние несколько дней.После создания объекта $yt используйте следующую команду для проверки состояния:

$yt->setMajorProtocolVersion(2);
$youtubeEntry = $yt->getVideoEntry('YOUR_YOUTUBE_VID_ID', null, true);

if ($youtubeEntry->getControl()){
    $control = $youtubeEntry->getControl();
    $state = $control->getState()->getName();
}

Вывод $state отображает строку 'failed', если видео не было одобрено по какой-либо причине.В противном случае он пустой, что означает, что он был одобрен и его можно использовать (думаю, другие имена состояний будут: обработка, отклонение, сбой, ограничение, как предложил Мент-джан Стеллинг выше).Ответ состоял в том, чтобы собрать для начинающих API YouTube.Решено!(Пэтс на спине)

1 голос
/ 26 сентября 2011

У вас есть CallToken, если это так просто.

В этом примере я использую Zend_Gdata_Youtube с Zend AuthSub.

Когда вы загружали ваше видео, у вас был CallToken, с помощью этого токена вы можете получить доступ к состоянию видео.

$authenticationURL= 'https://www.google.com/accounts/ClientLogin';
$httpClient = Zend_Gdata_ClientLogin::getHttpClient(
          $username = 'myuser@gmail.com',
          $password = 'mypassword',
          $service = 'youtube',
          $client = null,
          $source = 'MySource', // a short string identifying your application
          $loginToken = null,
          $loginCaptcha = null,
          $authenticationURL);

$youtube = new Zend_Gdata_YouTube( $httpClient, '', NULL, YOUTUBE_DEVELOPER_KEY );

$youtubeEntry = $youtube->getFullVideoEntry( 'ID_OF_YOUTUBE_MOVIE' ); 
// its the 11 digit id all youtube video's have

в $ youtube. Все ваши данные о видео присутствуют

$state = $youtubeEntry->getVideoState();

если состояние равно нулю, ваше видео доступно, иначе сделайте из состояния строку, подобную этой.

(string) $state->getName();

Существует около 4 важных названий состояний. (обработка, отклонение, сбой, ограничение)

...