from .guestline import GuestlineProfile from .newbook_scrape import NewbookScrapeProfile from .travelclick import TravelClickProfile from .directbook import DirectBookProfile from .eviivo import EviivoProfile from .qbook import QBookProfile from .mews import MewsProfile from .base import BaseProfile PROFILES = { "guestline": GuestlineProfile, "newbook_scrape": NewbookScrapeProfile, "travelclick": TravelClickProfile, "directbook": DirectBookProfile, "eviivo": EviivoProfile, "qbook": QBookProfile, "mews": MewsProfile, } def get_profile(name: str) -> BaseProfile: cls = PROFILES.get(name) if not cls: raise ValueError(f"Unknown engine profile: {name}") return cls() def detect_profile(url: str) -> dict | None: """Given a booking URL, return suggested profile name and extracted params.""" for name, cls in PROFILES.items(): result = cls.detect(url) if result is not None: return {"profile": name, **result} return None