Beispiel #1
0
        public static IYoutubeItem Details(this YoutubeSearchResult searchResult)
        {
            switch (searchResult.ResultKind)
            {
            case ResourceKind.Video: return(Video(searchResult.Id));

            case ResourceKind.Playlist: return(Playlist(searchResult.Id));

            case ResourceKind.Channel: return(Channel(searchResult.Id));

            default: throw new InvalidOperationException();
            }
        }
Beispiel #2
0
        public Task <YoutubeSearchResult> Search(YoutubeSearchCriteria criteria)
        {
            var query = _repository.YoutubeVideos;

            if (!criteria.SearchPhrase.IsNullOrEmpty())
            {
                query = query.Where(x => x.VideoTitle.Contains(criteria.SearchPhrase));
            }

            var videoIds = query.Skip(criteria.Skip)
                           .Take(criteria.Take)
                           .Select(x => x.Id)
                           .ToList();



            var result = new YoutubeSearchResult
            {
                TotalCount = _repository.YoutubeVideos.Count(),
                Results    = _repository.YoutubeVideos.Where(x => videoIds.Contains(x.Id)).ToArray().OrderBy(x => videoIds.IndexOf(x.Id)).ToList()
            };

            return(Task.FromResult(result));
        }
Beispiel #3
0
 public static TItem Details <TItem>(this YoutubeSearchResult searchResult) where TItem : class, IYoutubeItem
 {
     return(Details(searchResult) as TItem);
 }