Combines Booking.com Playwright scraper (from forecasting), direct booking engine scraper (ported from laptop-archive/guestline-monitor), and Newbook own-hotel rates into one focused tool. Four views: Bookability, Market View (with price index badges + direct rate sub-rows), Direct Rates (per-competitor room breakdown, min-stay flags, hotel config/discovery), Rate Analysis (advance purchase curve, DOW chart, rate timeline, comparison table). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
28 lines
839 B
Python
28 lines
839 B
Python
from .guestline import GuestlineProfile
|
|
from .newbook_scrape import NewbookScrapeProfile
|
|
from .travelclick import TravelClickProfile
|
|
from .directbook import DirectBookProfile
|
|
from .base import BaseProfile
|
|
|
|
PROFILES = {
|
|
"guestline": GuestlineProfile,
|
|
"newbook_scrape": NewbookScrapeProfile,
|
|
"travelclick": TravelClickProfile,
|
|
"directbook": DirectBookProfile,
|
|
}
|
|
|
|
|
|
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
|