Пример #1
0
        private static bool IsSameAdress(GeoCoordinate origem, List <GeoCoordinate> waypoints,
                                         GeoCoordinate destino, GoogleResult googleSearch)
        {
            var sameAdress = origem.GetDistanceTo(googleSearch.Origin) < 10 &&
                             destino.GetDistanceTo(googleSearch.Destiny) < 10;

            var sameQuantityWaypoint = waypoints.Count == googleSearch.Waypoints.Count;

            if (!sameQuantityWaypoint)
            {
                return(sameAdress);
            }
            if (!sameAdress)
            {
                return(sameAdress);
            }

            for (int i = 0; i < waypoints.Count; i++)
            {
                sameAdress = googleSearch.Waypoints[i].Equals(waypoints[i]);

                if (!sameAdress)
                {
                    break;
                }
            }
            return(sameAdress);
        }
Пример #2
0
        private List <GoogleResult> GoogleGeocodeResult(XmlDocument document)
        {
            List <GoogleResult> results     = new List <GoogleResult>();
            XmlNodeList         xmlNodeList = document.GetElementsByTagName("result");

            if (xmlNodeList.Count == 0)
            {
                return(results);
            }

            foreach (XmlNode xmlNode in xmlNodeList)
            {
                var xml = new XmlDocument();
                xml.LoadXml(("<root>" + xmlNode.InnerXml + "</root>"));

                var result = new GoogleResult()
                {
                    Address          = xml.GetElementsByTagName("formatted_address")[0].InnerText,
                    FormattedAddress = xml.GetElementsByTagName("formatted_address")[0].InnerText,
                    Latitute         = xml.GetElementsByTagName("lat")[0].InnerText,
                    Longtitute       = xml.GetElementsByTagName("lng")[0].InnerText,
                    LocationType     = xml.GetElementsByTagName("location_type")[0].InnerText,
                    Type             = xml.GetElementsByTagName("type")[0].InnerText,
                };

                results.Add(result);
            }

            return(results);
        }
Пример #3
0
        public ITermSearchService SetupService(HttpStatusCode code, GoogleResult result)
        {
            var handlerMock = new Mock <HttpMessageHandler>(MockBehavior.Strict);

            handlerMock
            .Protected()
            .Setup <Task <HttpResponseMessage> >(
                "SendAsync",
                ItExpr.IsAny <HttpRequestMessage>(),
                ItExpr.IsAny <CancellationToken>()
                )
            .ReturnsAsync(new HttpResponseMessage()
            {
                Content    = new StringContent(JsonSerializer.Serialize(result)),
                StatusCode = code,
            });

            var mockedHttpClient = new HttpClient(handlerMock.Object);

            var accessor = new Mock <IHttpClientAccessor>();

            accessor.SetupGet(m => m.Client).Returns(mockedHttpClient);
            var options = Options.Create(
                new GoogleConfig {
                ApiKey = "key", EngineId = "12", Url = "http://google.com/"
            });

            return(new GoogleTermSearchService(options, accessor.Object));
        }
Пример #4
0
        public GoogleResult GoogleSearchWild([FromBody] string searchText)
        {
            var          query        = HttpUtility.UrlEncode(searchText);
            GoogleResult googleResult = new GoogleResult();
            var          uri          = $"https://www.google.de/search?q={query}";

            if (WebRequest.Create(uri) is HttpWebRequest request)
            {
                var response = request.GetResponse();
                using (var responseStream = response.GetResponseStream())
                    using (var streamReader = new StreamReader(responseStream ?? throw new InvalidOperationException(), Encoding.UTF8))
                    {
                        var responseText = streamReader.ReadToEnd();
                        var doc          = new HtmlDocument();
                        doc.LoadHtml(responseText);
                        var whatUrLookingFor = doc.GetElementbyId("resultStats").InnerHtml;

                        var counter = int.Parse(new String(whatUrLookingFor.Where(Char.IsDigit).ToArray()));
                        googleResult.Counter = counter;
                        googleResult.Query   = query;
                        return(googleResult);
                    }
            }
            googleResult.Counter = 0;
            return(googleResult);
        }
Пример #5
0
        public static void CreateObject()
        {
            var    jsonString   = GET("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=43.319271,-87.952040&radius=105&type=bar&key=AIzaSyCm51Yofz7jCEmtkvN4mFady9iETRhqm_s");
            var    googleResult = GoogleResult.FromJson(jsonString);
            string name         = googleResult.Results[0].Name;

            Console.WriteLine(name);
        }
        public GoogleResult GetDirections(GeoCoordinate origin, List <GeoCoordinate> waypoints, GeoCoordinate destino)
        {
            if (_cache)
            {
                var item = OldResults.FirstOrDefault(pesquisa => IsSameAdress(origin, waypoints, destino, pesquisa));
                if (item != null)
                {
                    item.FromCache = true;
                    return(item);
                }
            }
            var url = GetUrl(origin, waypoints, destino);

            using (var client = new HttpClient())
            {
                try
                {
                    client.BaseAddress = new Uri("https://maps.googleapis.com/maps/api/");
                    client.DefaultRequestHeaders.Accept.Clear();
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    HttpResponseMessage responseMessage = client.GetAsync(url).Result;
                    var resposta = responseMessage.Content.ReadAsStringAsync();
                    var google   = JsonConvert.DeserializeObject <DirectionsResponse>(resposta.Result);
                    if (google.status.Equals("OVER_QUERY_LIMIT"))
                    {
                        // If we get an error, don't cache empty GoogleResult.  Just return null.
                        return(null);
                    }

                    var resultadoPesquisa = new GoogleResult
                    {
                        Directions  = google,
                        RequestDate = DateTime.Now,
                        Origin      = origin,
                        Waypoints   = waypoints,
                        Destiny     = destino,
                        FromCache   = false,
                    };

                    if (_cache)
                    {
                        SaveResult(resultadoPesquisa);
                    }

                    return(resultadoPesquisa);
                }
                catch (Exception)
                {
                    return(null);
                }
            }
        }
        private void SaveResult(GoogleResult googleResult)
        {
            var item = OldResults.FirstOrDefault(pesquisa => IsSameAdress(googleResult.Origin, googleResult.Waypoints, googleResult.Destiny, pesquisa));

            if (item != null)
            {
                lock (OldResults)
                    OldResults.Remove(item);
            }

            OldResults.Add(googleResult);
        }
Пример #8
0
        public GoogleResult GoogleSearch([FromBody] string searchText)
        {
            var apiKey = "AIzaSyAYEw4E8k2V4n2xhEAtl3gPJatZfQ0mbhM";
            var cx     = "004052071860325123994:6giwpag8kue";
            var query  = searchText;
            var svc    = new Google.Apis.Customsearch.v1.CustomsearchService(new BaseClientService.Initializer {
                ApiKey = apiKey
            });
            var listRequest = svc.Cse.List(query);

            listRequest.Cx = cx;
            var search = listRequest.Execute();

            var googleResult = new GoogleResult();

            googleResult.Counter = search.Items.Count;
            googleResult.Query   = query;
            return(googleResult);
        }
Пример #9
0
        public List <GoogleResult> GetGoogleApiResults(string searchPhrase)
        {
            var cx     = "003444117244519549193:t6c4vtktcj3";
            var apiKey = "AIzaSyCbxU8sqWKCN3A3L0oFyHgF0dNDYyr0Z7g";

            var rankCounter = 0;

            var results = new List <GoogleResult>();

            var request = WebRequest.Create("https://www.googleapis.com/customsearch/v1?key=" + apiKey + "&cx=" +
                                            cx + "&q=" + searchPhrase);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream dataStream = response.GetResponseStream();

            StreamReader reader = new StreamReader(dataStream);

            string responseString = reader.ReadToEnd();

            dynamic jsonData = JsonConvert.DeserializeObject(responseString);

            foreach (var item in jsonData.items)
            {
                rankCounter += 1;

                var resultGoogle = new GoogleResult();

                results.Add(new GoogleResult
                {
                    Title        = item.title,
                    URL          = item.link,
                    SearchPhrase = searchPhrase,
                    Rank         = rankCounter
                });

                if (rankCounter == 20)
                {
                    return(results);
                }
            }
            return(results);
        }
        public GoogleResult Search(string keywork, string searchEngineUrl, string targetSite, int firstResults = 100)
        {
            var googleResult = new GoogleResult
            {
                Keyword          = keywork,
                SearchEngineSite = "Google",
                TargetSite       = targetSite,
                NoFirstResult    = firstResults,
                Result           = "0",
                DateSearch       = DateTime.Now
            };

            var results = ParseCiteElement(keywork, searchEngineUrl, firstResults).ToList();

            if (results.Any())
            {
                googleResult.Result = _htmlHelper.FormatSearchResult(results, targetSite);
            }

            return(googleResult);
        }
        private void AdapterItemClicked(object sender, GoogleResult e)
        {
            if (NetworkAvailability.Check())
            {
                var fragment = new PlaceDetailsFragment()
                {
                    Arguments = new Bundle()
                };

                fragment.Arguments.PutString(Common.Constants.BundleKeys.Placeid, e.place_id);

                Activity.SupportFragmentManager
                .BeginTransaction()
                .Replace(Resource.Id.Activity_MainActivity_FragmentContainer, fragment)
                .AddToBackStack(null)
                .Commit();
            }
            else
            {
                Toast.MakeText(Activity, GetString(Resource.String.Error_NoNetwork), ToastLength.Long).Show();
            }
        }
Пример #12
0
 public static string ToJson(this GoogleResult self) => JsonConvert.SerializeObject(self, Google.Converter.Settings);
Пример #13
0
        /// <summary>
        /// Scrape the Google Trends title page
        /// </summary>
        public static async Task ScrapeGoogle()
        {
            GoogleResultList = new List <GoogleResult>();

            using (var browser = new ChromiumWebBrowser(GoogleTrendsUrl))
            {
                browser.Size = new Size(2000, 2000);

                SiteReady = false;

                // Create the load complete handler
                EventHandler <LoadingStateChangedEventArgs> handler = null;

                handler = async(sender, args) =>
                {
                    if (args.IsLoading)
                    {
                        return;
                    }
                    var view = (ChromiumWebBrowser)sender;
                    view.LoadingStateChanged -= handler;

                    // Wait 10 seconds, just in case, for all AJAX calls to complete
                    await Task.Delay(10000);

                    Helper.Log("Google Trends page loaded successfully");

                    var pageRenderPath = await Helper.TakeScreenshot(view);

                    var windowHeight = await Helper.GetJs(view, "window.innerHeight;");

                    // For the first 50 trends
                    for (var i = 0; i < 50; i++)
                    {
                        // Get each trend's properties
                        var googleStoryLink = await Helper.GetJs(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('trending-story ng-isolate-scope')[0].getAttribute('ng-href');");

                        var storyTitle = await Helper.GetJs(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('ng-binding')[0].innerHTML;");

                        var externalStoryLink = await Helper.GetJs(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('image-wrapper ng-scope')[0].getAttribute('ng-href');");

                        var imgLink = await Helper.GetJs(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('image fe-atoms-generic-hide-in-mobile ng-scope')[0].getAttribute('src');");

                        var newImgPath = "none";

                        if (imgLink != "undefined")
                        {
                            // Download the story image, if it is available
                            newImgPath = Helper.GoogleResultPath + "/" + i + "_image.png";
                            Helper.DownloadFile(imgLink, newImgPath);
                        }

                        var lowerline = Convert.ToInt32(windowHeight);

                        // Get the story image coordinates
                        var storyImgCoord = await Helper.GetCoordinates(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('sparkline-chart ng-scope')[0]");

                        // If the story image is not visible
                        if (storyImgCoord.Top + storyImgCoord.Height + 20 > lowerline)
                        {
                            // Scroll down to it
                            await Helper.PerformJs(view, "window.scrollTo(0, window.scrollY + 2000);");

                            await Task.Delay(1000);

                            while (view.IsLoading)
                            {
                                await Task.Delay(10);
                            }

                            // Wait 10 seconds, just in case, for all AJAX calls to complete
                            await Task.Delay(10000);

                            Helper.Log("Page scrolled down successfully.");

                            // And re-take the page screenshot and image coordinates
                            storyImgCoord = await Helper.GetCoordinates(view, "document.getElementsByClassName('trending-story-wrapper')[" + i + "].getElementsByClassName('sparkline-chart ng-scope')[0]");

                            pageRenderPath = await Helper.TakeScreenshot(view);
                        }

                        // Cut out the chart image from the page screenshot
                        var chartImgPath = Helper.GoogleResultPath + "/" + i + "_chart.png";
                        Helper.CutImage(new[] { storyImgCoord.Left, storyImgCoord.Top, storyImgCoord.Width, storyImgCoord.Height }, pageRenderPath, chartImgPath);

                        var result = new GoogleResult
                        {
                            GoogleUrl    = googleStoryLink,
                            Title        = storyTitle,
                            ExternalUrl  = externalStoryLink,
                            ImgUrl       = imgLink,
                            ImgPathChart = chartImgPath,
                            ImgPath      = newImgPath
                        };

                        GoogleResultList.Add(result);
                    }

                    SiteReady = true;
                };

                // And link the handler to the loading state changed event
                browser.LoadingStateChanged += handler;

                // Wait for the scraping to complete
                while (SiteReady != true)
                {
                    await Task.Delay(10);
                }
            }
        }
Пример #14
0
 public void Setup()
 {
     driver       = Initializer.Initialize_WebDriver(1, "https://www.google.com/");
     googleSearch = new GoogleSearch(driver);
     googleResult = new GoogleResult(driver);
 }