major refactor (untested)
This commit is contained in:
parent
a29412b4da
commit
a77a0c0393
22 changed files with 1037 additions and 24 deletions
51
application_handler.py
Normal file
51
application_handler.py
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue