public async Task <List <Video> > GetChannelVideos(ChannelVideosQuery channelVideosQuery, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (channelVideosQuery == null)
            {
                throw new ArgumentNullException(nameof(channelVideosQuery));
            }
            if (IsNullOrWhiteSpace(channelVideosQuery.ChannelName))
            {
                throw new ArgumentNullException(nameof(channelVideosQuery.ChannelName));
            }

            var request = RequestConstants.ChannelVideos.Replace("{0}", channelVideosQuery.ChannelName);

            request += $"?offset={channelVideosQuery.Skip}&limit={channelVideosQuery.Take}";
            if (channelVideosQuery.BroadcastsOnly)
            {
                request += "&broadcasts=true";
            }
            if (channelVideosQuery.HLSVodsOnly)
            {
                request += "&hls=true";
            }

            var channelVideosRoot = await ExecuteRequest <ChannelVideosRoot>(request, cancellationToken);

            return(channelVideosRoot.Videos);
        }
        public async Task GetChannelVideos()
        {
            var channelVideosQuery = new ChannelVideosQuery("ECTVLoL");
            var videos             = await sut.GetChannelVideos(channelVideosQuery);

            Assert.NotNull(videos);
            Assert.NotEmpty(videos);
            Assert.NotNull(videos[0].Channel);
        }
        public async Task GetChannelVideos(string channelName, bool broadcastsOnly, bool hlsVodsOnly)
        {
            var channelVideosQuery = new ChannelVideosQuery()
            {
                ChannelName    = channelName,
                BroadcastsOnly = broadcastsOnly,
                HLSVodsOnly    = hlsVodsOnly,
            };
            var channelVideos = await sut.GetChannelVideos(channelVideosQuery);

            Assert.NotNull(channelVideos);
            Assert.NotEmpty(channelVideos);
        }
        public async Task <List <Video> > GetChannelVideos(ChannelVideosQuery channelVideosQuery, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (channelVideosQuery == null)
            {
                throw new ArgumentNullException(nameof(channelVideosQuery));
            }
            if (IsNullOrWhiteSpace(channelVideosQuery.ChannelName))
            {
                throw new ArgumentNullException(nameof(channelVideosQuery.ChannelName));
            }

            var request = RequestConstants.ChannelVideos.Replace("{0}", channelVideosQuery.ChannelName);

            // hitbox doesn't actually have any offset/start value specified in their documentation
            // so maybe they dont have any paging available through the api: http://developers.hitbox.tv/#list-videos
            request += $"?offset={channelVideosQuery.Skip}&limit={channelVideosQuery.Take}";

            var channelVideosRoot = await HttpClientExtensions.ExecuteRequest <ChannelVideosRoot>(request, cancellationToken);

            return(channelVideosRoot?.Videos);
        }
Exemple #5
0
        public async Task <List <VodDetails> > GetVods(VodQuery vodQuery)
        {
            if (vodQuery == null)
            {
                throw new ArgumentNullException(nameof(vodQuery));
            }
            if (string.IsNullOrWhiteSpace(vodQuery.StreamId))
            {
                throw new ArgumentNullException(nameof(vodQuery.StreamId));
            }

            var channelVideosQuery = new ChannelVideosQuery()
            {
                ChannelName    = vodQuery.StreamId,
                Take           = vodQuery.Take,
                Skip           = vodQuery.Skip,
                HLSVodsOnly    = true,
                BroadcastsOnly = vodQuery.VodTypes.Contains(BroadcastVodType)
            };
            var channelVideos = await twitchTvClient.GetChannelVideos(channelVideosQuery);

            var vods = channelVideos.Select(channelVideo => new VodDetails
            {
                // hack to correct the url path for twitch videos see github issue: https://github.com/laurencee/Livestream.Monitor/issues/24
                // was previously   twitch.tv/videos/XXXXXXX
                // now is           twitch.tv/user/v/XXXXXXX
                Url          = channelVideo.Url.Replace(@"twitch.tv/videos/", @"twitch.tv/user/v/"),
                Length       = TimeSpan.FromSeconds(channelVideo.Length),
                RecordedAt   = channelVideo.RecordedAt ?? DateTimeOffset.MinValue,
                Views        = channelVideo.Views,
                Game         = channelVideo.Game,
                Description  = channelVideo.Description,
                Title        = channelVideo.Title,
                PreviewImage = channelVideo.Preview,
                ApiClient    = this,
            }).ToList();

            return(vods);
        }
Exemple #6
0
 public void SetChannelVideos(ChannelVideoIdsDto channelVideoIds)
 {
     var query = new ChannelVideosQuery(channelVideoIds.ChannelId);
     _channelVideosQueryHandler.CreateOrUpdateValueById<ChannelVideoIdsDto>(query, channelVideoIds);
 }
Exemple #7
0
 public ChannelVideoIdsDto GetChannelVideos(string id)
 {
     var query = new ChannelVideosQuery(id);
     return _channelVideosQueryHandler.GetValueById(query);
 }