Как работать с идентификаторами каналов

Джефф Посник (Jeff Posnick), отдел по связям с разработчиками YouTube, июнь 2013 г.

Уже больше года можно связывать профили Google+ с каналами YouTube. Мы писали в блоге о том, как в результате этого изменились некоторые ответы Data API v2. Недавно появилась возможность создавать каналы YouTube, которые не имеют традиционного имени пользователя YouTube, а идентифицируются только по профилю Google+. Большая часть информации из той записи в блоге по-прежнему актуальна, но это дополнительное изменение делает недействительными некоторые фундаментальные предположения о каналах YouTube, например о том, что каждый из них всегда будет связан с уникальным именем пользователя YouTube. Поэтому мы решили опубликовать дополнительные рекомендации по написанию кода, который работает со всеми типами каналов.

Идентификаторы каналов в Data API v3

Во всех операциях версии 3, связанных с каналами, для их идентификации используются только идентификаторы каналов. Идентификатор канала пользователя YouTube одинаков в версиях 2 и 3 API, что упрощает переход между ними. Такая зависимость от идентификаторов каналов может смутить разработчиков, которые привыкли передавать методам API имена пользователей YouTube. Однако версия 3 была разработана для того, чтобы одинаково обрабатывать каналы с устаревшими именами пользователей и без них, а это означает, что идентификаторы каналов используются везде.

Если вы используете версию 3 и хотите получить идентификатор канала, соответствующий авторизованному пользователю, вызовите метод channels.list(part="id", mine=true). Это аналогично запросу профиля канала пользователя default в версии 2.

Если вам нужно преобразовать устаревшее имя пользователя YouTube в идентификатор канала с помощью API версии 3, вы можете сделать вызов channels.list(part="id", forUsername="username").

Если вы знаете только отображаемое название и хотите найти соответствующий канал, вам пригодится метод search.list(part="snippet", type="channel", q="display name"). Будьте готовы к тому, что в ответе на вызов может быть несколько элементов, поскольку отображаемые названия не уникальны.

Идентификаторы каналов в Data API версии 2

Примечание. Поддержка YouTube Data API (v2) прекращена 26 февраля 2014 года. API отключен. Если вы все ещё используете API версии 2, вам необходимо как можно скорее перейти на версию 3.

Самое важное, что нужно знать разработчикам, использующим старый Data API v2, – это то, что не у каждого канала YouTube есть уникальное имя пользователя. К счастью, у каждого канала YouTube есть уникальный идентификатор, который указывается в теге <yt:channelId>. Мы рекомендуем разработчикам использовать именно его, а не имена пользователей. Например, если у вас есть база данных, в которой имена пользователей YouTube сопоставляются с информацией о канале, старые записи должны продолжать работать. (У существующих каналов имена пользователей не будут удалены.) Однако со временем вам все чаще придется работать с каналами, которые нельзя однозначно идентифицировать по имени пользователя.

Переход от имен пользователей к идентификаторам каналов упрощается благодаря двум факторам. Во-первых, Data API v2 принимает идентификаторы каналов в URL запросов везде, где принимает имена пользователей YouTube. Это значит, что вы можете без проблем заменить идентификатор канала в существующем коде. Например, поскольку UC_x5XG1OV2P6uZZ5FSM9Ttw – это идентификатор канала со старым именем пользователя GoogleDevelopers, следующие два URL представляют собой эквивалентные запросы к API:

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1
https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

Ещё один важный момент: при создании аутентифицированных запросов v2 вам не нужно включать имя пользователя авторизованного канала в URL запроса. Вместо имени пользователя (или идентификатора канала) всегда можно использовать значение default. Например, если вы хотите получить фид загруженных видео для авторизованного пользователя, используйте URL https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1.