在YouTube播放列表中获取所有YouTube视频,包括其时长

时间:2018-11-24 12:31:35

标签: c# asynchronous youtube-api youtube-data-api

因此,我需要获取播放列表中每个视频的持续时间,问题是不包含持续时间,理论上我可以使用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个请求。

感谢您的帮助!

注意:如果可能,我需要没有手动延迟的解决方案。

0 个答案:

没有答案