因此,我需要获取播放列表中每个视频的持续时间,问题是不包含持续时间,理论上我可以使用EndAt和StartAt值进行计算,但是它们不再填充数据,并且总是空(请参阅文档)。
到目前为止,所有这些操作都是使用Google.Apis.YouTube.v3
完成的。我目前拥有的代码:
var PlaylistItemRequest = YouTubeService.PlaylistItems.List("snippet,contentDetails");
PlaylistItemRequest.PlaylistId = Find;
PlaylistItemRequest.MaxResults = 50;
List<Song> PlaylistItems = new List<Song>();
while (true)
{
var PlaylistItemResponse = await PlaylistItemRequest.ExecuteAsync();
foreach (var playlistitem in PlaylistItemResponse.Items)
PlaylistItems.Add(new Song(playlistitem.Snippet.Title, playlistitem.ContentDetails.EndAt, playlistitem.ContentDetails.StartAt, $"https://www.youtube.com/watch?v={playlistitem.Id}", playlistitem.Snippet.Thumbnails.Default__.Url, DateTime.UtcNow, null, user.Id));
if (PlaylistItemResponse.NextPageToken == null) break;
PlaylistItemRequest.PageToken = PlaylistItemResponse.NextPageToken;
}
然后我以为我可以做这样的事情,因为这样可以给我持续播放视频的时间:
var request = YouTubeService.Videos.List("snippet,contentDetails,statistics");
问题在于,我需要为播放列表中的每首歌曲发送该歌曲,并且我不想冒险违反Google API的速率限制。因为有200个请求。
感谢您的帮助!
注意:如果可能,我需要没有手动延迟的解决方案。