Youtube /v3/search API 不再返回直播视频
Youtube /v3/search API no longer returning live videos
我一直在使用 YouTube search API 通过频道 ID 检索直播视频,但最近 API 开始 return 空响应。
例如,我正在从 https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&eventType=live&key={YOUTUBE_KEY}&channelId=UCPde4guD9yFBRzkxk2PatoA
中检索 return 所有来自 channelID = UCPde4guD9yFBRzkxk2PatoA
的直播视频。该频道有 24/7 直播,但我得到的回复是:
{
"kind": "youtube#searchListResponse",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/-f6JA5_OcXz2RWuH1mpAA2_9mM8\"",
"regionCode": "US",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
}
正如我之前提到的,此请求直到最近才正常检索数据。我无法在 YouTube API 文档上找到任何更改,所以我想知道是否有人知道发生了什么更改,或者我是否可以采用不同的方法通过频道 ID 提取实时视频。
不是答案,但端点似乎没有 returning 任何包含直播的近期视频。据我所知,return 过去 24 小时内没有发布任何内容。
在 Google 支持上发现了一个未解决的问题
https://support.google.com/youtube/thread/14611425?hl=en
作为替代方案,您可以加载“uploads”播放列表,
检查
试试这个代码
async static Task<IEnumerable<YouTubeVideo>> GetVideosList(Configurations configurations, string searchText = "", int maxResult = 20)
{
List<YouTubeVideo> videos = new List<YouTubeVideo>();
using (var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
ApiKey = configurations.ApiKey
}))
{
var searchListRequest = youtubeService.Search.List("snippet");
searchListRequest.Q = searchText;
searchListRequest.MaxResults = maxResult;
searchListRequest.ChannelId = configurations.ChannelId;
searchListRequest.Type = "video";
searchListRequest.Order = SearchResource.ListRequest.OrderEnum.Date;// Relevance;
var searchListResponse = await searchListRequest.ExecuteAsync();
foreach (var responseVideo in searchListResponse.Items)
{
videos.Add(new YouTubeVideo()
{
Id = responseVideo.Id.VideoId,
Description = responseVideo.Snippet.Description,
Title = responseVideo.Snippet.Title,
Picture = GetMainImg(responseVideo.Snippet.Thumbnails),
Thumbnail = GetThumbnailImg(responseVideo.Snippet.Thumbnails)
});
}
return videos;
}
}
自 8/2020 起,API 发生了一些变化,您需要添加 &type=video 或将其添加到您的 post 请求中,否则在某些情况下您会得到来自端点的空响应或随机响应
对于较旧的频道,您可能会得到正确的响应,这似乎是 API
中的错误
我一直在使用 YouTube search API 通过频道 ID 检索直播视频,但最近 API 开始 return 空响应。
例如,我正在从 https://www.googleapis.com/youtube/v3/search?part=snippet&type=video&eventType=live&key={YOUTUBE_KEY}&channelId=UCPde4guD9yFBRzkxk2PatoA
中检索 return 所有来自 channelID = UCPde4guD9yFBRzkxk2PatoA
的直播视频。该频道有 24/7 直播,但我得到的回复是:
{
"kind": "youtube#searchListResponse",
"etag": "\"8jEFfXBrqiSrcF6Ee7MQuz8XuAM/-f6JA5_OcXz2RWuH1mpAA2_9mM8\"",
"regionCode": "US",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
}
正如我之前提到的,此请求直到最近才正常检索数据。我无法在 YouTube API 文档上找到任何更改,所以我想知道是否有人知道发生了什么更改,或者我是否可以采用不同的方法通过频道 ID 提取实时视频。
不是答案,但端点似乎没有 returning 任何包含直播的近期视频。据我所知,return 过去 24 小时内没有发布任何内容。
在 Google 支持上发现了一个未解决的问题 https://support.google.com/youtube/thread/14611425?hl=en
作为替代方案,您可以加载“uploads”播放列表, 检查
试试这个代码
async static Task<IEnumerable<YouTubeVideo>> GetVideosList(Configurations configurations, string searchText = "", int maxResult = 20)
{
List<YouTubeVideo> videos = new List<YouTubeVideo>();
using (var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
ApiKey = configurations.ApiKey
}))
{
var searchListRequest = youtubeService.Search.List("snippet");
searchListRequest.Q = searchText;
searchListRequest.MaxResults = maxResult;
searchListRequest.ChannelId = configurations.ChannelId;
searchListRequest.Type = "video";
searchListRequest.Order = SearchResource.ListRequest.OrderEnum.Date;// Relevance;
var searchListResponse = await searchListRequest.ExecuteAsync();
foreach (var responseVideo in searchListResponse.Items)
{
videos.Add(new YouTubeVideo()
{
Id = responseVideo.Id.VideoId,
Description = responseVideo.Snippet.Description,
Title = responseVideo.Snippet.Title,
Picture = GetMainImg(responseVideo.Snippet.Thumbnails),
Thumbnail = GetThumbnailImg(responseVideo.Snippet.Thumbnails)
});
}
return videos;
}
}
自 8/2020 起,API 发生了一些变化,您需要添加 &type=video 或将其添加到您的 post 请求中,否则在某些情况下您会得到来自端点的空响应或随机响应
对于较旧的频道,您可能会得到正确的响应,这似乎是 API
中的错误