Загрузка видео посредством YouTube API

Загрузка видео посредством YouTube API

Некоторое время назад по работе пришлось изучить и настроить работу сайта заказчика с YouTube, после этого для своего, как это теперь принято говорить, стартапа, я применил практически те же знания и умения. В этом небольшом посте я расскажу, как используя youtube api загружать видео файлы. Оговорюсь сразу, что не стоит уделять большое внимание приведенному в посте коду – он написан специально для этого поста и несет скорее смысловую нагрузку для лучшего понимания. Весь код на этаком диалекте PHP :)

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

Шаг второй начинается с посещения страницы http://code.google.com/apis/youtube/dashboard/, где мы получаем свой ключ разработчика (Developer Key). На указанной странице нужно будет указать название вашего приложения, URL сайта с которого мы будем отправлять запросы и описание. Введя необходимые данные система сгенерируется для нас наш ключ, который представляет из себя последовательность символов вроде: AI39si5b05QIsObFU2_BSrPvyO6zC9Eu14BnDzKkhhIqHebS4PqE8o2AKigjP8gCaYTFblB8bpj8CkIWAUMF0vWBU5qykdmWjw.

Стоит отметить, что при отправке данных YouTube мы будем передавать в том числе два основных параметра X-GData-Client: <client_id>, где <client_id> — это собственно указанное название приложения, и X-GData-Key: key=<developer_key>, где как нетрудно догадаться <developer_key> — сгенерированный ключ. На этом этапе мы закончили подготовку и начинаем построение приложения.

Шаг третий начинается с изучения документации разработчика (http://code.google.com/intl/ru/apis/youtube/developers_guide_protocol.html), понять структуру документации — очень важно, потому что для людей не знакомых с системой организации документации у Google это изначально может показаться сложным. После того, как вы поймете, что и откуда – проблемы исчезнут.

  • API_KEY – девелоперский ключ
  • API_NAME – название приложения
  • YOUTUBE_EMAIL – регистрационный е-майл на YouTube
  • YOUTUBE_PASS – пароль для входа в ваш аккаунт на YouTube
  • YOUTUBE_USERNAME – имя пользователя на YouTube

Для начала корректной работы нам требуется получить значение еще одной константы – маркер аутентификации. Google предоставляет два типа аутентификации: Auth Sub и ClientLogin. Последний способ будет рассмотрен в рамках данной заметки – это позволит определять аккаунт пользователя, связанный с последующими запросами, именно поэтому нам нужно будет передать в последующих запросах логин и пароль.

Нам необходимо на URL www.google.com/youtube/accounts/ClientLogin отправить данные, которые позволят нас однозначно идентифицировать и предоставить маркер аутентификации. Ниже я приведу небольшой кусок кода, очевидно, что для тех, кто хочет использовать curl этот код станет более элегантным, но я предупреждал в самом начале, что код приводится только для ознакомления:

$eq = 'accountType=HOSTED_OR_GOOGLE&Email=YOUTUBE_EMAIL&Passwd=YOUTUBE_PASS&service=youtube&source=API_NAME; if ($fp = fsockopen ("ssl://www.google.com", 443, $errno, $errstr, 20)) preg_match("!(.*?)Auth=(.*?)\n!si",$response,$ok); AUTH_TOKEN = $ok[2];

Итак, как мы теперь видим, мы получили положительный ответ от Google, где среди прочего был приведен маркер аутентификации, который сохранен в константе AUTH_TOKEN. Этот маркер нужно время от времени обновлять – я, к сожалению не нашел как долго маркер считается действительным, поэтому кроном раз в час получаю новый, который позже используется в работе.

Вот теперь мы полностью готовы к работе с YouTube.

Шаг четвертый – загрузка видео. Загрузка видео формально состоит из двух компонентов: отправки данных с последующим получением URL загрузки, и собственно загрузки видео. Для того, чтобы получить уникальный URL загрузки, куда собственно и стоит отправлять наши видео мы должны отправить на сервер данные, которые описывают видео: название, описание, теги и категорию.

Основной URL куда нужно отправлять данные для загрузки, редактирования, удаления, получения содержимого каналов и прочего, прочего – это gdata.youtube.com. Все данные передаются методом POST. Мы формируем запрос:

И после этого отправляем этот запрос:

if ($fp = fsockopen ("gdata.youtube.com", 80, $errno, $errstr, 20)) <input type="file" name="file"/> <input type="hidden" name="token" value="$token[1] " /> <input type="submit" value="go" /> </form>

После загрузки, если она прошла успешно сервер YouTube переправит браузер пользователя на URL_нашего сайта_куда_передать_данные_после_загрузки с уникальным кодом YouTube видео в адресной строке.

Ну, собственно и все, на этот раз. В этой своей заметке я намерено не затрагивал тему обработки ошибок, все это описано в документации, или познается эмпирическим путем. В следующий раз расскажу о проверке загруженного видео, редактировании и удалении.

📎📎📎📎📎📎📎📎📎📎