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); }
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); }
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)); }
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); }
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); }
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); }
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(); } }
public static string ToJson(this GoogleResult self) => JsonConvert.SerializeObject(self, Google.Converter.Settings);
/// <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); } } }
public void Setup() { driver = Initializer.Initialize_WebDriver(1, "https://www.google.com/"); googleSearch = new GoogleSearch(driver); googleResult = new GoogleResult(driver); }