2024-03-01, update for cityline,kktix

master
Your Name 2024-03-12 18:24:11 +08:00
parent 1766b04566
commit a5e240bdb7
6 changed files with 125 additions and 85 deletions

View File

@ -41,7 +41,7 @@ try:
except Exception as exc: except Exception as exc:
pass pass
CONST_APP_VERSION = "MaxBot (2024.02.07)" CONST_APP_VERSION = "MaxBot (2024.03.01)"
CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt"
CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_CONFIG_FILE = "settings.json"
@ -988,8 +988,8 @@ def get_driver_by_config(config_dict):
,'*google-analytics.*' ,'*google-analytics.*'
,'*googletagmanager.*' ,'*googletagmanager.*'
,'*googletagservices.*' ,'*googletagservices.*'
,'*googlesyndication.*'
,'*play.google.com/*' ,'*play.google.com/*'
,'*.googlesyndication.com/*'
,'*cdn.cookielaw.org/*' ,'*cdn.cookielaw.org/*'
,'*fundingchoicesmessages.google.com/*' ,'*fundingchoicesmessages.google.com/*'
,'*.doubleclick.net/*' ,'*.doubleclick.net/*'
@ -4631,7 +4631,7 @@ def get_kktix_question_text(driver):
question_text = kktix_reg_captcha_question_text(captcha_inner_div) question_text = kktix_reg_captcha_question_text(captcha_inner_div)
return question_text return question_text
def kktix_reg_captcha(driver, config_dict, fail_list, captcha_sound_played, is_finish_checkbox_click, registrationsNewApp_div): def kktix_reg_captcha(driver, config_dict, fail_list, is_finish_checkbox_click, registrationsNewApp_div):
show_debug_message = True # debug. show_debug_message = True # debug.
show_debug_message = False # online show_debug_message = False # online
@ -4646,15 +4646,6 @@ def kktix_reg_captcha(driver, config_dict, fail_list, captcha_sound_played, is_f
is_question_popup = True is_question_popup = True
write_question_to_file(question_text) write_question_to_file(question_text)
if len(fail_list)==0:
# only play sound once.
if not captcha_sound_played:
captcha_sound_played = True
try:
play_sound_while_ordering(config_dict)
except Exception as exc:
pass
answer_list = get_answer_list_from_user_guess_string(config_dict) answer_list = get_answer_list_from_user_guess_string(config_dict)
if len(answer_list)==0: if len(answer_list)==0:
if config_dict["advanced"]["auto_guess_options"]: if config_dict["advanced"]["auto_guess_options"]:
@ -4678,9 +4669,9 @@ def kktix_reg_captcha(driver, config_dict, fail_list, captcha_sound_played, is_f
check_input_interval = 0.2 check_input_interval = 0.2
is_answer_sent, fail_list = fill_common_verify_form(driver, config_dict, inferred_answer_string, fail_list, input_text_css, next_step_button_css, submit_by_enter, check_input_interval) is_answer_sent, fail_list = fill_common_verify_form(driver, config_dict, inferred_answer_string, fail_list, input_text_css, next_step_button_css, submit_by_enter, check_input_interval)
return fail_list, captcha_sound_played, is_question_popup return fail_list, is_question_popup
def kktix_reg_new_main(driver, config_dict, fail_list, captcha_sound_played, is_finish_checkbox_click): def kktix_reg_new_main(driver, config_dict, fail_list, played_sound_ticket, is_finish_checkbox_click):
show_debug_message = True # debug. show_debug_message = True # debug.
show_debug_message = False # online show_debug_message = False # online
@ -4740,7 +4731,12 @@ def kktix_reg_new_main(driver, config_dict, fail_list, captcha_sound_played, is_
if is_dom_ready: if is_dom_ready:
# part 3: captcha # part 3: captcha
if is_ticket_number_assigned: if is_ticket_number_assigned:
fail_list, captcha_sound_played, is_question_popup = kktix_reg_captcha(driver, config_dict, fail_list, captcha_sound_played, is_finish_checkbox_click, registrationsNewApp_div) if config_dict["advanced"]["play_sound"]["ticket"]:
if not played_sound_ticket:
play_sound_while_ordering(config_dict)
played_sound_ticket = True
fail_list, is_question_popup = kktix_reg_captcha(driver, config_dict, fail_list, is_finish_checkbox_click, registrationsNewApp_div)
if not is_question_popup: if not is_question_popup:
# no captcha text popup, goto next page. # no captcha text popup, goto next page.
control_text = get_kktix_control_label_text(driver) control_text = get_kktix_control_label_text(driver)
@ -4754,6 +4750,9 @@ def kktix_reg_new_main(driver, config_dict, fail_list, captcha_sound_played, is_
pass pass
else: else:
if is_need_refresh: if is_need_refresh:
# reset to play sound when ticket avaiable.
played_sound_ticket = False
try: try:
print("no match any price, start to refresh page...") print("no match any price, start to refresh page...")
driver.refresh() driver.refresh()
@ -4764,7 +4763,7 @@ def kktix_reg_new_main(driver, config_dict, fail_list, captcha_sound_played, is_
if config_dict["advanced"]["auto_reload_page_interval"] > 0: if config_dict["advanced"]["auto_reload_page_interval"] > 0:
time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) time.sleep(config_dict["advanced"]["auto_reload_page_interval"])
return fail_list, captcha_sound_played return fail_list, played_sound_ticket
def kktix_get_registerStatus(driver, event_code): def kktix_get_registerStatus(driver, event_code):
html_result = None html_result = None
@ -7441,9 +7440,8 @@ def hkticketing_login(driver, account, password):
return ret return ret
def play_sound_while_ordering(config_dict): def play_sound_while_ordering(config_dict):
if config_dict["advanced"]["play_captcha_sound"]["enable"]:
app_root = get_app_root() app_root = get_app_root()
captcha_sound_filename = os.path.join(app_root, config_dict["advanced"]["play_captcha_sound"]["filename"].strip()) captcha_sound_filename = os.path.join(app_root, config_dict["advanced"]["play_sound"]["filename"].strip())
play_mp3_async(captcha_sound_filename) play_mp3_async(captcha_sound_filename)
def play_mp3_async(sound_filename): def play_mp3_async(sound_filename):
@ -7822,12 +7820,12 @@ def tixcraft_main(driver, url, config_dict, tixcraft_dict, ocr, Captcha_Browser)
tixcraft_ticket_main(driver, config_dict, ocr, Captcha_Browser, domain_name) tixcraft_ticket_main(driver, config_dict, ocr, Captcha_Browser, domain_name)
tixcraft_dict["done_time"] = time.time() tixcraft_dict["done_time"] = time.time()
if not tixcraft_dict["played_sound"]: if config_dict["advanced"]["play_sound"]["ticket"]:
if not tixcraft_dict["played_sound_ticket"]:
play_sound_while_ordering(config_dict) play_sound_while_ordering(config_dict)
tixcraft_dict["played_sound_ticket"] = True
tixcraft_dict["played_sound"] = True
else: else:
tixcraft_dict["played_sound"] = False tixcraft_dict["played_sound_ticket"] = False
if '/ticket/order' in url: if '/ticket/order' in url:
tixcraft_dict["done_time"] = time.time() tixcraft_dict["done_time"] = time.time()
@ -7849,8 +7847,14 @@ def tixcraft_main(driver, url, config_dict, tixcraft_dict, ocr, Captcha_Browser)
tixcraft_dict["is_popup_checkout"] = True tixcraft_dict["is_popup_checkout"] = True
driver.quit() driver.quit()
sys.exit() sys.exit()
if config_dict["advanced"]["play_sound"]["order"]:
if not tixcraft_dict["played_sound_order"]:
play_sound_while_ordering(config_dict)
tixcraft_dict["played_sound_order"] = True
else: else:
tixcraft_dict["is_popup_checkout"] = False tixcraft_dict["is_popup_checkout"] = False
tixcraft_dict["played_sound_order"] = False
return tixcraft_dict return tixcraft_dict
@ -7911,11 +7915,11 @@ def kktix_main(driver, url, config_dict, kktix_dict):
if not is_dom_ready: if not is_dom_ready:
# reset answer fail list. # reset answer fail list.
kktix_dict["fail_list"] = [] kktix_dict["fail_list"] = []
kktix_dict["captcha_sound_played"] = False kktix_dict["played_sound_ticket"] = False
else: else:
# check is able to buy. # check is able to buy.
if config_dict["kktix"]["auto_fill_ticket_number"]: if config_dict["kktix"]["auto_fill_ticket_number"]:
kktix_dict["fail_list"], kktix_dict["captcha_sound_played"] = kktix_reg_new_main(driver, config_dict, kktix_dict["fail_list"], kktix_dict["captcha_sound_played"], is_finish_checkbox_click) kktix_dict["fail_list"], kktix_dict["played_sound_ticket"] = kktix_reg_new_main(driver, config_dict, kktix_dict["fail_list"], kktix_dict["played_sound_ticket"], is_finish_checkbox_click)
kktix_dict["done_time"] = time.time() kktix_dict["done_time"] = time.time()
else: else:
is_event_page = False is_event_page = False
@ -7932,7 +7936,7 @@ def kktix_main(driver, url, config_dict, kktix_dict):
# reset answer fail list. # reset answer fail list.
kktix_dict["fail_list"] = [] kktix_dict["fail_list"] = []
kktix_dict["captcha_sound_played"] = False kktix_dict["played_sound_ticket"] = False
if '/events/' in url and '/registrations/' in url and "-" in url: if '/events/' in url and '/registrations/' in url and "-" in url:
if not '/registrations/new' in url: if not '/registrations/new' in url:
@ -7943,6 +7947,12 @@ def kktix_main(driver, url, config_dict, kktix_dict):
print("bot elapsed time:", "{:.3f}".format(bot_elapsed_time)) print("bot elapsed time:", "{:.3f}".format(bot_elapsed_time))
kktix_dict["elapsed_time"] = bot_elapsed_time kktix_dict["elapsed_time"] = bot_elapsed_time
if config_dict["advanced"]["play_sound"]["order"]:
if not kktix_dict["played_sound_order"]:
play_sound_while_ordering(config_dict)
kktix_dict["played_sound_order"] = True
if config_dict["advanced"]["headless"]: if config_dict["advanced"]["headless"]:
if not kktix_dict["is_popup_checkout"]: if not kktix_dict["is_popup_checkout"]:
is_event_page = False is_event_page = False
@ -7960,6 +7970,7 @@ def kktix_main(driver, url, config_dict, kktix_dict):
sys.exit() sys.exit()
else: else:
kktix_dict["is_popup_checkout"] = False kktix_dict["is_popup_checkout"] = False
kktix_dict["played_sound_order"] = False
return kktix_dict return kktix_dict
@ -8476,11 +8487,14 @@ def cityline_main(driver, url, config_dict):
try: try:
window_handles_count = len(driver.window_handles) window_handles_count = len(driver.window_handles)
if window_handles_count > 1: if window_handles_count > 1:
driver.switch_to.window(driver.window_handles[-1])
page_title = driver.title
if len(page_title) > 0:
driver.switch_to.window(driver.window_handles[0]) driver.switch_to.window(driver.window_handles[0])
if not(".cityline.com/" in page_title and "https://" in page_title):
driver.close() driver.close()
driver.switch_to.window(driver.window_handles[0]) driver.switch_to.window(driver.window_handles[-1])
time.sleep(0.2) except Exception as exc:
except Exception as excSwithFail:
pass pass
if '.cityline.com/Events.html' in url: if '.cityline.com/Events.html' in url:
@ -12526,16 +12540,16 @@ def main(args):
tixcraft_dict["elapsed_time"]=None tixcraft_dict["elapsed_time"]=None
tixcraft_dict["is_popup_checkout"] = False tixcraft_dict["is_popup_checkout"] = False
tixcraft_dict["area_retry_count"]=0 tixcraft_dict["area_retry_count"]=0
tixcraft_dict["played_sound"] = False
# for kktix # for kktix
kktix_dict = {} kktix_dict = {}
kktix_dict["fail_list"]=[] kktix_dict["fail_list"]=[]
kktix_dict["captcha_sound_played"] = False
kktix_dict["start_time"]=None kktix_dict["start_time"]=None
kktix_dict["done_time"]=None kktix_dict["done_time"]=None
kktix_dict["elapsed_time"]=None kktix_dict["elapsed_time"]=None
kktix_dict["is_popup_checkout"] = False kktix_dict["is_popup_checkout"] = False
kktix_dict["played_sound_ticket"] = False
kktix_dict["played_sound_order"] = False
fami_dict = {} fami_dict = {}
fami_dict["fail_list"] = [] fami_dict["fail_list"] = []

View File

@ -22,7 +22,7 @@ import sys
import threading import threading
import webbrowser import webbrowser
CONST_APP_VERSION = "MaxBot (2024.02.07)" CONST_APP_VERSION = "MaxBot (2024.03.01)"
CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json" CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json"
CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_CONFIG_FILE = "settings.json"

View File

@ -30,8 +30,9 @@
"auto_reload_coming_soon_page": true "auto_reload_coming_soon_page": true
}, },
"advanced": { "advanced": {
"play_captcha_sound": { "play_sound": {
"enable": true, "ticket": true,
"order": true,
"filename": "ding-dong.wav" "filename": "ding-dong.wav"
}, },
"tixcraft_sid": "", "tixcraft_sid": "",

View File

@ -48,7 +48,7 @@ try:
except Exception as exc: except Exception as exc:
pass pass
CONST_APP_VERSION = "MaxBot (2024.02.07)" CONST_APP_VERSION = "MaxBot (2024.03.01)"
CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt"
CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_CONFIG_FILE = "settings.json"
@ -218,8 +218,9 @@ def load_translate():
en_us["ticketplus_password"] = 'TicketPlus password' en_us["ticketplus_password"] = 'TicketPlus password'
en_us["save_password_alert"] = 'Saving passwords to config file may expose your passwords.' en_us["save_password_alert"] = 'Saving passwords to config file may expose your passwords.'
en_us["play_captcha_sound"] = 'Play sound while ordering' en_us["play_ticket_sound"] = 'Play sound when ticketing'
en_us["captcha_sound_filename"] = 'sound filename' en_us["play_order_sound"] = 'Play sound when ordering'
en_us["play_sound_filename"] = 'sound filename'
en_us["chrome_extension"] = "Chrome Browser Extension" en_us["chrome_extension"] = "Chrome Browser Extension"
en_us["disable_adjacent_seat"] = "Disable Adjacent Seat" en_us["disable_adjacent_seat"] = "Disable Adjacent Seat"
@ -333,8 +334,9 @@ def load_translate():
zh_tw["ticketplus_password"] = '遠大 密碼' zh_tw["ticketplus_password"] = '遠大 密碼'
zh_tw["save_password_alert"] = '將密碼保存到設定檔中可能會讓您的密碼被盜。' zh_tw["save_password_alert"] = '將密碼保存到設定檔中可能會讓您的密碼被盜。'
zh_tw["play_captcha_sound"] = '訂購時播放音效' zh_tw["play_ticket_sound"] = '有票時播放音效'
zh_tw["captcha_sound_filename"] = '音效檔' zh_tw["play_order_sound"] = '訂購時播放音效'
zh_tw["play_sound_filename"] = '音效檔'
zh_tw["chrome_extension"] = "Chrome 瀏覽器擴充功能" zh_tw["chrome_extension"] = "Chrome 瀏覽器擴充功能"
zh_tw["disable_adjacent_seat"] = "允許不連續座位" zh_tw["disable_adjacent_seat"] = "允許不連續座位"
@ -450,8 +452,9 @@ def load_translate():
zh_cn["ticketplus_password"] = '远大 密码' zh_cn["ticketplus_password"] = '远大 密码'
zh_cn["save_password_alert"] = '将密码保存到文件中可能会暴露您的密码。' zh_cn["save_password_alert"] = '将密码保存到文件中可能会暴露您的密码。'
zh_cn["play_captcha_sound"] = '订购时播放音效' zh_cn["play_ticket_sound"] = '有票时播放音效'
zh_cn["captcha_sound_filename"] = '音效档' zh_cn["play_order_sound"] = '订购时播放音效'
zh_cn["play_sound_filename"] = '音效档'
zh_cn["chrome_extension"] = "Chrome 浏览器扩展程序" zh_cn["chrome_extension"] = "Chrome 浏览器扩展程序"
zh_cn["disable_adjacent_seat"] = "允许不连续座位" zh_cn["disable_adjacent_seat"] = "允许不连续座位"
@ -566,8 +569,9 @@ def load_translate():
ja_jp["ticketplus_password"] = '遠大のパスワード' ja_jp["ticketplus_password"] = '遠大のパスワード'
ja_jp["save_password_alert"] = 'パスワードをファイルに保存すると、パスワードが公開される可能性があります。' ja_jp["save_password_alert"] = 'パスワードをファイルに保存すると、パスワードが公開される可能性があります。'
ja_jp["play_captcha_sound"] = '注文時に音を鳴らす' ja_jp["play_ticket_sound"] = '有票時に音を鳴らす'
ja_jp["captcha_sound_filename"] = 'サウンドファイル' ja_jp["play_order_sound"] = '注文時に音を鳴らす'
ja_jp["play_sound_filename"] = 'サウンドファイル'
ja_jp["chrome_extension"] = "Chrome ブラウザ拡張機能" ja_jp["chrome_extension"] = "Chrome ブラウザ拡張機能"
ja_jp["disable_adjacent_seat"] = "連続しない座席も可" ja_jp["disable_adjacent_seat"] = "連続しない座席も可"
@ -693,9 +697,10 @@ def get_default_config():
config_dict['advanced']={} config_dict['advanced']={}
config_dict['advanced']['play_captcha_sound']={} config_dict['advanced']['play_sound']={}
config_dict["advanced"]["play_captcha_sound"]["enable"] = True config_dict["advanced"]["play_sound"]["ticket"] = True
config_dict["advanced"]["play_captcha_sound"]["filename"] = CONST_CAPTCHA_SOUND_FILENAME_DEFAULT config_dict["advanced"]["play_sound"]["order"] = True
config_dict["advanced"]["play_sound"]["filename"] = CONST_CAPTCHA_SOUND_FILENAME_DEFAULT
config_dict["advanced"]["tixcraft_sid"] = "" config_dict["advanced"]["tixcraft_sid"] = ""
config_dict["advanced"]["ibonqware"] = "" config_dict["advanced"]["ibonqware"] = ""
@ -872,8 +877,9 @@ def btn_save_act(language_code, slience_mode=False):
global txt_udn_password global txt_udn_password
global txt_ticketplus_password global txt_ticketplus_password
global chk_state_play_captcha_sound global chk_state_play_ticket_sound
global txt_captcha_sound_filename global chk_state_play_order_sound
global txt_play_sound_filename
global chk_state_ocr_captcha global chk_state_ocr_captcha
global chk_state_ocr_captcha_ddddocr_beta global chk_state_ocr_captcha_ddddocr_beta
global chk_state_ocr_captcha_force_submit global chk_state_ocr_captcha_force_submit
@ -1064,8 +1070,9 @@ def btn_save_act(language_code, slience_mode=False):
config_dict["area_auto_select"]["enable"] = bool(chk_state_area_auto_select.get()) config_dict["area_auto_select"]["enable"] = bool(chk_state_area_auto_select.get())
config_dict["area_auto_select"]["mode"] = combo_area_auto_select_mode.get().strip() config_dict["area_auto_select"]["mode"] = combo_area_auto_select_mode.get().strip()
config_dict["advanced"]["play_captcha_sound"]["enable"] = bool(chk_state_play_captcha_sound.get()) config_dict["advanced"]["play_sound"]["ticket"] = bool(chk_state_play_ticket_sound.get())
config_dict["advanced"]["play_captcha_sound"]["filename"] = txt_captcha_sound_filename.get().strip() config_dict["advanced"]["play_sound"]["order"] = bool(chk_state_play_order_sound.get())
config_dict["advanced"]["play_sound"]["filename"] = txt_play_sound_filename.get().strip()
config_dict["advanced"]["tixcraft_sid"] = txt_tixcraft_sid.get().strip() config_dict["advanced"]["tixcraft_sid"] = txt_tixcraft_sid.get().strip()
config_dict["advanced"]["ibonqware"] = txt_ibon_ibonqware.get().strip() config_dict["advanced"]["ibonqware"] = txt_ibon_ibonqware.get().strip()
@ -1301,8 +1308,8 @@ def btn_open_text_server_clicked():
tabControl.select(tab4) tabControl.select(tab4)
def btn_preview_sound_clicked(): def btn_preview_sound_clicked():
global txt_captcha_sound_filename global txt_play_sound_filename
new_sound_filename = txt_captcha_sound_filename.get().strip() new_sound_filename = txt_play_sound_filename.get().strip()
#print("new_sound_filename:", new_sound_filename) #print("new_sound_filename:", new_sound_filename)
app_root = get_app_root() app_root = get_app_root()
new_sound_filename = os.path.join(app_root, new_sound_filename) new_sound_filename = os.path.join(app_root, new_sound_filename)
@ -1407,7 +1414,8 @@ def applyNewLanguage():
global chk_area_auto_select global chk_area_auto_select
global chk_pass_date_is_sold_out global chk_pass_date_is_sold_out
global chk_auto_reload_coming_soon_page global chk_auto_reload_coming_soon_page
global chk_play_captcha_sound global chk_play_ticket_sound
global chk_play_order_sound
global chk_ocr_captcha global chk_ocr_captcha
global chk_ocr_captcha_ddddocr_beta global chk_ocr_captcha_ddddocr_beta
global chk_ocr_captcha_force_submit global chk_ocr_captcha_force_submit
@ -1506,7 +1514,8 @@ def applyNewLanguage():
chk_area_auto_select.config(text=translate[language_code]["enable"]) chk_area_auto_select.config(text=translate[language_code]["enable"])
chk_pass_date_is_sold_out.config(text=translate[language_code]["enable"]) chk_pass_date_is_sold_out.config(text=translate[language_code]["enable"])
chk_auto_reload_coming_soon_page.config(text=translate[language_code]["enable"]) chk_auto_reload_coming_soon_page.config(text=translate[language_code]["enable"])
chk_play_captcha_sound.config(text=translate[language_code]["enable"]) chk_play_ticket_sound.config(text=translate[language_code]["enable"])
chk_play_order_sound.config(text=translate[language_code]["enable"])
chk_ocr_captcha.config(text=translate[language_code]["enable"]) chk_ocr_captcha.config(text=translate[language_code]["enable"])
chk_ocr_captcha_ddddocr_beta.config(text=translate[language_code]["enable"]) chk_ocr_captcha_ddddocr_beta.config(text=translate[language_code]["enable"])
chk_ocr_captcha_force_submit.config(text=translate[language_code]["enable"]) chk_ocr_captcha_force_submit.config(text=translate[language_code]["enable"])
@ -1554,8 +1563,9 @@ def applyNewLanguage():
global lbl_save_password_alert global lbl_save_password_alert
global lbl_play_captcha_sound global lbl_play_ticket_sound
global lbl_captcha_sound_filename global lbl_play_order_sound
global lbl_play_sound_filename
lbl_tixcraft_sid.config(text=translate[language_code]["tixcraft_sid"]) lbl_tixcraft_sid.config(text=translate[language_code]["tixcraft_sid"])
lbl_ibon_ibonqware.config(text=translate[language_code]["ibon_ibonqware"]) lbl_ibon_ibonqware.config(text=translate[language_code]["ibon_ibonqware"])
@ -1582,8 +1592,9 @@ def applyNewLanguage():
lbl_save_password_alert.config(text=translate[language_code]["save_password_alert"]) lbl_save_password_alert.config(text=translate[language_code]["save_password_alert"])
lbl_play_captcha_sound.config(text=translate[language_code]["play_captcha_sound"]) lbl_play_ticket_sound.config(text=translate[language_code]["play_ticket_sound"])
lbl_captcha_sound_filename.config(text=translate[language_code]["captcha_sound_filename"]) lbl_play_order_sound.config(text=translate[language_code]["play_order_sound"])
lbl_play_sound_filename.config(text=translate[language_code]["play_sound_filename"])
lbl_slogan.config(text=translate[language_code]["maxbot_slogan"]) lbl_slogan.config(text=translate[language_code]["maxbot_slogan"])
lbl_help.config(text=translate[language_code]["help"]) lbl_help.config(text=translate[language_code]["help"])
@ -2009,11 +2020,11 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X):
group_row_count = 0 group_row_count = 0
# assign default value. # assign default value.
captcha_sound_filename = config_dict["advanced"]["play_captcha_sound"]["filename"].strip() play_sound_filename = config_dict["advanced"]["play_sound"]["filename"].strip()
if captcha_sound_filename is None: if play_sound_filename is None:
captcha_sound_filename = "" play_sound_filename = ""
if len(captcha_sound_filename)==0: if len(play_sound_filename)==0:
captcha_sound_filename = captcha_sound_filename_default play_sound_filename = play_sound_filename_default
global lbl_browser global lbl_browser
lbl_browser = Label(frame_group_header, text=translate[language_code]['browser']) lbl_browser = Label(frame_group_header, text=translate[language_code]['browser'])
@ -2064,28 +2075,42 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X):
group_row_count +=1 group_row_count +=1
global lbl_play_captcha_sound global lbl_play_ticket_sound
lbl_play_captcha_sound = Label(frame_group_header, text=translate[language_code]['play_captcha_sound']) lbl_play_ticket_sound = Label(frame_group_header, text=translate[language_code]['play_ticket_sound'])
lbl_play_captcha_sound.grid(column=0, row=group_row_count, sticky = E) lbl_play_ticket_sound.grid(column=0, row=group_row_count, sticky = E)
global chk_state_play_captcha_sound global chk_state_play_ticket_sound
chk_state_play_captcha_sound = BooleanVar() chk_state_play_ticket_sound = BooleanVar()
chk_state_play_captcha_sound.set(config_dict["advanced"]["play_captcha_sound"]["enable"]) chk_state_play_ticket_sound.set(config_dict["advanced"]["play_sound"]["ticket"])
global chk_play_captcha_sound global chk_play_ticket_sound
chk_play_captcha_sound = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_play_captcha_sound) chk_play_ticket_sound = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_play_ticket_sound)
chk_play_captcha_sound.grid(column=1, row=group_row_count, sticky = W) chk_play_ticket_sound.grid(column=1, row=group_row_count, sticky = W)
group_row_count +=1 group_row_count +=1
global lbl_captcha_sound_filename global lbl_play_order_sound
lbl_captcha_sound_filename = Label(frame_group_header, text=translate[language_code]['captcha_sound_filename']) lbl_play_order_sound = Label(frame_group_header, text=translate[language_code]['play_order_sound'])
lbl_captcha_sound_filename.grid(column=0, row=group_row_count, sticky = E) lbl_play_order_sound.grid(column=0, row=group_row_count, sticky = E)
global txt_captcha_sound_filename global chk_state_play_order_sound
txt_captcha_sound_filename_value = StringVar(frame_group_header, value=captcha_sound_filename) chk_state_play_order_sound = BooleanVar()
txt_captcha_sound_filename = Entry(frame_group_header, width=30, textvariable = txt_captcha_sound_filename_value) chk_state_play_order_sound.set(config_dict["advanced"]["play_sound"]["order"])
txt_captcha_sound_filename.grid(column=1, row=group_row_count, sticky = W)
global chk_play_order_sound
chk_play_order_sound = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_play_order_sound)
chk_play_order_sound.grid(column=1, row=group_row_count, sticky = W)
group_row_count +=1
global lbl_play_sound_filename
lbl_play_sound_filename = Label(frame_group_header, text=translate[language_code]['play_sound_filename'])
lbl_play_sound_filename.grid(column=0, row=group_row_count, sticky = E)
global txt_play_sound_filename
txt_play_sound_filename_value = StringVar(frame_group_header, value=play_sound_filename)
txt_play_sound_filename = Entry(frame_group_header, width=30, textvariable = txt_play_sound_filename_value)
txt_play_sound_filename.grid(column=1, row=group_row_count, sticky = W)
icon_play_filename = "icon_play_1.gif" icon_play_filename = "icon_play_1.gif"
icon_play_img = PhotoImage(file=icon_play_filename) icon_play_img = PhotoImage(file=icon_play_filename)

View File

@ -1 +1 @@
{"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "ocr_captcha": {"enable": true, "beta": true, "force_submit": true, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "date_auto_select": {"enable": true, "date_keyword": "", "mode": "random"}, "area_auto_select": {"enable": true, "mode": "random", "area_keyword": ""}, "keyword_exclude": "\"\u8f2a\u6905\",\"\u8eab\u969c\",\"\u8eab\u5fc3 \u969c\u7919\",\"Restricted View\",\"\u71c8\u67f1\u906e\u853d\",\"\u8996\u7dda\u4e0d\u5b8c\u6574\"", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_captcha_sound": {"enable": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "reset_browser_interval": 0.0, "proxy_server_port": "", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}, "domain_filter": ["*google-analytics.com/*", "*googletagmanager.com/*", "*googletagservices.com/*", "*lndata.com/*", "*a.amnet.tw/*", "*adx.c.appier.net/*", "*clarity.ms/*", "*cloudfront.com/*", "*cms.analytics.yahoo.com/*", "*doubleclick.net/*", "*e2elog.fetnet.net/*", "*fundingchoicesmessages.google.com/*", "*ghtinc.com/*", "*match.adsrvr.org/*", "*onead.onevision.com.tw/*", "*popin.cc/*", "*rollbar.com/*", "*sb.scorecardresearch.com/*", "*tagtoo.co/*", "*.ssp.hinet.net/*", "*ticketmaster.sg/js/adblock*", "*.googlesyndication.com/*", "*treasuredata.com/*", "*play.google.com/log?*", "*www.youtube.com/youtubei/v1/player/heartbeat*", "*tixcraft.com/js/analytics.js*", "*ticketmaster.sg/js/adblock.js*", "*img.uniicreative.com/*", "*cdn.cookielaw.org/*", "*tixcraft.com/js/custom.js*", "*tixcraft.com/js/common.js*", "*cdnjs.cloudflare.com/ajax/libs/clipboard.js/*"]} {"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "ocr_captcha": {"enable": true, "beta": true, "force_submit": true, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "date_auto_select": {"enable": true, "date_keyword": "", "mode": "random"}, "area_auto_select": {"enable": true, "mode": "random", "area_keyword": ""}, "keyword_exclude": "\"\u8f2a\u6905\",\"\u8eab\u969c\",\"\u8eab\u5fc3 \u969c\u7919\",\"Restricted View\",\"\u71c8\u67f1\u906e\u853d\",\"\u8996\u7dda\u4e0d\u5b8c\u6574\"", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "reset_browser_interval": 0.0, "proxy_server_port": "", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}, "domain_filter": ["*google-analytics.com/*", "*googletagmanager.com/*", "*googletagservices.com/*", "*lndata.com/*", "*a.amnet.tw/*", "*adx.c.appier.net/*", "*clarity.ms/*", "*cloudfront.com/*", "*cms.analytics.yahoo.com/*", "*doubleclick.net/*", "*e2elog.fetnet.net/*", "*fundingchoicesmessages.google.com/*", "*ghtinc.com/*", "*match.adsrvr.org/*", "*onead.onevision.com.tw/*", "*popin.cc/*", "*rollbar.com/*", "*sb.scorecardresearch.com/*", "*tagtoo.co/*", "*.ssp.hinet.net/*", "*ticketmaster.sg/js/adblock*", "*.googlesyndication.com/*", "*treasuredata.com/*", "*play.google.com/log?*", "*www.youtube.com/youtubei/v1/player/heartbeat*", "*tixcraft.com/js/analytics.js*", "*ticketmaster.sg/js/adblock.js*", "*img.uniicreative.com/*", "*cdn.cookielaw.org/*", "*tixcraft.com/js/custom.js*", "*tixcraft.com/js/common.js*", "*cdnjs.cloudflare.com/ajax/libs/clipboard.js/*"]}

View File

@ -1 +1 @@
{"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "ocr_captcha": {"enable": true, "beta": true, "force_submit": true, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "date_auto_select": {"enable": true, "date_keyword": "", "mode": "random"}, "area_auto_select": {"enable": true, "mode": "random", "area_keyword": ""}, "keyword_exclude": "\"\u8f2a\u6905\",\"\u8eab\u969c\",\"\u8eab\u5fc3 \u969c\u7919\",\"Restricted View\",\"\u71c8\u67f1\u906e\u853d\",\"\u8996\u7dda\u4e0d\u5b8c\u6574\"", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_captcha_sound": {"enable": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "reset_browser_interval": 0.0, "proxy_server_port": "", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}} {"homepage": "https://tixcraft.com", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "ocr_captcha": {"enable": true, "beta": true, "force_submit": true, "image_source": "canvas"}, "webdriver_type": "undetected_chromedriver", "date_auto_select": {"enable": true, "date_keyword": "", "mode": "random"}, "area_auto_select": {"enable": true, "mode": "random", "area_keyword": ""}, "keyword_exclude": "\"\u8f2a\u6905\",\"\u8eab\u969c\",\"\u8eab\u5fc3 \u969c\u7919\",\"Restricted View\",\"\u71c8\u67f1\u906e\u853d\",\"\u8996\u7dda\u4e0d\u5b8c\u6574\"", "kktix": {"auto_press_next_step_button": true, "auto_fill_ticket_number": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "reset_browser_interval": 0.0, "proxy_server_port": "", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}}