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

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

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

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

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

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

Если вы когда-нибудь обнаружите, что у вас есть произвольное устаревшее имя пользователя YouTube, которое вам нужно преобразовать в идентификатор канала с помощью v3 API, вы можете сделать вызов 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

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