Пример #1
0
        public async Task <IResponceList> Search(string searchString, int maxResult, string nextPageToken, string culture, SearchType searchType, SearchFilter searchFilter)
        {
            var request = _youTubeService.Search.List("snippet,id");

            request.Key               = _youTubeServiceControl.ApiKey;
            request.PageToken         = nextPageToken;
            request.MaxResults        = SEARCH_PAGE_MAX_RESULT;
            request.Type              = searchType.ToTypeString();
            request.Q                 = searchString;
            request.Order             = searchFilter.Order;
            request.PublishedAfter    = searchFilter.PublishedAfter;
            request.PublishedBefore   = searchFilter.PublishedBefore;
            request.RegionCode        = I18nLanguages.GetRegionCode(culture);
            request.RelevanceLanguage = I18nLanguages.GetHl(culture);

            if (searchType == SearchType.Video)
            {
                request.VideoDuration   = searchFilter.VideoDuration;
                request.VideoDefinition = searchFilter.VideoDefinition;
            }

            var response = await request.ExecuteAsync();

            if (searchType == SearchType.Video)
            {
                var ids = new StringBuilder();
                foreach (var item in response.Items)
                {
                    ids.AppendLine(item.Id.VideoId);
                    ids.AppendLine(",");
                }
                var videoDetails = await GetVideoDetails(ids.ToString());

                return(new MVideoList(response, videoDetails));
            }

            if (searchType == SearchType.Channel)
            {
                return(new MChannelList(response));
            }

            if (searchType == SearchType.Playlist)
            {
                var ids = new StringBuilder();
                foreach (var item in response.Items)
                {
                    ids.AppendLine(item.Id.PlaylistId);
                    ids.AppendLine(",");
                }
                var list = await GetPlaylistList(ids.ToString(), response.NextPageToken);

                return(list);
            }

            return(MVideoList.Empty);
        }