public SearchBE Search(string query)
        {
            SearchBE r = new SearchBE();

            try
            {
                string apiKey         = AppSettingsHelper.GetValue("GoogleAPIKey");
                string searchEngineID = AppSettingsHelper.GetValue("GoogleSearchEngineID");

                CustomsearchService service = new CustomsearchService(new BaseClientService.Initializer {
                    ApiKey = apiKey
                });
                CseResource.ListRequest rq = service.Cse.List(query);
                rq.Cx = searchEngineID;

                Search search = rq.Execute();
                if (search != null)
                {
                    r.SearchEngine      = "Google";
                    r.Query             = query;
                    r.TotalResult       = search.SearchInformation.TotalResults;
                    r.FormatTotalResult = search.SearchInformation.FormattedTotalResults;
                    r.Time = search.SearchInformation.SearchTime;
                }
            }
            catch (Exception e)
            {
                r.SearchEngine = "Google";
                r.Query        = query + e.Message;
                r.TotalResult  = 0;
                r.Time         = 0;
            }
            return(r);
        }
示例#2
0
        /// <summary>
        /// Searches Google
        /// </summary>
        /// <param name="search"></param>
        /// <param name="appName"></param>
        /// <returns></returns>
        public static Search Search(string search, string appName)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(Config.bot.Apis.ApiGoogleSearchKey) ||
                    string.IsNullOrWhiteSpace(Config.bot.Apis.GoogleSearchEngineId))
                {
                    return(null);
                }

                Search googleSearch;

                using (CustomsearchService google = new CustomsearchService(new BaseClientService.Initializer
                {
                    ApiKey = Config.bot.Apis.ApiGoogleSearchKey,
                    ApplicationName = appName
                }))
                {
                    CseResource.ListRequest searchListRequest = google.Cse.List();
                    searchListRequest.Q  = search;
                    searchListRequest.Cx = Config.bot.Apis.GoogleSearchEngineId;

                    googleSearch = searchListRequest.Execute();
                }

                return(googleSearch);
            }
            catch
            {
                return(null);
            }
        }
示例#3
0
        public string GetShoeImage(string SiteName, string ShoeID, string Style_Number)
        {
            string query        = ShoeID + " " + Style_Number + " " + SiteName + " image";
            string first_result = "";

            CseResource.ListRequest listRequest = Service.Cse.List(query);
            listRequest.Cx         = cx;
            listRequest.Num        = 5;
            listRequest.Start      = 1;
            listRequest.SearchType = CseResource.ListRequest.SearchTypeEnum.Image;
            listRequest.ImgSize    = CseResource.ListRequest.ImgSizeEnum.Medium;
            IList <Result> results = new List <Result>();

            results = listRequest.Execute().Items;
            if (results != null)
            {
                foreach (var result in results)
                {
                    string[] SubRS  = result.Link.Split('/');
                    string[] Sub1RS = first_result.Split('/');
                    if (!SubRS[SubRS.Length - 1].Equals(Sub1RS[Sub1RS.Length - 1]))
                    {
                        first_result = first_result + "\n" + result.Link;
                    }
                }
            }
            else
            {
                first_result = "There is no information about " + ShoeID;
            }
            return(first_result);
        }
示例#4
0
        //------ The Setup---------------------
        public async Task Attracions(IDialogContext context)
        {
            query          = "Tripadvisor attractions " + ciudad;
            listRequest    = customSearchService.Cse.List(query);
            listRequest.Cx = idSearch;

            var search = listRequest.Execute();

            web              = new HtmlWeb();
            htmlDocPlaces    = web.Load(search.Items.ElementAt(0).Link);
            locationsToVisit = htmlDocPlaces.DocumentNode
                               .Descendants()
                               .Where(n => n.NodeType == HtmlNodeType.Element)
                               .Where(e => e.Name == "div" && e.GetAttributeValue("class", "") == "listing_title ");
            places           = "This are the top 5 things to do in " + ciudad + "\n\n";
            locationsToVisit = locationsToVisit.Take(5);
            var htmlDocLocation = new HtmlDocument();

            foreach (var location in locationsToVisit)
            {
                htmlDocLocation.LoadHtml(location.InnerHtml);
                var loc = htmlDocLocation.DocumentNode
                          .Descendants().Where(e2 => e2.Name == "a").First();
                places += loc.InnerText + "\n\n";
            }
            response.Speak = response.Text = places;
            await context.PostAsync(response);

            context.Wait(Selection);
        }
示例#5
0
        public string GetShoeDescription(string SiteName, string ShoeID, string Style_Number)
        {
            string query        = ShoeID + " " + Style_Number + " " + SiteName + " description";
            string first_result = "";

            CseResource.ListRequest listRequest = Service.Cse.List(query);
            listRequest.Cx    = cx;
            listRequest.Num   = 2;
            listRequest.Start = 1;
            IList <Result> results = new List <Result>();

            results = listRequest.Execute().Items;
            if (results != null)
            {
                foreach (var result in results)
                {
                    first_result = first_result + "\n" + result.Snippet;
                }
            }
            else
            {
                first_result = "There is no information about " + ShoeID;
            }
            return(first_result);
        }
示例#6
0
        public async Task <List <GoogleSearch> > SearchGoogle(string search)
        {
            try
            {
                using CustomsearchService googleService = new CustomsearchService(new BaseClientService.Initializer
                {
                    ApiKey          = Config.bot.Apis.ApiGoogleSearchKey,
                    ApplicationName = GetType().ToString()
                });

                CseResource.ListRequest searchRequest = googleService.Cse.List();
                searchRequest.Q  = search;
                searchRequest.Cx = Config.bot.Apis.GoogleSearchEngineId;

                global::Google.Apis.Customsearch.v1.Data.Search googleSearch = await searchRequest.ExecuteAsync();

                List <GoogleSearch> searches = googleSearch.Items
                                               .Select(result => new GoogleSearch(result.Title, result.Snippet, result.Link)).ToList();
                return(searches);
            }
            catch (Exception ex)
            {
                Logger.Error("An error occured while searching Google! {@Exception}", ex);
                return(null);
            }
        }
示例#7
0
        private static string GetRandomCatPicture()
        {
            var queryParams = new Dictionary <string, string>
            {
                ["key"]        = GoogleApiKey,
                ["cx"]         = GoogleSearchEngineId,
                ["q"]          = "kittens",
                ["searchType"] = "image"
            };

            var service = new CustomsearchService(new BaseClientService.Initializer
            {
                ApiKey          = GoogleApiKey,
                ApplicationName = "SelfCareBot"
            });

            CseResource.ListRequest listRequest = service.Cse.List("kittens");
            listRequest.Cx         = GoogleSearchEngineId;
            listRequest.SearchType = CseResource.ListRequest.SearchTypeEnum.Image;

            var search = listRequest.Execute();

            var randomIndex = Rng.Next(0, search.Items.Count - 1);
            var randomItem  = search.Items[randomIndex];

            return(randomItem.Link);
        }
示例#8
0
        public List <String> Search(String query, int pages = 1)
        {
            BaseClientService.Initializer init = new Google.Apis.Services.BaseClientService.Initializer();
            init.ApiKey = key;
            CustomsearchService svc = new CustomsearchService(init);

            List <String> imageUrls = new List <String>();

            for (int p = 1; p <= pages; p++)
            {
                CseResource.ListRequest listRequest = svc.Cse.List(query);
                listRequest.Cx           = customEngine;
                listRequest.SearchType   = CseResource.SearchType.Image;
                listRequest.Start        = p * 10;
                listRequest.ImgColorType = CseResource.ImgColorType.Color;
                Search search = listRequest.Fetch();

                //Let's just get the thumbnail images
                if (search.Items != null)
                {
                    foreach (Result result in search.Items)
                    {
                        imageUrls.Add(result.Image.ThumbnailLink);
                    }
                }
            }
            return(imageUrls);
        }
示例#9
0
        public static async Task <IList <Result> > Search(string query)
        {
            CseResource.ListRequest listRequest = Service.Cse.List(query);
            listRequest.Cx = cx;

            Search search = await listRequest.ExecuteAsync();

            return(search.Items);
        }
        public static IList <Result> Search(string query)
        {
            CseResource.ListRequest listRequest = Service.Cse.List(query);
            listRequest.Cx = cx;

            Search search = listRequest.Execute();

            return(search.Items);
        }
        public static IList <Result> Search(string query, out string total)
        {
            CseResource.ListRequest listRequest = SERVICE.Cse.List();
            listRequest.Cx = CX;
            listRequest.Q  = query;

            Search search = listRequest.Execute();

            total = search.SearchInformation.TotalResults;
            return(search.Items);
        }
示例#12
0
        public static IList <Result> Search(string query)
        {
            Console.WriteLine("Executing google custom search for query: {0} ...", query);

            CseResource.ListRequest listRequest = Service.Cse.List(query);
            listRequest.Cx = cx;

            Search search = listRequest.Execute();

            return(search.Items);
        }
示例#13
0
        public ICollection <Uri> RunService(string searchString, CancellationToken cancelToken)
        {
            CseResource.ListRequest listRequest = BuildRequest(searchString);
            IList <Result>          paging;
            HashSet <Uri>           urls = new HashSet <Uri>();
            int pageNumber = 0;

            do
            {
                listRequest.Start = pageNumber * ResultsPerPage + 1;
                try
                {
                    paging = listRequest.Execute().Items;
                    if (paging != null)
                    {
                        foreach (var item in paging)
                        {
                            if (Uri.TryCreate(item.Link, UriKind.Absolute, out Uri urlFound))
                            {
                                urls.Add(urlFound);
                            }
                            cancelToken.ThrowIfCancellationRequested();
                        }
                    }
                    pageNumber++;
                }
                catch (Google.GoogleApiException e)
                {
                    if (e.Error != null && e.Error.Errors != null && e.Error.Errors.Any())
                    {
                        if (e.Error.Errors.Any(p => "keyInvalid".Equals(p.Reason, StringComparison.OrdinalIgnoreCase)))
                        {
                            throw new ArgumentException("The provided API key is invalid", nameof(ApiKey));
                        }
                        else if (e.Error.Errors.Any(p => "dailyLimitExceeded".Equals(p.Reason, StringComparison.OrdinalIgnoreCase)))
                        {
                            throw new InvalidOperationException("Daily quota exceeded");
                        }
                    }
                    throw;
                }
                catch (OperationCanceledException)
                {
                    throw;
                }
                catch
                {
                    paging = null;
                }
                cancelToken.ThrowIfCancellationRequested();
            } while (paging != null && pageNumber < MaxPages);
            return(urls);
        }
        private async Task <Search> GetGoogleSearchResponse(string sparePartName, string carCharacteristics)
        {
            var searchService = new CustomsearchService(new BaseClientService.Initializer
            {
                ApiKey = apiKey
            });

            CseResource.ListRequest listRequest = searchService.Cse.List();
            listRequest.Q  = $"{sparePartName} {carCharacteristics}";
            listRequest.Cx = searchEngineId;

            return(await listRequest.ExecuteAsync());
        }
示例#15
0
        public async Task <Search> Search(string keyword, bool imageSearch = false)
        {
            CseResource.ListRequest searchRequest = new CseResource.ListRequest(SearchService);
            searchRequest.Cx   = DiscordBot.Program._config["googlecustomsearchid"];
            searchRequest.Q    = keyword;
            searchRequest.Safe = CseResource.ListRequest.SafeEnum.Active;
            if (imageSearch)
            {
                searchRequest.SearchType = CseResource.ListRequest.SearchTypeEnum.Image;
            }

            return(searchRequest.ExecuteAsync().Result);
        }
示例#16
0
        /// <summary>
        /// Tries to search for images in google of a specified query and returns the first 10. Returns whether successfull
        /// </summary>
        /// <param name="query"></param>
        /// <param name="tries"></param>
        /// <returns></returns>
        public bool GetImagesFor(String query, int tries, out List <ImageData> result)
        {
#if LOG_DATA
            DataLogger.Log(String.Concat("[CseManager] Getting images for query \"", query, "\""), LoggingMode.Message);
#endif
            for (int t = 0; t < tries; t++)
            {
                try
                {
#if LOG_DATA
                    DataLogger.Log(String.Concat("[CseManager] Attempting to get images (", t, ")"), LoggingMode.Message);
#endif
                    CseResource.ListRequest req = service.Cse.List(query);
                    req.Cx         = Constants.CSE_CX;
                    req.SearchType = CseResource.ListRequest.SearchTypeEnum.Image;
                    req.FileType   = "png, jpg, jpeg, bmp";
                    req.Rights     = "cc_publicdomain, cc_attribute, cc_sharealike, cc_noncommercial";
                    req.Safe       = CseResource.ListRequest.SafeEnum.Active;
                    Search s = req.Execute();

#if LOG_DATA
                    DataLogger.Log("[CseManager] Recieved images. Processing them into data list", LoggingMode.Message);
#endif
                    result = new List <ImageData>(10);
                    for (int i = 0; i < s.Items.Count; i++)
                    {
                        Result r = s.Items[i];
                        if (r.Image.Width.HasValue && r.Image.Height.HasValue && EndsWithProperImageFormat(r.Link))
                        {
                            result.Add(new ImageData(r));
                        }
                    }
#if LOG_DATA
                    DataLogger.Log(String.Concat("[CseManager] Done processing images into data list. The ", result.Count, " results are:"), LoggingMode.Success);
                    for (int i = 0; i < result.Count; i++)
                    {
                        DataLogger.Log(String.Concat("Width=", result[i].Width, " Height=", result[i].Height, " Extension: ", result[i].Extension, " Link: \"", result[i].Link, "\""), LoggingMode.RawData);
                    }
                    DataLogger.Log("[CseManager] [END OF IMAGE DATA LIST]", LoggingMode.Message);
#endif
                    return(true);
                }
                catch
                {
                }
            }

            result = null;
            return(false);
        }
示例#17
0
        private IList <Result> UserSearch()
        {
            Console.Write("Enter a song: ");
            string query = Console.ReadLine();

            // Actually search for the lyrics
            CustomsearchService searchService = new CustomsearchService(new BaseClientService.Initializer {
                ApiKey = s.APIKey
            });

            CseResource.ListRequest listRequest = searchService.Cse.List(query);
            listRequest.Cx = s.EngineID;

            return(listRequest.Execute().Items);
        }
示例#18
0
        private IEnumerable <Result> Search(CseResource.ListRequest request, int offset, int targetCount, DateTime?dt = null)
        {
            var            results   = new List <Result>();
            IList <Result> paging    = new List <Result>();
            int            count     = 0;
            long           tempCount = targetCount;

            while ((paging != null) && tempCount > 0)
            {
                request.Start = count * 10 + 1 + offset;
                if ((tempCount % 10) == 0)
                {
                    request.Num = 10;
                }
                else
                {
                    request.Num = (tempCount % 10);
                }
                try
                {
                    paging = request.Execute().Items;
                }
                catch (Exception ex)
                {
                    if (ex.Message.Contains("Reason[keyInvalid]"))
                    {
                        throw new InvaildKeyException("입력된 구글 키가 올바르지 않습니다.");
                    }
                }

                if (paging != null)
                {
                    results.AddRange(paging);
                    var itm = paging.AsParallel().Select(i => ConvertType(i, dt));
                    itm.ForEach(i => OnSearchItemFound(this, new SearchResultEventArgs(i, ServiceKind.GoogleCSE)));
                }

                count++;

                tempCount -= request.Num.Value;
                Current   += (int)request.Num.Value;

                int currCount = (int)(targetCount - tempCount);
                OnSearchProgressChanged(this, new ProgressEventArgs(Maximum, Current));
            }

            return(results);
        }
示例#19
0
        public string[] Check(string _query)
        {
            CseResource.ListRequest listRequest = svc.Cse.List(_query);
            listRequest.Cx = "001556608615224035032:bh8b1bv0adq";
            Search req = listRequest.Execute();

            string[] ret = new string[req.Items.Count];
            int      i   = 0;

            foreach (Result result in req.Items)
            {
                ret[i] = result.Link;
                ++i;
            }
            return(ret);
        }
示例#20
0
        public string[] Search(string _query)
        {
            CseResource.ListRequest listRequest = svc.Cse.List(_query);
            listRequest.Cx = searchengine;
            Search req = listRequest.Execute();

            string[] ret = new string[req.Items.Count];
            int      i   = 0;

            foreach (Result result in req.Items)
            {
                ret[i] = result.Link;
                ++i;
            }
            return(ret);
        }
示例#21
0
        public static async Task <SearchResult> SearchAsync(string query)
        {
            CseResource.ListRequest request = service.Cse.List();

            request.Cx = searchId;
            request.Q  = query;

            Search data = await request.ExecuteAsync();

            if (data.Items.Count == 0)
            {
                throw new FileNotFoundException();
            }

            return(new SearchResult(data.Items[0].Title, data.Items[0].FormattedUrl, data.Items[0].Snippet));
        }
示例#22
0
 public static long?Search(string query)
 {
     try
     {
         CseResource.ListRequest listRequest = Service.Cse.List(query);
         listRequest.Cx = searchEngineId;
         Search search      = listRequest.Execute();
         var    totalResult = search.SearchInformation.TotalResults;
         return(totalResult);
     }
     catch (Exception ex)
     {
         LogError.AddLogError(ex.Message, ex.StackTrace);
         return(-1);
     }
 }
        public SearchResult[] Search(string keyword, int resultCount)
        {
            using (CustomsearchService Service = new CustomsearchService(
                       new BaseClientService.Initializer
            {
                ApiKey = subscriptionKey,
            }
                       )) {
                CseResource.ListRequest listRequest = Service.Cse.List(keyword);
                listRequest.Cx  = customSearchEngineID;
                listRequest.Num = resultCount;
                Search search = listRequest.Execute();

                return(search.Items?.Select(item => new SearchResult(item.Link, item.Title)).ToArray());
            }
        }
示例#24
0
        //private Google.Apis.Translate.v2.TranslationsResource.ListRequest MakeTranlationsRequest(string keywords)
        //{
        //    var svc = new TranslateService(new BaseClientService.Initializer
        //    {
        //        ApiKey = Key
        //    });

        //    var listRequest = svc.Translations.List(keywords,TargetLangCode);
        //    listRequest.Key = EngineKey;
        //    return listRequest;
        //}

        //public string Translate(string text, string targetLang)
        //{
        //    var request = MakeTranlationsRequest(text);
        //    TranslationsListResponse response = request.Execute();
        //    return response.Translations.Select(t => t.TranslatedText).ToArray()[0];
        //}

        public Search Search(string keywords)
        {
            List <string> _results = new List <string>();

            CseResource.ListRequest listRequest = MakeSearchRequest(keywords);
            listRequest.Gl = "en";
            listRequest.Hl = "vi";

            try
            {
                var search = listRequest.Execute();
                return(search);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return(null);
            }
        }
        public override async Task <EngineResult> Search(string keyword)
        {
            CseResource.ListRequest listRequest = this.Service.Cse.List();
            Search result;

            try {
                listRequest.Q = keyword;
                result        = await listRequest.ExecuteAsync();
            } catch (Exception ex) {
                return(new EngineResult {
                    EngineName = base.EngineName,
                    ResultCount = 0
                });
            }

            return(new EngineResult {
                EngineName = base.EngineName,
                ResultCount = result.Items.Count
            });
        }
示例#26
0
        /// <summary>
        /// Google Custom Search를 이용해 검색을 실시합니다.
        /// </summary>
        /// <param name="searchOption">Google Custom Search의 검색 옵션입니다.</param>
        /// <returns></returns>
        public override IEnumerable <GoogleCSESearchResult> Search(GoogleCSESearchOption searchOption)
        {
            query = searchOption.Query;

            CseResource.ListRequest request = BuildRequest(searchOption);

            if (!searchOption.SplitWithDate)
            {
                Maximum = searchOption.SearchCount;

                IEnumerable <Result> results = Search(request, searchOption.Offset, searchOption.SearchCount);

                OnSearchFinished(this, new SearchFinishedEventArgs(ServiceKind.GoogleCSE));

                if (results.Count() == 0)
                {
                    return(Enumerable.Empty <GoogleCSESearchResult>());
                }

                return(ConvertType(results));
            }
            else
            {
                Maximum = searchOption.SearchCount * searchOption.DateRange.GetDateRange().Count();

                if (!searchOption.UseDateSearch) // DateSearch가 아닌데 날짜별로 구분할 수 없으므로 예외 발생
                {
                    throw new InvaildOptionException("날짜를 사용하지 않는데 날짜별로 구분해 검색할 수 없습니다.");
                }

                var results = new List <Result>();

                foreach (DateTime dt in searchOption.DateRange.GetDateRange())
                {
                    request.Sort = $"date:r:{dt.To8LengthYear()}:{dt.To8LengthYear()}";
                    results.AddRange(Search(request, searchOption.Offset, searchOption.SearchCount, dt));
                }

                return(ConvertType(results));
            }
        }
示例#27
0
        public Queue <Uri> InitialSearch(string searchWord)
        {
            string apiKey         = _apiKey;
            string searchEngineId = _searchEngineId;

            CustomsearchService customsearchService = new CustomsearchService(new BaseClientService.Initializer {
                ApiKey = apiKey
            });

            CseResource.ListRequest listRequest = customsearchService.Cse.List(searchWord);
            listRequest.Cx = searchEngineId;
            Search search = listRequest.Execute();

            Queue <Uri> links = new Queue <Uri>();

            foreach (Result result in search.Items)
            {
                links.Enqueue(new UriBuilder(result.Link).Uri);
            }
            customsearchService.Dispose();
            return(links);
        }
示例#28
0
        private static void testAPI()
        {
            const string        apiKey              = "AIzaSyCwFvHnS7ps107BmBFo4Tr09QFbRbMz7IU";
            const string        searchEngineId      = "015538826641141501626:59gwbfycqn0";
            const string        query               = "\"bike equipment\", distributor, Canada";
            CustomsearchService customSearchService = new CustomsearchService(new BaseClientService.Initializer {
                ApiKey = apiKey
            });

            CseResource.ListRequest listRequest = customSearchService.Cse.List(query);
            listRequest.Cx        = searchEngineId;
            listRequest.Filter    = CseResource.ListRequest.FilterEnum.Value1;
            listRequest.HighRange = "";
            Console.WriteLine("Start...");


            IList <Result> paging = new List <Result>();
            var            count  = 0;
            var            index  = 0;

            while (paging != null)
            {
                Console.WriteLine($"Page [{count}]");
                listRequest.Start = count * 10 + 1;
                paging            = listRequest.Execute().Items;
                if (paging != null)
                {
                    foreach (Result item in paging)
                    {
                        if (item.FileFormat == null)
                        {
                            Console.WriteLine($"\t[{++index}] Title : {item.Link}");
                        }
                    }
                }
                count++;
            }
        }
示例#29
0
        protected override System.Collections.Generic.List <string> DiscoverImageUrls(string search)
        {
            string apiKey = REPLACE_WITH_YOUR_API_KEY;
            string cx     = REPLACE_WITH_YOUR_CUSTOM_SEARCH_CX;
            string query  = search;

            CustomsearchService svc = new CustomsearchService(new BaseClientService.Initializer()
            {
                ApplicationName = "Drollic Dreamer",
                ApiKey          = apiKey,
            });

            Random rand = new Random();

            CseResource.ListRequest listRequest = svc.Cse.List(query);
            listRequest.Cx         = cx;
            listRequest.SearchType = CseResource.ListRequest.SearchTypeEnum.Image;
            listRequest.ImgType    = CseResource.ListRequest.ImgTypeEnum.Photo;
            listRequest.Num        = 10;
            listRequest.Start      = rand.Next() % 90;

            Search searchResult = listRequest.Execute();

            System.Collections.Generic.List <string> results = new System.Collections.Generic.List <string>();
            foreach (Result result in searchResult.Items)
            {
                //Console.WriteLine("Title: {0}", result.Title);
                //Console.WriteLine("Link: {0}", result.Link);
                results.Add(result.Link);

                if (results.Count >= this.TotalDesiredImages)
                {
                    break;
                }
            }

            return(results);
        }
示例#30
0
        public List <SingleResult> GetSearchResults(string query)
        {
            _listRequest    = _customSearchService.Cse.List(query);
            _listRequest.Cx = searchEngineId;

            int pageIndex = 0;

            while (_results.Count < 12 && _paging != null)
            {
                _listRequest.Start = pageIndex * 10 + 1;
                _paging            = _listRequest.Execute().Items;
                foreach (var item in _paging)
                {
                    _results.Add(new SingleResult {
                        Title = item.Title, Url = item.Link
                    });
                }

                pageIndex++;
            }

            return(_results.Take(12).ToList());
        }