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); }