Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }