2023-03-07 add verbose mode to display debug message on your environment.
parent
163036521b
commit
7abe47b0c4
|
@ -53,7 +53,7 @@ import argparse
|
|||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.06)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.07)"
|
||||
|
||||
CONST_HOMEPAGE_DEFAULT = "https://tixcraft.com"
|
||||
URL_GOOGLE_OAUTH = 'https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount?redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&prompt=consent&response_type=code&client_id=407408718192.apps.googleusercontent.com&scope=email&access_type=offline&flowName=GeneralOAuthFlow'
|
||||
|
@ -1299,6 +1299,9 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
|||
show_debug_message = True # debug.
|
||||
show_debug_message = False # online
|
||||
|
||||
if config_dict["advanced"]["verbose"]:
|
||||
show_debug_message = True
|
||||
|
||||
# read config.
|
||||
auto_select_mode = config_dict["tixcraft"]["date_auto_select"]["mode"]
|
||||
date_keyword = config_dict["tixcraft"]["date_auto_select"]["date_keyword"].strip()
|
||||
|
@ -1394,6 +1397,8 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
|||
is_match_all_coming_soon_condiction = False
|
||||
break
|
||||
if is_match_all_coming_soon_condiction:
|
||||
if show_debug_message:
|
||||
print("match coming soon condiction at row:", row_text)
|
||||
is_coming_soon = True
|
||||
break
|
||||
|
||||
|
@ -1486,23 +1491,26 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
|||
|
||||
target_area = matched_blocks[target_row_index]
|
||||
|
||||
is_date_selected = False
|
||||
is_date_clicked = False
|
||||
if target_area is not None:
|
||||
target_button = None
|
||||
try:
|
||||
target_button = target_area.find_element(By.CSS_SELECTOR, 'button')
|
||||
if target_button.is_enabled():
|
||||
if not target_button is None:
|
||||
if target_button.is_enabled():
|
||||
if show_debug_message:
|
||||
print("start to press button...")
|
||||
target_button.click()
|
||||
is_date_clicked = True
|
||||
else:
|
||||
if show_debug_message:
|
||||
print("pressing button...")
|
||||
target_button.click()
|
||||
is_date_selected = True
|
||||
print("target_button in target row is None.")
|
||||
except Exception as exc:
|
||||
if show_debug_message:
|
||||
print("find or press button fail")
|
||||
print("find or press button fail:", exc)
|
||||
|
||||
if not target_button is None:
|
||||
print("try to click button fail, force click by js.")
|
||||
#print(exc)
|
||||
try:
|
||||
driver.execute_script("arguments[0].click();", target_button)
|
||||
except Exception as exc:
|
||||
|
@ -1520,7 +1528,7 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
|||
except Exception as exc:
|
||||
pass
|
||||
else:
|
||||
if not is_date_selected:
|
||||
if not is_date_clicked:
|
||||
if not formated_area_list is None:
|
||||
if len(formated_area_list) == 0:
|
||||
try:
|
||||
|
@ -1529,7 +1537,7 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
|||
except Exception as exc:
|
||||
pass
|
||||
|
||||
return is_date_selected
|
||||
return is_date_clicked
|
||||
|
||||
# PURPOSE: get target area list.
|
||||
# RETURN:
|
||||
|
@ -1655,6 +1663,9 @@ def tixcraft_area_auto_select(driver, url, config_dict):
|
|||
show_debug_message = True # debug.
|
||||
show_debug_message = False # online
|
||||
|
||||
if config_dict["advanced"]["verbose"]:
|
||||
show_debug_message = True
|
||||
|
||||
# read config.
|
||||
area_keyword_1 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_1"].strip()
|
||||
area_keyword_2 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_2"].strip()
|
||||
|
@ -3303,6 +3314,9 @@ def kktix_reg_new_main(driver, answer_index, is_finish_checkbox_click, config_di
|
|||
show_debug_message = True # debug.
|
||||
show_debug_message = False # online
|
||||
|
||||
if config_dict["advanced"]["verbose"]:
|
||||
show_debug_message = True
|
||||
|
||||
# part 1: check div.
|
||||
registrationsNewApp_div = None
|
||||
try:
|
||||
|
|
|
@ -20,7 +20,7 @@ import json
|
|||
import webbrowser
|
||||
import base64
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.06)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.07)"
|
||||
|
||||
CONST_LAUNCHER_CONFIG_FILENAME = "config_launcher.json"
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "pass_1_seat_remaining": true, "auto_check_agree": true, "ocr_captcha": {"enable": true, "force_submit": false, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true, "area_mode": "from top to bottom", "area_keyword_1": "", "area_keyword_1_and": "", "area_keyword_2": "", "area_keyword_2_and": "", "area_keyword_2_enable": true, "auto_guess_options": true, "user_guess_string": ""}, "tixcraft": {"date_auto_select": {"enable": true, "date_keyword": "", "mode": "from top to bottom"}, "area_auto_select": {"enable": true, "area_keyword_1": "", "area_keyword_2": "", "area_keyword_3": "", "area_keyword_4": "", "area_keyword_2_enable": true, "area_keyword_3_enable": true, "area_keyword_4_enable": true, "mode": "from top to bottom"}, "pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true, "presale_code": "", "presale_code_delimiter": ""}, "advanced": {"play_captcha_sound": {"enable": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "facebook_password": "", "kktix_password": "", "cityline_password": "", "urbtix_password": "", "hkticketing_password": "", "kham_password": "", "adblock_plus_enable": false, "open_google_oauth_url": false, "headless": false}, "debug": false}
|
||||
{"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "pass_1_seat_remaining": true, "auto_check_agree": true, "ocr_captcha": {"enable": true, "force_submit": false, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true, "area_mode": "from top to bottom", "area_keyword_1": "", "area_keyword_1_and": "", "area_keyword_2": "", "area_keyword_2_and": "", "area_keyword_2_enable": true, "auto_guess_options": true, "user_guess_string": ""}, "tixcraft": {"date_auto_select": {"enable": true, "date_keyword": "", "mode": "from top to bottom"}, "area_auto_select": {"enable": true, "area_keyword_1": "", "area_keyword_2": "", "area_keyword_3": "", "area_keyword_4": "", "area_keyword_2_enable": true, "area_keyword_3_enable": true, "area_keyword_4_enable": true, "mode": "from top to bottom"}, "pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true, "presale_code": "", "presale_code_delimiter": ""}, "advanced": {"play_captcha_sound": {"enable": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "facebook_password": "", "kktix_password": "", "cityline_password": "", "urbtix_password": "", "hkticketing_password": "", "kham_password": "", "adblock_plus_enable": false, "open_google_oauth_url": false, "headless": false, "verbose": false}}
|
30
settings.py
30
settings.py
|
@ -21,7 +21,7 @@ import webbrowser
|
|||
import pyperclip
|
||||
import base64
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.06)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.03.07)"
|
||||
|
||||
CONST_SETTINGS_CONFIG_FILENAME = "settings.json"
|
||||
|
||||
|
@ -96,6 +96,8 @@ def load_translate():
|
|||
en_us["ocr_captcha_image_source"] = 'OCR image source'
|
||||
en_us["webdriver_type"] = 'WebDriver type'
|
||||
en_us["headless"] = 'Headless mode'
|
||||
# Make the operation more talkative
|
||||
en_us["verbose"] = 'Verbose mode'
|
||||
|
||||
en_us["preference"] = 'Preference'
|
||||
en_us["advanced"] = 'Advanced'
|
||||
|
@ -175,6 +177,7 @@ def load_translate():
|
|||
zh_tw["ocr_captcha_image_source"] = 'OCR圖片取得方式'
|
||||
zh_tw["webdriver_type"] = 'WebDriver類別'
|
||||
zh_tw["headless"] = '無圖形界面模式'
|
||||
zh_tw["verbose"] = '輸出詳細除錯訊息'
|
||||
|
||||
zh_tw["preference"] = '偏好設定'
|
||||
zh_tw["advanced"] = '進階設定'
|
||||
|
@ -254,6 +257,7 @@ def load_translate():
|
|||
zh_cn["ocr_captcha_image_source"] = 'OCR图像源'
|
||||
zh_cn["webdriver_type"] = 'WebDriver类别'
|
||||
zh_cn["headless"] = '无图形界面模式'
|
||||
zh_cn["verbose"] = '输出详细除错讯息'
|
||||
|
||||
zh_cn["preference"] = '偏好设定'
|
||||
zh_cn["advanced"] = '進階設定'
|
||||
|
@ -334,6 +338,7 @@ def load_translate():
|
|||
ja_jp["ocr_captcha_image_source"] = 'OCR 画像ソース'
|
||||
ja_jp["webdriver_type"] = 'WebDriverタイプ'
|
||||
ja_jp["headless"] = 'ヘッドレスモード'
|
||||
ja_jp["verbose"] = '詳細モード'
|
||||
|
||||
ja_jp["preference"] = '設定'
|
||||
ja_jp["advanced"] = '高度な設定'
|
||||
|
@ -484,8 +489,7 @@ def get_default_config():
|
|||
config_dict["advanced"]["adblock_plus_enable"] = False
|
||||
config_dict["advanced"]["open_google_oauth_url"] = False
|
||||
config_dict["advanced"]["headless"] = False
|
||||
|
||||
config_dict['debug']=False
|
||||
config_dict["advanced"]["verbose"] = False
|
||||
|
||||
return config_dict
|
||||
|
||||
|
@ -633,6 +637,7 @@ def btn_save_act(language_code, slience_mode=False):
|
|||
global chk_state_ocr_captcha_force_submit
|
||||
global chk_state_google_oauth
|
||||
global chk_state_headless
|
||||
global chk_state_verbose
|
||||
global combo_ocr_captcha_image_source
|
||||
global combo_webdriver_type
|
||||
|
||||
|
@ -746,6 +751,7 @@ def btn_save_act(language_code, slience_mode=False):
|
|||
config_dict["ocr_captcha"]["image_source"] = combo_ocr_captcha_image_source.get().strip()
|
||||
config_dict["webdriver_type"] = combo_webdriver_type.get().strip()
|
||||
config_dict["advanced"]["headless"] = bool(chk_state_headless.get())
|
||||
config_dict["advanced"]["verbose"] = bool(chk_state_verbose.get())
|
||||
|
||||
# save config.
|
||||
if is_all_data_correct:
|
||||
|
@ -921,6 +927,7 @@ def applyNewLanguage():
|
|||
global lbl_ocr_captcha_image_source
|
||||
global lbl_webdriver_type
|
||||
global lbl_headless
|
||||
global lbl_verbose
|
||||
|
||||
# for checkbox
|
||||
global chk_pass_1_seat_remaining
|
||||
|
@ -939,6 +946,7 @@ def applyNewLanguage():
|
|||
global chk_ocr_captcha_force_submit
|
||||
global chk_google_oauth
|
||||
global chk_headless
|
||||
global chk_verbose
|
||||
|
||||
global chk_kktix_area_keyword_2_enable
|
||||
global chk_area_keyword_2_enable
|
||||
|
@ -993,6 +1001,7 @@ def applyNewLanguage():
|
|||
lbl_webdriver_type.config(text=translate[language_code]["webdriver_type"])
|
||||
lbl_google_oauth.config(text=translate[language_code]["open_google_oauth_url"])
|
||||
lbl_headless.config(text=translate[language_code]["headless"])
|
||||
lbl_verbose.config(text=translate[language_code]["verbose"])
|
||||
|
||||
chk_pass_1_seat_remaining.config(text=translate[language_code]["enable"])
|
||||
chk_auto_check_agree.config(text=translate[language_code]["enable"])
|
||||
|
@ -1009,6 +1018,7 @@ def applyNewLanguage():
|
|||
chk_ocr_captcha_force_submit.config(text=translate[language_code]["enable"])
|
||||
chk_google_oauth.config(text=translate[language_code]["enable"])
|
||||
chk_headless.config(text=translate[language_code]["enable"])
|
||||
chk_verbose.config(text=translate[language_code]["enable"])
|
||||
|
||||
chk_kktix_area_keyword_2_enable.config(text=translate[language_code]["enable"])
|
||||
chk_area_keyword_2_enable.config(text=translate[language_code]["enable"])
|
||||
|
@ -2029,6 +2039,20 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X):
|
|||
chk_headless = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_headless)
|
||||
chk_headless.grid(column=1, row=group_row_count, sticky = W)
|
||||
|
||||
group_row_count+=1
|
||||
|
||||
global lbl_verbose
|
||||
lbl_verbose = Label(frame_group_header, text=translate[language_code]['verbose'])
|
||||
lbl_verbose.grid(column=0, row=group_row_count, sticky = E)
|
||||
|
||||
global chk_state_verbose
|
||||
chk_state_verbose = BooleanVar()
|
||||
chk_state_verbose.set(config_dict['advanced']["verbose"])
|
||||
|
||||
global chk_verbose
|
||||
chk_verbose = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_verbose)
|
||||
chk_verbose.grid(column=1, row=group_row_count, sticky = W)
|
||||
|
||||
frame_group_header.grid(column=0, row=row_count, padx=UI_PADDING_X)
|
||||
|
||||
def AutofillTab(root, config_dict, language_code, UI_PADDING_X):
|
||||
|
|
Loading…
Reference in New Issue