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
|
import ssl
|
||||||
ssl._create_default_https_context = ssl._create_unverified_context
|
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"
|
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'
|
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 = True # debug.
|
||||||
show_debug_message = False # online
|
show_debug_message = False # online
|
||||||
|
|
||||||
|
if config_dict["advanced"]["verbose"]:
|
||||||
|
show_debug_message = True
|
||||||
|
|
||||||
# read config.
|
# read config.
|
||||||
auto_select_mode = config_dict["tixcraft"]["date_auto_select"]["mode"]
|
auto_select_mode = config_dict["tixcraft"]["date_auto_select"]["mode"]
|
||||||
date_keyword = config_dict["tixcraft"]["date_auto_select"]["date_keyword"].strip()
|
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
|
is_match_all_coming_soon_condiction = False
|
||||||
break
|
break
|
||||||
if is_match_all_coming_soon_condiction:
|
if is_match_all_coming_soon_condiction:
|
||||||
|
if show_debug_message:
|
||||||
|
print("match coming soon condiction at row:", row_text)
|
||||||
is_coming_soon = True
|
is_coming_soon = True
|
||||||
break
|
break
|
||||||
|
|
||||||
|
@ -1486,23 +1491,26 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
||||||
|
|
||||||
target_area = matched_blocks[target_row_index]
|
target_area = matched_blocks[target_row_index]
|
||||||
|
|
||||||
is_date_selected = False
|
is_date_clicked = False
|
||||||
if target_area is not None:
|
if target_area is not None:
|
||||||
target_button = None
|
target_button = None
|
||||||
try:
|
try:
|
||||||
target_button = target_area.find_element(By.CSS_SELECTOR, 'button')
|
target_button = target_area.find_element(By.CSS_SELECTOR, 'button')
|
||||||
|
if not target_button is None:
|
||||||
if target_button.is_enabled():
|
if target_button.is_enabled():
|
||||||
if show_debug_message:
|
if show_debug_message:
|
||||||
print("pressing button...")
|
print("start to press button...")
|
||||||
target_button.click()
|
target_button.click()
|
||||||
is_date_selected = True
|
is_date_clicked = True
|
||||||
|
else:
|
||||||
|
if show_debug_message:
|
||||||
|
print("target_button in target row is None.")
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
if show_debug_message:
|
if show_debug_message:
|
||||||
print("find or press button fail")
|
print("find or press button fail:", exc)
|
||||||
|
|
||||||
if not target_button is None:
|
if not target_button is None:
|
||||||
print("try to click button fail, force click by js.")
|
print("try to click button fail, force click by js.")
|
||||||
#print(exc)
|
|
||||||
try:
|
try:
|
||||||
driver.execute_script("arguments[0].click();", target_button)
|
driver.execute_script("arguments[0].click();", target_button)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
@ -1520,7 +1528,7 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if not is_date_selected:
|
if not is_date_clicked:
|
||||||
if not formated_area_list is None:
|
if not formated_area_list is None:
|
||||||
if len(formated_area_list) == 0:
|
if len(formated_area_list) == 0:
|
||||||
try:
|
try:
|
||||||
|
@ -1529,7 +1537,7 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name):
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return is_date_selected
|
return is_date_clicked
|
||||||
|
|
||||||
# PURPOSE: get target area list.
|
# PURPOSE: get target area list.
|
||||||
# RETURN:
|
# RETURN:
|
||||||
|
@ -1655,6 +1663,9 @@ def tixcraft_area_auto_select(driver, url, config_dict):
|
||||||
show_debug_message = True # debug.
|
show_debug_message = True # debug.
|
||||||
show_debug_message = False # online
|
show_debug_message = False # online
|
||||||
|
|
||||||
|
if config_dict["advanced"]["verbose"]:
|
||||||
|
show_debug_message = True
|
||||||
|
|
||||||
# read config.
|
# read config.
|
||||||
area_keyword_1 = config_dict["tixcraft"]["area_auto_select"]["area_keyword_1"].strip()
|
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()
|
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 = True # debug.
|
||||||
show_debug_message = False # online
|
show_debug_message = False # online
|
||||||
|
|
||||||
|
if config_dict["advanced"]["verbose"]:
|
||||||
|
show_debug_message = True
|
||||||
|
|
||||||
# part 1: check div.
|
# part 1: check div.
|
||||||
registrationsNewApp_div = None
|
registrationsNewApp_div = None
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -20,7 +20,7 @@ import json
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import base64
|
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"
|
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 pyperclip
|
||||||
import base64
|
import base64
|
||||||
|
|
||||||
CONST_APP_VERSION = u"MaxBot (2023.03.06)"
|
CONST_APP_VERSION = u"MaxBot (2023.03.07)"
|
||||||
|
|
||||||
CONST_SETTINGS_CONFIG_FILENAME = "settings.json"
|
CONST_SETTINGS_CONFIG_FILENAME = "settings.json"
|
||||||
|
|
||||||
|
@ -96,6 +96,8 @@ def load_translate():
|
||||||
en_us["ocr_captcha_image_source"] = 'OCR image source'
|
en_us["ocr_captcha_image_source"] = 'OCR image source'
|
||||||
en_us["webdriver_type"] = 'WebDriver type'
|
en_us["webdriver_type"] = 'WebDriver type'
|
||||||
en_us["headless"] = 'Headless mode'
|
en_us["headless"] = 'Headless mode'
|
||||||
|
# Make the operation more talkative
|
||||||
|
en_us["verbose"] = 'Verbose mode'
|
||||||
|
|
||||||
en_us["preference"] = 'Preference'
|
en_us["preference"] = 'Preference'
|
||||||
en_us["advanced"] = 'Advanced'
|
en_us["advanced"] = 'Advanced'
|
||||||
|
@ -175,6 +177,7 @@ def load_translate():
|
||||||
zh_tw["ocr_captcha_image_source"] = 'OCR圖片取得方式'
|
zh_tw["ocr_captcha_image_source"] = 'OCR圖片取得方式'
|
||||||
zh_tw["webdriver_type"] = 'WebDriver類別'
|
zh_tw["webdriver_type"] = 'WebDriver類別'
|
||||||
zh_tw["headless"] = '無圖形界面模式'
|
zh_tw["headless"] = '無圖形界面模式'
|
||||||
|
zh_tw["verbose"] = '輸出詳細除錯訊息'
|
||||||
|
|
||||||
zh_tw["preference"] = '偏好設定'
|
zh_tw["preference"] = '偏好設定'
|
||||||
zh_tw["advanced"] = '進階設定'
|
zh_tw["advanced"] = '進階設定'
|
||||||
|
@ -254,6 +257,7 @@ def load_translate():
|
||||||
zh_cn["ocr_captcha_image_source"] = 'OCR图像源'
|
zh_cn["ocr_captcha_image_source"] = 'OCR图像源'
|
||||||
zh_cn["webdriver_type"] = 'WebDriver类别'
|
zh_cn["webdriver_type"] = 'WebDriver类别'
|
||||||
zh_cn["headless"] = '无图形界面模式'
|
zh_cn["headless"] = '无图形界面模式'
|
||||||
|
zh_cn["verbose"] = '输出详细除错讯息'
|
||||||
|
|
||||||
zh_cn["preference"] = '偏好设定'
|
zh_cn["preference"] = '偏好设定'
|
||||||
zh_cn["advanced"] = '進階設定'
|
zh_cn["advanced"] = '進階設定'
|
||||||
|
@ -334,6 +338,7 @@ def load_translate():
|
||||||
ja_jp["ocr_captcha_image_source"] = 'OCR 画像ソース'
|
ja_jp["ocr_captcha_image_source"] = 'OCR 画像ソース'
|
||||||
ja_jp["webdriver_type"] = 'WebDriverタイプ'
|
ja_jp["webdriver_type"] = 'WebDriverタイプ'
|
||||||
ja_jp["headless"] = 'ヘッドレスモード'
|
ja_jp["headless"] = 'ヘッドレスモード'
|
||||||
|
ja_jp["verbose"] = '詳細モード'
|
||||||
|
|
||||||
ja_jp["preference"] = '設定'
|
ja_jp["preference"] = '設定'
|
||||||
ja_jp["advanced"] = '高度な設定'
|
ja_jp["advanced"] = '高度な設定'
|
||||||
|
@ -484,8 +489,7 @@ def get_default_config():
|
||||||
config_dict["advanced"]["adblock_plus_enable"] = False
|
config_dict["advanced"]["adblock_plus_enable"] = False
|
||||||
config_dict["advanced"]["open_google_oauth_url"] = False
|
config_dict["advanced"]["open_google_oauth_url"] = False
|
||||||
config_dict["advanced"]["headless"] = False
|
config_dict["advanced"]["headless"] = False
|
||||||
|
config_dict["advanced"]["verbose"] = False
|
||||||
config_dict['debug']=False
|
|
||||||
|
|
||||||
return config_dict
|
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_ocr_captcha_force_submit
|
||||||
global chk_state_google_oauth
|
global chk_state_google_oauth
|
||||||
global chk_state_headless
|
global chk_state_headless
|
||||||
|
global chk_state_verbose
|
||||||
global combo_ocr_captcha_image_source
|
global combo_ocr_captcha_image_source
|
||||||
global combo_webdriver_type
|
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["ocr_captcha"]["image_source"] = combo_ocr_captcha_image_source.get().strip()
|
||||||
config_dict["webdriver_type"] = combo_webdriver_type.get().strip()
|
config_dict["webdriver_type"] = combo_webdriver_type.get().strip()
|
||||||
config_dict["advanced"]["headless"] = bool(chk_state_headless.get())
|
config_dict["advanced"]["headless"] = bool(chk_state_headless.get())
|
||||||
|
config_dict["advanced"]["verbose"] = bool(chk_state_verbose.get())
|
||||||
|
|
||||||
# save config.
|
# save config.
|
||||||
if is_all_data_correct:
|
if is_all_data_correct:
|
||||||
|
@ -921,6 +927,7 @@ def applyNewLanguage():
|
||||||
global lbl_ocr_captcha_image_source
|
global lbl_ocr_captcha_image_source
|
||||||
global lbl_webdriver_type
|
global lbl_webdriver_type
|
||||||
global lbl_headless
|
global lbl_headless
|
||||||
|
global lbl_verbose
|
||||||
|
|
||||||
# for checkbox
|
# for checkbox
|
||||||
global chk_pass_1_seat_remaining
|
global chk_pass_1_seat_remaining
|
||||||
|
@ -939,6 +946,7 @@ def applyNewLanguage():
|
||||||
global chk_ocr_captcha_force_submit
|
global chk_ocr_captcha_force_submit
|
||||||
global chk_google_oauth
|
global chk_google_oauth
|
||||||
global chk_headless
|
global chk_headless
|
||||||
|
global chk_verbose
|
||||||
|
|
||||||
global chk_kktix_area_keyword_2_enable
|
global chk_kktix_area_keyword_2_enable
|
||||||
global chk_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_webdriver_type.config(text=translate[language_code]["webdriver_type"])
|
||||||
lbl_google_oauth.config(text=translate[language_code]["open_google_oauth_url"])
|
lbl_google_oauth.config(text=translate[language_code]["open_google_oauth_url"])
|
||||||
lbl_headless.config(text=translate[language_code]["headless"])
|
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_pass_1_seat_remaining.config(text=translate[language_code]["enable"])
|
||||||
chk_auto_check_agree.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_ocr_captcha_force_submit.config(text=translate[language_code]["enable"])
|
||||||
chk_google_oauth.config(text=translate[language_code]["enable"])
|
chk_google_oauth.config(text=translate[language_code]["enable"])
|
||||||
chk_headless.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_kktix_area_keyword_2_enable.config(text=translate[language_code]["enable"])
|
||||||
chk_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 = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_headless)
|
||||||
chk_headless.grid(column=1, row=group_row_count, sticky = W)
|
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)
|
frame_group_header.grid(column=0, row=row_count, padx=UI_PADDING_X)
|
||||||
|
|
||||||
def AutofillTab(root, config_dict, language_code, UI_PADDING_X):
|
def AutofillTab(root, config_dict, language_code, UI_PADDING_X):
|
||||||
|
|
Loading…
Reference in New Issue