Как получить информацию о канале Youtube с помощью API данных Youtube, если канал имеет пользовательский url

Я хотел бы получить подробную информацию о канале YouTube, который имеет пользовательский URL, например https://www.youtube.com/c/pratiksinhchudasamaisawesome.

пользовательские URL-адреса каналов следуют этому формату:https://www.youtube.com/c/{custom_channel_name}.

Я могу получить подробную информацию о каналах YouTube по идентификатору канала и имени пользователя без каких-либо проблем. К сожалению, мне нужно использовать URL-адрес пользовательского канала, который является единственным разом, когда я сталкиваюсь с этой проблемой.

Я разработал свое приложение несколько месяцев назад, и пользовательский URL канала работал до нескольких дней назад. Теперь API данных YouTube ничего не возвращает для URL-адреса пользовательского канала YouTube, если я попытаюсь получить сведения, используя их пользовательское имя.

чтобы получить подробную информацию об этом канале:https://www.youtube.com/user/thenewboston, например, запрос будет:

GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=thenewboston&key={YOUR_API_KEY}

ответ

200
- SHOW HEADERS -
{
 "kind": "youtube#channelListResponse",
 "etag": ""zekp1FB4kTkkM-rWc1qIAAt-BWc/8Dz6-vPu69KX3yZxVCT3-M9YWQA"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 5
 },
 "items": [
  {

   "kind": "youtube#channel",
   "etag": ""zekp1FB4kTkkM-rWc1qIAAt-BWc/KlQLDlUPRAmACwKt9V8V2yrOfEg"",
   "id": "UCJbPGzawDH1njbqV-D5HqKw",
   "snippet": {
    "title": "thenewboston",
    "description": "Tons of sweet computer related tutorials and some other awesome videos too!",
    "publishedAt": "2008-02-04T16:09:31.000Z",
    "thumbnails": {
     "default": {
      "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s88-c-k-no-rj-c0xffffff/photo.jpg"
     },
     "medium": {
      "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg"
     },
     "high": {
      "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg"
     }
    },
    "localized": {
     "title": "thenewboston",
     "description": "Tons of sweet computer related tutorials and some other awesome videos too!"
    }
   }
  }
 ]
}

Он отлично работает.

теперь мы должны получить подробную информацию об этих каналы:

тогда получаем:

GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=annacavalli&key={YOUR_API_KEY}

ответ

200
- SHOW HEADERS -
{
 "kind": "youtube#channelListResponse",
 "etag": ""zekp1FB4kTkkM-rWc1qIAAt-BWc/TAiG4jjJ-NTZu7gPKn7WGmuaZb8"",
 "pageInfo": {
  "totalResults": 0,
  "resultsPerPage": 5
 },
 "items": [
 ]
}

Это можно легко воспроизвести с помощью API explorer.

1 ответов


самое простое решение, используя только API, - это просто использовать метод Search:list API данных YouTube. Из того, что я могу сказать (имейте в виду, это из моих собственных исследований, официальные документы ничего не говорят по этому вопросу!), если вы ищете с помощью пользовательского компонента URL, с фильтром типа результата "канал" и сортировкой "релевантность" (по умолчанию), первый результат должны быть тем, что вы ищете.

таким образом, следующий запрос получает 16 результатов, причем первый из них является тем, который вы ищете. То же самое касается всех других пользовательских URL-адресов каналов, которые я тестировал, поэтому я думаю, что это самый надежный способ сделать это.

GET https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&q=annacavalli&type=channel&key={YOUR_API_KEY}

другая идея - просто очистить страницу YouTube по пользовательскому URL, где вы можете найти ChannelID в одном из метатегов в HTML-коде. Но это неэффективно, ненадежно и AFAIK в нарушение условий использования YouTube.

Edit: Ну, он не возвращает результатов для небольших каналов, поэтому он не надежен вообще.