| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import re
- import json
- from typing import List, Dict
- def _parse_appointment_slots(html: str) -> List[Dict]:
- slots = []
- pattern = r'"availableAppointments\\":\s*(\[.*\]),\\"showFlexiAppointment'
- match = re.search(pattern, html, re.DOTALL)
-
- if match:
- json_str = match.group(1).replace(r'\"', '"')
- print(f'json_str={json_str}')
- data = json.loads(json_str)
- for day in data:
- d_str = day.get('day')
- for s in day.get('slots', []):
- labels = s.get('labels', [])
- lbl = ""
- stype = ""
- cost = ""
-
- if 'pta' in labels:
- lbl = 'pta'
- stype = "Prime"
- elif 'ptaw' in labels:
- lbl = 'ptaw'
- stype = "Prime Weekend"
- elif '' in labels:
- lbl = ''
- stype = "Standard"
-
- if lbl or not labels:
- slots.append({
- 'date': d_str,
- 'time': s.get('time'),
- 'label': lbl,
- 'type': stype,
- 'cost': cost
- })
- return slots
- else:
- print('Parsed appointment slot page, but not found availableAppointments')
- return slots
- f = open('../debug_pages/Tls_Query_Slot_Page_20260110_221803.html', 'r')
- html_content = f.read()
- f.close()
- slots = _parse_appointment_slots(html_content)
- print(slots)
|