diff --git a/homeharvest/core/scrapers/models.py b/homeharvest/core/scrapers/models.py index 64308e1..60a940c 100644 --- a/homeharvest/core/scrapers/models.py +++ b/homeharvest/core/scrapers/models.py @@ -97,6 +97,8 @@ class Entity: @dataclass class Agent(Entity): + mls_set: str | None = None + nrds_id: str | None = None phones: list[dict] | AgentPhone | None = None email: str | None = None href: str | None = None diff --git a/homeharvest/core/scrapers/realtor/__init__.py b/homeharvest/core/scrapers/realtor/__init__.py index 6b05d78..57c5b9a 100644 --- a/homeharvest/core/scrapers/realtor/__init__.py +++ b/homeharvest/core/scrapers/realtor/__init__.py @@ -114,7 +114,9 @@ class RealtorScraper(Scraper): advertiser_type = advertiser.get("type") if advertiser_type == "seller": #: agent processed_advertisers.agent = Agent( - uuid=advertiser.get("mls_set"), + uuid=_parse_fulfillment_id(advertiser.get("fulfillment_id")), + nrds_id=advertiser.get("nrds_id"), + mls_set=advertiser.get("mls_set"), name=advertiser.get("name"), email=advertiser.get("email"), phones=advertiser.get("phones"), diff --git a/homeharvest/core/scrapers/realtor/queries.py b/homeharvest/core/scrapers/realtor/queries.py index 0ecade8..9ae4d18 100644 --- a/homeharvest/core/scrapers/realtor/queries.py +++ b/homeharvest/core/scrapers/realtor/queries.py @@ -109,6 +109,7 @@ _SEARCH_HOMES_DATA_BASE = """{ fulfillment_id } mls_set + nrds_id rental_corporation { fulfillment_id } diff --git a/homeharvest/utils.py b/homeharvest/utils.py index fb7fa89..428f959 100644 --- a/homeharvest/utils.py +++ b/homeharvest/utils.py @@ -46,6 +46,8 @@ ordered_properties = [ "agent_name", "agent_email", "agent_phones", + "agent_mls_set", + "agent_nrds_id", "broker_id", "broker_name", "builder_id", @@ -81,6 +83,8 @@ def process_result(result: Property) -> pd.DataFrame: prop_data["agent_name"] = agent_data.name prop_data["agent_email"] = agent_data.email prop_data["agent_phones"] = agent_data.phones + prop_data["agent_mls_set"] = agent_data.mls_set + prop_data["agent_nrds_id"] = agent_data.nrds_id if advertiser_data.broker: broker_data = advertiser_data.broker diff --git a/pyproject.toml b/pyproject.toml index 940bebc..dc972aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "homeharvest" -version = "0.4.0" +version = "0.4.1" description = "Real estate scraping library" authors = ["Zachary Hampton ", "Cullen Watson "] homepage = "https://github.com/Bunsly/HomeHarvest" diff --git a/tests/test_realtor.py b/tests/test_realtor.py index cfac518..1585a3d 100644 --- a/tests/test_realtor.py +++ b/tests/test_realtor.py @@ -243,3 +243,13 @@ def test_apartment_list_price(): assert len(results[results[["list_price", "list_price_min", "list_price_max"]].notnull().any(axis=1)]) / len( results ) > 0.5 + + +def test_builder_exists(): + listing = scrape_property( + location="18149 W Poston Dr, Surprise, AZ 85387", + extra_property_data=False, + ) + + assert listing is not None + assert listing["builder_name"].nunique() > 0