wohnbot/application_handler.py

51 lines
2 KiB
Python
Raw Normal View History

2025-12-27 11:59:04 +01:00
from datetime import datetime
from handlers.base_handler import BaseHandler
from handlers.howoge_handler import HowogeHandler
from handlers.gewobag_handler import GewobagHandler
from handlers.degewo_handler import DegewoHandler
from handlers.gesobau_handler import GesobauHandler
from handlers.stadtundland_handler import StadtUndLandHandler
from handlers.wbm_handler import WBMHandler
class ApplicationHandler:
def __init__(self, browser_context):
self.context = browser_context
self.handlers = {
"howoge": HowogeHandler(browser_context),
"gewobag": GewobagHandler(browser_context),
"degewo": DegewoHandler(browser_context),
"gesobau": GesobauHandler(browser_context),
"stadtundland": StadtUndLandHandler(browser_context),
"wbm": WBMHandler(browser_context),
}
async def apply(self, listing: dict) -> dict:
company = self._detect_company(listing.get("link", ""))
handler = self.handlers.get(company)
result = {
"listing_id": listing.get("id"),
"company": company,
"link": listing.get("link"),
"timestamp": datetime.now().isoformat(),
"success": False,
"message": "",
"address": listing.get("address", ""),
"rooms": listing.get("rooms", ""),
"price": listing.get("price", "")
}
if handler:
result = await handler.apply(listing, result)
else:
result["message"] = f"No handler found for company: {company}"
return result
def _detect_company(self, link: str) -> str:
if "howoge.de" in link: return "howoge"
elif "gewobag.de" in link: return "gewobag"
elif "degewo.de" in link: return "degewo"
elif "gesobau.de" in link: return "gesobau"
elif "stadtundland.de" in link: return "stadtundland"
elif "wbm.de" in link: return "wbm"
return "unknown"