import PySimpleGUI as sg from main import start_book, recheck_the_captcha_error_contacts from src.pojo.ModeEnum import ModeEnum from src.proxy.proxy_type import ProxyType KEY_CHOOSE_STORE = "CHOOSE_STORE" KEY_START_NUMBER = "KEY_START_NUMBER" KEY_END_NUMBER = "KEY_END_NUMBER" KEY_MAX_WORKERS = "KEY_MAX_WORKERS" KEY_RANDOM = "KEY_RANDOM" KEY_PROXY_BRIGHTDATA = "KEY_PROXY_BRIGHTDATA" KEY_PROXY_NETNUT = "KEY_PROXY_NETNUT" KEY_FAUBOURG = "KEY_FAUBOURG" KEY_GEORGE = "KEY_GEORGE" KEY_SEVRES = "KEY_SEVRES" KEY_AUTOMATIC = "KEY_AUTOMATIC" KEY_MANUAL = "KEY_MANUAL" GROUP_MODE = "GROUP_MODE" GROUP_STORE = "STORE" GROUP_PROXY = "GROUP_PROXY" KEY_RUN_ERROR_CONTACT = "KEY_RUN_ERROR_CONTACT" file_list_column = [ [sg.Text('请输入联系人表的起始和结束行')], [sg.Text('起始行', size=(15, 1)), sg.InputText(tooltip="起始行", key=KEY_START_NUMBER)], [sg.Text('结束行', size=(15, 1)), sg.InputText(tooltip="结束行", key=KEY_END_NUMBER)], [sg.Text('并发数', size=(15, 1)), sg.InputText(tooltip="结束行", key=KEY_MAX_WORKERS, default_text=10)], [sg.Submit(button_text="运行", key="submit")], [sg.Submit(button_text="重约发生错误的约会", key=KEY_RUN_ERROR_CONTACT)] ] # For now will only show the name of the file that was chosen store_settings_column = [ [sg.Text("目标商店")], [sg.Radio('随机', group_id=GROUP_STORE, key=KEY_RANDOM, default=True)], [sg.Radio('Hermès Faubourg Saint-Honoré', group_id=GROUP_STORE, key=KEY_FAUBOURG, default=False)], [sg.Radio('Hermès George V', group_id=GROUP_STORE, key=KEY_GEORGE, default=False)], [sg.Radio('Hermès Sèvres', group_id=GROUP_STORE, key=KEY_SEVRES, default=False)] ] proxy_settings_column = [ [sg.Text("代理ip池")], [sg.Radio('亮数据', group_id=GROUP_PROXY, key=KEY_PROXY_BRIGHTDATA, default=True)], [sg.Radio('Netnut', group_id=GROUP_PROXY, key=KEY_PROXY_NETNUT, default=False)], ] mode_settings_column = [ [sg.Text("约会模式")], [sg.Radio('手动', group_id=GROUP_MODE, key=KEY_MANUAL, default=True)], [sg.Radio('自动', group_id=GROUP_MODE, key=KEY_AUTOMATIC, default=False)], ] # ----- Full layout ----- layout = [ [ sg.Column(file_list_column), sg.Column(store_settings_column), sg.Column(proxy_settings_column), sg.Column(mode_settings_column) ] ] window = sg.Window("爱马仕约会", layout) def on_no_contact_found(): sg.popup("对应联系人列表为空") while True: event, values = window.read() print(event) print(values) # try: max_workers = 10 if values[KEY_MAX_WORKERS]: max_workers = int(values[KEY_MAX_WORKERS]) store_type = 0 mode = ModeEnum.MANUAL if values[KEY_FAUBOURG]: store_type = 1 elif values[KEY_GEORGE]: store_type = 2 elif values[KEY_SEVRES]: store_type = 3 proxy_type = ProxyType.BRIGHT_DATA if values[KEY_PROXY_NETNUT]: proxy_type = ProxyType.NETNUT elif values[KEY_PROXY_BRIGHTDATA]: proxy_type = ProxyType.BRIGHT_DATA if values[KEY_AUTOMATIC]: mode = ModeEnum.AUTOMATIC if event == "submit": start_line = int(values[KEY_START_NUMBER]) end_line = int(values[KEY_END_NUMBER]) start_book(start_line, end_line, store_choose_state=store_type, max_workers=max_workers, proxy_type=proxy_type, mode=mode) elif event == KEY_RUN_ERROR_CONTACT: recheck_the_captcha_error_contacts(max_workers=max_workers, store_type=store_type, mode=mode, on_no_contact_found=on_no_contact_found) elif event == "Exit" or event == sg.WIN_CLOSED: break