def start_check(): try: # 1. Open login page login_page = WebPage(url="%s%s" % (UKVISA_BASE_URL, LOGIN_PATH), handler=s) login_form_data = get_login_form_data(login_page.content()) # 2. Post login form and login :) login_form = create_login_form(login_form_data) res = login_form.submit().response() # 3. Open book appointment page book_appointment_page = WebPage(url=get_book_appointment_page_url(), handler=s) get_appointment_location_form = WebForm( action_url="%s%s" % (UKVISA_BASE_URL, APPOINTMENT_LOCATION_PATH), form_data=get_appointment_loc_form_data( book_appointment_page.content()), handler=s) res = get_appointment_location_form.submit().response() schedule_appointment_form_data = get_appointment_schedule_form_data( res.text) post_id = schedule_appointment_form_data['EnrolmentStationId'] available_dates = get_available_dates() print("\n" + datetime.datetime.now().strftime("%I:%M%p on %B %d, %Y")) if len(available_dates) > 0: appointment_data = { date: get_available_time_slots(post_id=post_id, appointment_date=date) for date in available_dates[:7] } print('Available dates found, generating message to be emailed') send_email(create_message(appointment_data)) else: print('No available dates for %s...' % (VISA_CENTRE)) #TODO: Need to figure out the captcha after submitting the form # submit_schedule_appointment_form(schedule_appointment_form_data); except Exception as e: print('Error checking visa appointment', e)
def get_book_appointment_page_url(): user_applications_page = WebPage(url="%s%s" % (UKVISA_BASE_URL, USER_APPLICATIONS_PATH), handler=s) d = pq(user_applications_page.content()) return "%s%s" % (UKVISA_BASE_URL, d('a').attr('href').replace('..', ''))