from html.parser import HTMLParser
from html import escape
import os

class Parser(HTMLParser):
    def __init__(self):
        super().__init__(); self.in_form=False; self.controls=[]
    def handle_starttag(self, tag, attrs):
        a=dict(attrs)
        if tag=='form' and a.get('name')=='searchConstraints': self.in_form=True
        elif self.in_form and tag=='input' and a.get('name'):
            typ=a.get('type','text')
            if typ=='hidden': self.controls.append((a['name'],a.get('value','')))
    def handle_endtag(self, tag):
        if self.in_form and tag=='form': self.in_form=False
p=Parser(); p.feed(open('/tmp/itsform.html',encoding='utf-8').read())
# keep only security/meta hidden fields; explicit constraint fields below
controls=[x for x in p.controls if 'searchConstraints' not in x[0]]
b='tx_netvitstravelsearch_travelsearch[searchConstraints]'
controls += [
(f'{b}[accommodationConstraint][accommodationItems][0][numberOfTravelers]','2'),
(f'{b}[accommodationConstraint][accommodationItems][0][numberOfChildren]','2'),
(f'{b}[accommodationConstraint][accommodationItems][0][childrenAges][0]','9'),
(f'{b}[accommodationConstraint][accommodationItems][0][childrenAges][1]','10'),
(f'{b}[dateConstraint][dateMin]','2026-09-27'),
(f'{b}[dateConstraint][dateMax]','2026-10-04'),
(f'{b}[dateConstraint][duration]','7T7'),
(f'{b}[airportConstraint][departureAirports][]','ZRH'),
(f'{b}[groupConstraint][nodeIds][]','1797816'),
('tx_netvitstravelsearch_travelsearch[fakesubmit]','1')]
inputs='\n'.join(f'<input type="hidden" name="{escape(k,quote=True)}" value="{escape(v,quote=True)}">' for k,v in controls)
html=f'''<!doctype html><meta charset="utf-8"><title>ITS search relay</title>
<form id="f" action="https://www.itscoop.ch/badeferien" method="post">{inputs}</form>
<script>document.getElementById('f').submit()</script>'''
os.makedirs('/home/agent/public', exist_ok=True)
open('/home/agent/public/index.html','w',encoding='utf-8').write(html)
print(len(html),len(controls))
