private bool _parseItemPage_GetCoordinates(HtmlDocument page, DataCoordinatesLatLng coordinates) { var result = false; MatchCollection matches = null; try { Regex regex = new Regex(@"var addLatLng = new google(.*);"); matches = regex.Matches(page.ParsedText); var val = matches[0].Value; regex = new Regex(@"\((.*)\)"); matches = regex.Matches(val); var cord = matches[0].Value?.Split(','); coordinates.lat = _clearCoordinates(cord[0]); coordinates.lng = _clearCoordinates(cord[1]); result = true; } catch (Exception exception) { _log($"Error x8. matches[0]={matches?.FirstOrDefault()} {exception.Message}"); } return(result); }
private bool _parseItemPage_GetCoordinates2(string iframe, DataCoordinatesLatLng coordinates) { var result = false; string x = "", y = ""; MatchCollection matches = null; try { //var iframePage = await _parseItemPage_GetMediaFrame(page); Regex regex = new Regex(@"_Coord[X|Y]\s=\s(-?\d*\.\d*)"); matches = regex.Matches(iframe); if (matches.Count > 0) { x = matches[0].Value.Split("=")[1].Trim(); y = matches[1].Value.Split("=")[1].Trim(); coordinates.lat = x; coordinates.lng = y; result = true; } } catch (Exception exception) { //throw new Exception("iframe is null"); _log($"Error-v1. matches={matches?.FirstOrDefault()} / {exception.Message} / {exception.StackTrace}"); } return(result); }
private async Task <bool> GetCoordinates_WebClientAsync(string city, string area, DataCoordinatesLatLng coordinates) { var result = false; List <CoordinateDtoModel> coord = await GetCoordinates_Service_WebClientAsync(city, area); if (coord.Count() > 0) { coordinates.lat = coord.FirstOrDefault().lat; coordinates.lng = coord.FirstOrDefault().lon; result = true; } return(result); }
private async Task <AdItemWinWinDtoModel> _parseItemPageAsync(HtmlDocument itemPage, ShortItemDtoModel shortItem) { DataCoordinatesLatLng coordinates = new DataCoordinatesLatLng(); var iframe = _parseItemPage_GetMediaFrameAsync(itemPage).Result; var itemId = shortItem.ItemId; var city = shortItem.City; var dateUpdate = shortItem.DateUpdate; var area = _parseItemPage_GetArea(itemPage); var streetAddress = _parseItemPage_GetStreetAddress(itemPage); var rooms = _parseItemPage_GetRooms(itemPage); var floor = _parseItemPage_GetFloor(itemPage); var state = _parseItemPage_GetState(itemPage); var dateEnter = _parseItemPage_GetDateEnter(itemPage); var square = _parseItemPage_GetSquare(itemPage); var isPartners = _parseItemPage_GetIsPartners(itemPage); var amountPayment = _parseItemPage_GetAmountPayments(itemPage); var description = _parseItemPage_GetDescription(itemPage); var price = _parseItemPage_GetPrice(itemPage); var isAgent = _parseItemPage_IsAgency(itemPage); string phone1, phone2, contactName; if (isAgent) { contactName = _parseItemPage_GetContactName_Agent(itemPage); phone1 = _parseItemPage_GetPhone1_Agent(itemPage); phone2 = _parseItemPage_GetPhone2_Agent(itemPage); } else { contactName = _parseItemPage_GetContactName_Private(itemPage); phone1 = _parseItemPage_GetPhone1_Private(itemPage); phone2 = _parseItemPage_GetPhone2_Private(itemPage); } var isOk = _parseItemPage_GetCoordinates(itemPage, coordinates); if (!isOk) { isOk = _parseItemPage_GetCoordinates2(iframe, coordinates); } if (!isOk) { isOk = await GetCoordinates_WebClientAsync(city, area, coordinates); } var images = _parseItemPage_GetImages(iframe); var result = new AdItemWinWinDtoModel() { ItemId = itemId, DateUpdate = dateUpdate, Longitude = coordinates.lng, Latitude = coordinates.lat, City = city, Area = area, StreetAddress = streetAddress, Rooms = rooms, Floor = floor, State = state, DateEnter = dateEnter, Square = square, IsPartners = isPartners, AmountPayment = amountPayment, Description = description, Price = price, ContactName = contactName, Phone1 = phone1, Phone2 = phone2, IsAgent = isAgent ? "yes":"no", Images = images, }; return(result); }