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

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

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

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

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

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

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

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

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

Примечание. API данных YouTube (версия 2) устарел с 26 февраля 2014 года, и API был отключен . Приложения, все еще использующие API версии 2, должны немедленно перейти на API версии 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

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