import requests,json
from datetime import datetime,timedelta
from zoneinfo import ZoneInfo
base={"bookingEngineCode":"84","currency":{"code":"EUR","virtual":False,"defaultCurrency":"EUR"},"languageCode":"DE","systemCode":"HPH","userCode":None,"logged":True,"bookingToken":None,"hotelCode":"3850","distribution":[{"id":1,"person":[{"id":1,"type":"Adult","age":30},{"id":2,"type":"Adult","age":30},{"id":3,"type":"Child","age":9},{"id":4,"type":"Child","age":10}]}],"dateFrom":0,"dateTo":0,"fareProperty":None,"navigation":{"ipAddress":"31.10.138.63","countryCode":"CH","domain":"www.playaesperanzaresort.com","landingPage":"https://www.playaesperanzaresort.com/de/","userAgent":"Mozilla/5.0","device":"desktop"}}
out={}
for i in range(8):
 d=datetime(2026,9,27,tzinfo=ZoneInfo('Europe/Madrid'))+timedelta(days=i)
 p=json.loads(json.dumps(base));p['dateFrom']=int(d.timestamp()*1000);p['dateTo']=int((d+timedelta(days=7)).timestamp()*1000)
 r=requests.post('https://hotel.new.hotetec.com/webservice/front/hotel/bookingEngine/roomAvailability',json=p);r.raise_for_status()
 out[str(d.date())]=r.json()
open('/home/agent/hotetec_results.json','w').write(json.dumps(out,ensure_ascii=False,indent=2))
print('saved',len(out))
# recursively show candidate pricing/rate/board fields for first result
def walk(x,path=''):
 if isinstance(x,dict):
  for k,v in x.items():
   p=f'{path}.{k}' if path else k
   if any(s in k.lower() for s in ['price','amount','fare','board','regime','tax','cancel','meal','rate','total','discount']): print(p,':',v if not isinstance(v,(dict,list)) else type(v).__name__)
   walk(v,p)
 elif isinstance(x,list):
  for i,v in enumerate(x): walk(v,f'{path}[{i}]')
walk(next(iter(out.values())))
