diff --git a/chrome_tixcraft.py b/chrome_tixcraft.py index 81311a0..97e5b86 100644 --- a/chrome_tixcraft.py +++ b/chrome_tixcraft.py @@ -54,7 +54,7 @@ import webbrowser import chromedriver_autoinstaller -CONST_APP_VERSION = "MaxBot (2023.12.31)" +CONST_APP_VERSION = "MaxBot (2024.01.01)" CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" @@ -379,8 +379,6 @@ def is_all_alpha_or_numeric(text): def get_favoriate_extension_path(webdriver_path, config_dict): #print("webdriver_path:", webdriver_path) extension_list = [] - if config_dict["advanced"]["adblock_plus_enable"]: - extension_list.append(os.path.join(webdriver_path,"Adblock_3.21.1.0.crx")) extension_list.append(os.path.join(webdriver_path, MAXBOT_EXTENSION_NAME + ".crx")) return extension_list @@ -2077,8 +2075,8 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_date_clicked @@ -2576,8 +2574,8 @@ def tixcraft_area_auto_select(driver, url, config_dict): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) def ticketmaster_area_auto_select(driver, config_dict, zone_info): show_debug_message = True # debug. @@ -2633,8 +2631,8 @@ def ticketmaster_area_auto_select(driver, config_dict, zone_info): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) def tixcraft_ticket_agree(driver, config_dict): @@ -3394,7 +3392,9 @@ def tixcraft_assign_ticket_number(driver, config_dict): def tixcraft_ticket_main(driver, config_dict, ocr, Captcha_Browser, domain_name): # use extension instead of selenium. - #tixcraft_ticket_main_agree(driver, config_dict) + # checkbox javascrit code at chrome extension. + if config_dict["browser"] in ["firefox", "edge", "safari"]: + tixcraft_ticket_main_agree(driver, config_dict) is_ticket_number_assigned = False @@ -3421,7 +3421,7 @@ def tixcraft_ticket_main_ocr(driver, config_dict, ocr, Captcha_Browser, domain_n else: previous_answer = None last_url, is_quit_bot = get_current_url(driver) - for redo_ocr in range(99): + for redo_ocr in range(19): is_need_redo_ocr, previous_answer, is_form_sumbited = tixcraft_auto_ocr(driver, ocr, away_from_keyboard_enable, previous_answer, Captcha_Browser, ocr_captcha_image_source, domain_name) if is_form_sumbited: # start next loop. @@ -4611,8 +4611,8 @@ def kktix_reg_new_main(driver, config_dict, fail_list, captcha_sound_played, is_ #print("refresh fail") pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return fail_list, captcha_sound_played @@ -5068,8 +5068,8 @@ def fami_date_auto_select(driver, config_dict, last_activity_url): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_date_assign_by_bot @@ -5264,8 +5264,8 @@ def fami_date_to_area(driver, config_dict, last_activity_url): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_price_assign_by_bot @@ -6563,8 +6563,8 @@ def ibon_date_auto_select(driver, config_dict): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_date_assign_by_bot @@ -6828,8 +6828,8 @@ def ibon_performance(driver, config_dict): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_price_assign_by_bot @@ -9998,8 +9998,8 @@ def hkam_date_auto_select(driver, domain_name, config_dict): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(0,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND)) + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_date_assign_by_bot @@ -11417,9 +11417,8 @@ def ticketplus_order_expansion_panel(driver, config_dict, current_layout_style): except Exception as exc: pass - if config_dict["advanced"]["auto_reload_random_delay"]: - time.sleep(random.randint(1,CONST_AUTO_RELOAD_RANDOM_DELAY_MAX_SECOND+1)) - + if config_dict["advanced"]["auto_reload_page_interval"] > 0: + time.sleep(config_dict["advanced"]["auto_reload_page_interval"]) return is_price_assign_by_bot diff --git a/config_launcher.py b/config_launcher.py index c6df3ce..f5a1a45 100644 --- a/config_launcher.py +++ b/config_launcher.py @@ -22,7 +22,7 @@ import sys import threading import webbrowser -CONST_APP_VERSION = "MaxBot (2023.12.31)" +CONST_APP_VERSION = "MaxBot (2024.01.01)" CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json" CONST_MAXBOT_CONFIG_FILE = "settings.json" diff --git a/settings.json b/settings.json index 61c8e28..0f53679 100644 --- a/settings.json +++ b/settings.json @@ -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": "", "adblock_plus_enable": false, "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "online_dictionary_url": "", "auto_reload_page_interval": 1.0, "auto_reload_random_delay": false, "proxy_server_port": ""}} \ No newline at end of file +{"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": "", "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "online_dictionary_url": "", "auto_reload_page_interval": 0.1, "proxy_server_port": ""}} \ No newline at end of file diff --git a/settings.py b/settings.py index 12e075e..c51da42 100644 --- a/settings.py +++ b/settings.py @@ -34,7 +34,7 @@ import ssl ssl._create_default_https_context = ssl._create_unverified_context -CONST_APP_VERSION = "MaxBot (2023.12.31)" +CONST_APP_VERSION = "MaxBot (2024.01.01)" CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" @@ -142,8 +142,7 @@ def load_translate(): en_us["date_keyword"] = 'Date Keyword' en_us["pass_date_is_sold_out"] = 'Pass date is sold out' en_us["auto_reload_coming_soon_page"] = 'Reload coming soon page' - en_us["auto_reload_page_interval"] = 'Reload page interval sec.(HK)' - en_us["auto_reload_random_delay"] = 'Reload random delay(TW)' + en_us["auto_reload_page_interval"] = 'Reload page interval(sec.)' en_us["proxy_server_port"] = 'Proxy IP:PORT' en_us["area_select_order"] = 'Area select order' @@ -214,8 +213,6 @@ def load_translate(): en_us["play_captcha_sound"] = 'Play sound while ordering' en_us["captcha_sound_filename"] = 'sound filename' - en_us["adblock_plus_enable"] = 'Browser Extension' - en_us["adblock_plus_settings"] = "Adblock Advanced Filter" en_us["disable_adjacent_seat"] = "Disable Adjacent Seat" en_us["hide_some_image"] = "Hide Some Images" en_us["block_facebook_network"] = "Block Facebook Network" @@ -248,8 +245,7 @@ def load_translate(): zh_tw["date_keyword"] = '日期關鍵字' zh_tw["pass_date_is_sold_out"] = '避開「搶購一空」的日期' zh_tw["auto_reload_coming_soon_page"] = '自動刷新倒數中的日期頁面' - zh_tw["auto_reload_page_interval"] = '自動刷新頁面間隔(秒)(香港)' - zh_tw["auto_reload_random_delay"] = '刷新清票建議增加隨機延遲(台灣)' + zh_tw["auto_reload_page_interval"] = '自動刷新頁面間隔(秒)' zh_tw["proxy_server_port"] = 'Proxy IP:PORT' zh_tw["area_select_order"] = '區域排序方式' @@ -319,8 +315,6 @@ def load_translate(): zh_tw["play_captcha_sound"] = '訂購時播放音效' zh_tw["captcha_sound_filename"] = '音效檔' - zh_tw["adblock_plus_enable"] = '瀏覽器擴充功能' - zh_tw["adblock_plus_settings"] = "Adblock 進階過濾規則" zh_tw["disable_adjacent_seat"] = "允許不連續座位" zh_tw["hide_some_image"] = "隱藏部份圖片" zh_tw["block_facebook_network"] = "擋掉 Facebook 連線" @@ -354,8 +348,7 @@ def load_translate(): zh_cn["date_keyword"] = '日期关键字' zh_cn["pass_date_is_sold_out"] = '避开“抢购一空”的日期' zh_cn["auto_reload_coming_soon_page"] = '自动刷新倒数中的日期页面' - zh_cn["auto_reload_page_interval"] = '重新加载间隔(秒)(香港)' - zh_cn["auto_reload_random_delay"] = '重新加载随机延迟(台湾)' + zh_cn["auto_reload_page_interval"] = '重新加载间隔(秒)' zh_cn["proxy_server_port"] = 'Proxy IP:PORT' zh_cn["area_select_order"] = '区域排序方式' @@ -426,8 +419,6 @@ def load_translate(): zh_cn["play_captcha_sound"] = '订购时播放音效' zh_cn["captcha_sound_filename"] = '音效档' - zh_cn["adblock_plus_enable"] = '浏览器扩充功能' - zh_cn["adblock_plus_settings"] = "Adblock 进阶过滤规则" zh_cn["disable_adjacent_seat"] = "允许不连续座位" zh_cn["hide_some_image"] = "隐藏一些图像" zh_cn["block_facebook_network"] = "擋掉 Facebook 連線" @@ -461,8 +452,7 @@ def load_translate(): ja_jp["date_keyword"] = '日付キーワード' ja_jp["pass_date_is_sold_out"] = '「売り切れ」公演を避ける' ja_jp["auto_reload_coming_soon_page"] = '公開予定のページをリロード' - ja_jp["auto_reload_page_interval"] = 'リロード間隔(秒)(HK)' - ja_jp["auto_reload_random_delay"] = 'ランダムなリロード遅延(TW)' + ja_jp["auto_reload_page_interval"] = 'リロード間隔(秒)' ja_jp["proxy_server_port"] = 'Proxy IP:PORT' ja_jp["area_select_order"] = 'エリアソート方法' @@ -532,8 +522,6 @@ def load_translate(): ja_jp["play_captcha_sound"] = '注文時に音を鳴らす' ja_jp["captcha_sound_filename"] = 'サウンドファイル' - ja_jp["adblock_plus_enable"] = '拡張機能' - ja_jp["adblock_plus_settings"] = "Adblock 高度なフィルター" ja_jp["disable_adjacent_seat"] = "連続しない座席も可" ja_jp["hide_some_image"] = "一部の画像を非表示にする" ja_jp["block_facebook_network"] = "Facebookをブロックする" @@ -685,7 +673,6 @@ def get_default_config(): config_dict["advanced"]["udn_password"] = "" config_dict["advanced"]["ticketplus_password"] = "" - config_dict["advanced"]["adblock_plus_enable"] = False config_dict["advanced"]["disable_adjacent_seat"] = False config_dict["advanced"]["hide_some_image"] = False config_dict["advanced"]["block_facebook_network"] = False @@ -696,8 +683,7 @@ def get_default_config(): config_dict["advanced"]["user_guess_string"] = "" config_dict["advanced"]["online_dictionary_url"] = "" - config_dict["advanced"]["auto_reload_page_interval"] = 1.0 - config_dict["advanced"]["auto_reload_random_delay"] = False + config_dict["advanced"]["auto_reload_page_interval"] = 0.1 config_dict["advanced"]["proxy_server_port"] = "" return config_dict @@ -788,7 +774,6 @@ def btn_save_act(language_code, slience_mode=False): global chk_state_auto_reload_coming_soon_page global txt_auto_reload_page_interval global txt_proxy_server_port - global chk_state_auto_reload_random_delay global txt_tixcraft_sid global txt_ibon_ibonqware @@ -816,7 +801,6 @@ def btn_save_act(language_code, slience_mode=False): global chk_state_play_captcha_sound global txt_captcha_sound_filename - global chk_state_adblock_plus global chk_state_ocr_captcha global chk_state_ocr_captcha_ddddocr_beta global chk_state_ocr_captcha_force_submit @@ -978,7 +962,6 @@ def btn_save_act(language_code, slience_mode=False): config_dict["advanced"]["udn_password"] = encryptMe(config_dict["advanced"]["udn_password"]) config_dict["advanced"]["ticketplus_password"] = encryptMe(config_dict["advanced"]["ticketplus_password"]) - config_dict["advanced"]["adblock_plus_enable"] = bool(chk_state_adblock_plus.get()) config_dict["advanced"]["disable_adjacent_seat"] = bool(chk_state_adjacent_seat.get()) config_dict["advanced"]["hide_some_image"] = bool(chk_state_hide_some_image.get()) config_dict["advanced"]["block_facebook_network"] = bool(chk_state_block_facebook_network.get()) @@ -1000,7 +983,6 @@ def btn_save_act(language_code, slience_mode=False): config_dict["advanced"]["auto_guess_options"] = bool(chk_state_auto_guess_options.get()) config_dict["advanced"]["auto_reload_page_interval"] = float(txt_auto_reload_page_interval.get().strip()) - config_dict["advanced"]["auto_reload_random_delay"] = bool(chk_state_auto_reload_random_delay.get()) config_dict["advanced"]["proxy_server_port"] = txt_proxy_server_port.get().strip() @@ -1282,7 +1264,6 @@ def applyNewLanguage(): global chk_pass_date_is_sold_out global chk_auto_reload_coming_soon_page global chk_play_captcha_sound - global chk_adblock_plus global chk_ocr_captcha global chk_ocr_captcha_ddddocr_beta global chk_ocr_captcha_force_submit @@ -1295,7 +1276,6 @@ def applyNewLanguage(): global lbl_online_dictionary_url global lbl_online_dictionary_preview global chk_auto_guess_options - global chk_auto_reload_random_delay global tabControl @@ -1304,8 +1284,6 @@ def applyNewLanguage(): global lbl_donate global lbl_release - global lbl_adblock_plus - global lbl_adblock_plus_settings global lbl_adjacent_seat global lbl_hide_some_image global lbl_block_facebook_network @@ -1315,7 +1293,6 @@ def applyNewLanguage(): global lbl_auto_reload_page_interval global lbl_proxy_server_port - global lbl_auto_reload_random_delay lbl_homepage.config(text=translate[language_code]["homepage"]) lbl_browser.config(text=translate[language_code]["browser"]) @@ -1352,7 +1329,6 @@ def applyNewLanguage(): lbl_auto_reload_page_interval.config(text=translate[language_code]["auto_reload_page_interval"]) lbl_proxy_server_port.config(text=translate[language_code]["proxy_server_port"]) - lbl_auto_reload_random_delay.config(text=translate[language_code]["auto_reload_random_delay"]) lbl_headless.config(text=translate[language_code]["headless"]) lbl_verbose.config(text=translate[language_code]["verbose"]) @@ -1371,7 +1347,6 @@ def applyNewLanguage(): 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_play_captcha_sound.config(text=translate[language_code]["enable"]) - chk_adblock_plus.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_force_submit.config(text=translate[language_code]["enable"]) @@ -1382,7 +1357,6 @@ def applyNewLanguage(): chk_headless.config(text=translate[language_code]["enable"]) chk_verbose.config(text=translate[language_code]["enable"]) chk_auto_guess_options.config(text=translate[language_code]["enable"]) - chk_auto_reload_random_delay.config(text=translate[language_code]["enable"]) tabControl.tab(0, text=translate[language_code]["preference"]) tabControl.tab(1, text=translate[language_code]["advanced"]) @@ -1454,9 +1428,6 @@ def applyNewLanguage(): lbl_donate.config(text=translate[language_code]["donate"]) lbl_release.config(text=translate[language_code]["release"]) - lbl_adblock_plus.config(text=translate[language_code]["adblock_plus_enable"]) - lbl_adblock_plus_settings.config(text=translate[language_code]["adblock_plus_settings"]) - global btn_run global btn_save global btn_exit @@ -1964,38 +1935,6 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X): group_row_count +=1 - global lbl_adblock_plus - lbl_adblock_plus = Label(frame_group_header, text=translate[language_code]['adblock_plus_enable']) - lbl_adblock_plus.grid(column=0, row=group_row_count, sticky = E) - - global chk_state_adblock_plus - chk_state_adblock_plus = BooleanVar() - chk_state_adblock_plus.set(config_dict["advanced"]["adblock_plus_enable"]) - - global chk_adblock_plus - chk_adblock_plus = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_adblock_plus) - chk_adblock_plus.grid(column=1, row=group_row_count, sticky = W) - - group_row_count +=1 - - global lbl_adblock_plus_settings - lbl_adblock_plus_settings = Label(frame_group_header, text=translate[language_code]['adblock_plus_settings']) - lbl_adblock_plus_settings.grid(column=0, row=group_row_count, sticky = E+N) - - txt_adblock_plus_settings = Text(frame_group_header, width=30, height=3) - txt_adblock_plus_settings.grid(column=1, row=group_row_count, sticky = W) - txt_adblock_plus_settings.insert("1.0", CONST_ADBLOCK_PLUS_ADVANCED_FILTER_DEFAULT) - - icon_copy_filename = "icon_copy_2.gif" - icon_copy_img = PhotoImage(file=icon_copy_filename) - - lbl_icon_copy = Label(frame_group_header, image=icon_copy_img, cursor="hand2") - lbl_icon_copy.image = icon_copy_img - lbl_icon_copy.grid(column=2, row=group_row_count, sticky = W+N) - lbl_icon_copy.bind("", lambda e: btn_copy_clicked()) - - group_row_count +=1 - global lbl_auto_reload_page_interval lbl_auto_reload_page_interval = Label(frame_group_header, text=translate[language_code]['auto_reload_page_interval']) lbl_auto_reload_page_interval.grid(column=0, row=group_row_count, sticky = E) @@ -2007,20 +1946,6 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X): group_row_count +=1 - global lbl_auto_reload_random_delay - lbl_auto_reload_random_delay = Label(frame_group_header, text=translate[language_code]['auto_reload_random_delay']) - lbl_auto_reload_random_delay.grid(column=0, row=group_row_count, sticky = E) - - global chk_state_auto_reload_random_delay - chk_state_auto_reload_random_delay = BooleanVar() - chk_state_auto_reload_random_delay.set(config_dict["advanced"]["auto_reload_random_delay"]) - - global chk_auto_reload_random_delay - chk_auto_reload_random_delay = Checkbutton(frame_group_header, text=translate[language_code]['enable'], variable=chk_state_auto_reload_random_delay) - chk_auto_reload_random_delay.grid(column=1, row=group_row_count, sticky = W) - - group_row_count +=1 - global lbl_proxy_server_port lbl_proxy_server_port = Label(frame_group_header, text=translate[language_code]['proxy_server_port']) lbl_proxy_server_port.grid(column=0, row=group_row_count, sticky = E) @@ -2739,7 +2664,7 @@ def main(): load_GUI(root, config_dict) GUI_SIZE_WIDTH = 580 - GUI_SIZE_HEIGHT = 615 + GUI_SIZE_HEIGHT = 590 GUI_SIZE_MACOS = str(GUI_SIZE_WIDTH) + 'x' + str(GUI_SIZE_HEIGHT) GUI_SIZE_WINDOWS=str(GUI_SIZE_WIDTH-60) + 'x' + str(GUI_SIZE_HEIGHT-70) diff --git a/text_server.py b/text_server.py index 1ecc78a..468e315 100644 --- a/text_server.py +++ b/text_server.py @@ -27,7 +27,7 @@ import pyperclip import tornado from tornado.web import Application -CONST_APP_VERSION = "MaxBot (2023.12.31)" +CONST_APP_VERSION = "MaxBot (2024.01.01)" CONST_MAXBOT_QUESTION_FILE = "MAXBOT_QUESTION.txt" diff --git a/webdriver/Maxbotplus_1.0.0/data/settings.json b/webdriver/Maxbotplus_1.0.0/data/settings.json index b30cf2e..0f53679 100644 --- a/webdriver/Maxbotplus_1.0.0/data/settings.json +++ b/webdriver/Maxbotplus_1.0.0/data/settings.json @@ -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": "", "adblock_plus_enable": false, "disable_adjacent_seat": false, "hide_some_image": false, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "online_dictionary_url": "", "auto_reload_page_interval": 1.0, "auto_reload_random_delay": false, "proxy_server_port": ""}} \ No newline at end of file +{"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": "", "disable_adjacent_seat": false, "hide_some_image": true, "block_facebook_network": false, "headless": false, "verbose": false, "auto_guess_options": true, "user_guess_string": "", "online_dictionary_url": "", "auto_reload_page_interval": 0.1, "proxy_server_port": ""}} \ No newline at end of file diff --git a/webdriver/Maxbotplus_1.0.0/js/cityline_event_detail.js b/webdriver/Maxbotplus_1.0.0/js/cityline_event_detail.js index dc111fc..98a72d2 100644 --- a/webdriver/Maxbotplus_1.0.0/js/cityline_event_detail.js +++ b/webdriver/Maxbotplus_1.0.0/js/cityline_event_detail.js @@ -1,4 +1,6 @@ const storage = chrome.storage.local; +var settings = null; + var eventDataCache = null; var performanceDataCache = null; var selectedPerfId = null; @@ -70,9 +72,27 @@ var fillEventData = function(data) { eventDataCache = data; eventImageUrl = data.eventLargeCoverUrl + let reload=false; let eventStatues = {"TOBESOLD" : "event-status-tobesold", "SALE" : "event-status-sale", "SOLDOUT" : "event-status-soldout", "EXPIRED" : "event-status-expired"}; - if(data.status=="TOBESOLD") location.reload(); - if(data.status=="SOLDOUT") location.reload(); + if(data.status=="TOBESOLD") reload=true; + if(data.status=="SOLDOUT") reload=true;; + + if(reload) { + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + if(auto_reload_page_interval == 0) { + //console.log('Start to reload now.'); + location.reload(); + } else { + console.log('We are going to reload after few seconeds.'); + setTimeout(function () { + location.reload(); + }, auto_reload_page_interval * 1000); + } + } + } var openWindow = function(url) { @@ -308,6 +328,14 @@ function cityline_event_status_check() } } +storage.get('settings', function (items) +{ + if (items.settings) + { + settings = items.settings; + } +}); + storage.get('status', function (items) { if (items.status && items.status=='ON') diff --git a/webdriver/Maxbotplus_1.0.0/js/cityline_msg_background.js b/webdriver/Maxbotplus_1.0.0/js/cityline_msg_background.js new file mode 100644 index 0000000..ad7a55d --- /dev/null +++ b/webdriver/Maxbotplus_1.0.0/js/cityline_msg_background.js @@ -0,0 +1,32 @@ +const storage = chrome.storage.local; +var settings = null; + +function cityline_msg_start(status) +{ + if(settings) { + let settings_div=""; + $("body").append(settings_div); + let status_div=""; + $("body").append(status_div); + //console.log("dom append"); + } +} + +storage.get('settings', function (items) +{ + if (items.settings) + { + settings = items.settings; + } +}); + +storage.get('status', function (items) +{ + if (items.status && items.status=='ON') + { + cityline_msg_start(items.status); + } else { + console.log('no status found'); + } +}); + diff --git a/webdriver/Maxbotplus_1.0.0/js/cityline_msg_front.js b/webdriver/Maxbotplus_1.0.0/js/cityline_msg_front.js new file mode 100644 index 0000000..cd23ae6 --- /dev/null +++ b/webdriver/Maxbotplus_1.0.0/js/cityline_msg_front.js @@ -0,0 +1,35 @@ +function begin() +{ + let settings = JSON.parse($("#settings").html()); + let status = $("#status").html(); + console.log("msg"); + console.log(settings); + console.log(status); + + $("#settings").remove(); + $("#status").remove(); + + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + + if(status=='ON') { + setInterval(() => { + retry(); + }, auto_reload_page_interval * 1000); + } +} + +function dom_ready() +{ + console.log("checking..."); + if($("#settings").length>0) { + clearInterval(myInterval); + begin(); + } +} + +myInterval = setInterval(() => { + dom_ready(); +}, 100); \ No newline at end of file diff --git a/webdriver/Maxbotplus_1.0.0/js/kktix_registrations_reload.js b/webdriver/Maxbotplus_1.0.0/js/kktix_registrations_reload.js index 0ca73f6..84fb1e4 100644 --- a/webdriver/Maxbotplus_1.0.0/js/kktix_registrations_reload.js +++ b/webdriver/Maxbotplus_1.0.0/js/kktix_registrations_reload.js @@ -73,8 +73,21 @@ function kktix_ajax_done(register_info) if(register_info.inventory.registerStatus=='SOLD_OUT') {reload=true;} //console.log(reload); if(reload) { - location.reload(); - } else { + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + if(auto_reload_page_interval == 0) { + //console.log('Start to reload now.'); + location.reload(); + } else { + console.log('We are going to reload after few seconeds.'); + setTimeout(function () { + location.reload(); + }, auto_reload_page_interval * 1000); + } + } + else { $(function() { myInterval = setInterval(() => { clean_sold_out_row(register_info); diff --git a/webdriver/Maxbotplus_1.0.0/js/ticketplus_order.js b/webdriver/Maxbotplus_1.0.0/js/ticketplus_order.js index 8f372bd..8c785cf 100644 --- a/webdriver/Maxbotplus_1.0.0/js/ticketplus_order.js +++ b/webdriver/Maxbotplus_1.0.0/js/ticketplus_order.js @@ -19,34 +19,30 @@ function ajax_return_done(data, real_event_id, real_session_id) { //console.log("ajax return done") let reload=false; - let auto_reload_random_delay = false; + let auto_reload_page_interval = 0.0; if(settings) { - auto_reload_random_delay = settings.advanced.auto_reload_random_delay; + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; } - //console.log("auto_reload_random_delay:"+auto_reload_random_delay); + //console.log("auto_reload_page_interval:"+auto_reload_page_interval); - let is_match_reload_status = false; if(data.result.session[0].status=="pending" || data.result.session[0].status=="soldout" || data.result.session[0].status=="unavailable") { - is_match_reload_status = true; + reload=true; } //console.log("is_match_reload_status:"+is_match_reload_status); - if(is_match_reload_status) { - retry_count +=1; - - if (settings) - { - if(!auto_reload_random_delay) { - //console.log('Start to reload now.'); - location.reload(); - } else { - console.log('We are going to reload after few seconeds.'); - setTimeout(function () { - location.reload(); - }, 7000); - } + if(reload) { + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + if(auto_reload_page_interval == 0) { + //console.log('Start to reload now.'); + location.reload(); } else { - console.log('no settings found'); + console.log('We are going to reload after few seconeds.'); + setTimeout(function () { + location.reload(); + }, auto_reload_page_interval * 1000); } } diff --git a/webdriver/Maxbotplus_1.0.0/js/tixcraft_area.js b/webdriver/Maxbotplus_1.0.0/js/tixcraft_area.js index 9df972c..b307094 100644 --- a/webdriver/Maxbotplus_1.0.0/js/tixcraft_area.js +++ b/webdriver/Maxbotplus_1.0.0/js/tixcraft_area.js @@ -92,20 +92,41 @@ function tixcraft_area_main(settings) { function area_auto_reload() { + let reload=false; if ($("ul.area-list > li:has(a)").length) { - storage.get('settings', function (items) + if (settings) { - if (items.settings) - { - settings = items.settings; - tixcraft_area_main(settings); - } - }); + tixcraft_area_main(settings); + } } else { - location.reload(); + reload=true; + } + + if(reload) { + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + if(auto_reload_page_interval == 0) { + //console.log('Start to reload now.'); + location.reload(); + } else { + console.log('We are going to reload after few seconeds.'); + setTimeout(function () { + location.reload(); + }, auto_reload_page_interval * 1000); + } } } +storage.get('settings', function (items) +{ + if (items.settings) + { + settings = items.settings; + } +}); + storage.get('status', function (items) { if (items.status && items.status=='ON') diff --git a/webdriver/Maxbotplus_1.0.0/js/tixcraft_detail.js b/webdriver/Maxbotplus_1.0.0/js/tixcraft_detail.js index 58a1bbf..33f1217 100644 --- a/webdriver/Maxbotplus_1.0.0/js/tixcraft_detail.js +++ b/webdriver/Maxbotplus_1.0.0/js/tixcraft_detail.js @@ -1,11 +1,9 @@ -(function () { - const currentUrl = window.location.href; - const event_code = currentUrl.split('/')[5]; - //console.log(currentUrl); - //console.log(event_code); - if(event_code){ - let domain = currentUrl.split('/')[2]; - let new_url = "https://"+ domain +"/activity/game/"+ event_code; - location.href=new_url; - } -})(); +const currentUrl = window.location.href; +const event_code = currentUrl.split('/')[5]; +//console.log(currentUrl); +//console.log(event_code); +if(event_code){ + const domain = currentUrl.split('/')[2]; + const new_url = "https://"+ domain +"/activity/game/"+ event_code; + location.href=new_url; +} diff --git a/webdriver/Maxbotplus_1.0.0/js/tixcraft_game.js b/webdriver/Maxbotplus_1.0.0/js/tixcraft_game.js index ce01227..2236991 100644 --- a/webdriver/Maxbotplus_1.0.0/js/tixcraft_game.js +++ b/webdriver/Maxbotplus_1.0.0/js/tixcraft_game.js @@ -52,7 +52,14 @@ function date_keyword(settings) } if (target_date.length) { - let link = target_date.parent().find("button").attr("data-href"); + let button_tag = "button"; + const currentUrl = window.location.href; + const domain = currentUrl.split('/')[2]; + if(domain=="ticketmaster.sg") { + button_tag = "a"; + } + + let link = target_date.parent().find(button_tag).attr("data-href"); if (link) { //console.log("link: " + link); clearInterval(myInterval); @@ -74,31 +81,57 @@ function date_main(settings) function date_auto_reload() { - if ($("#gameList button").length) { - date_clean(); - if ($("#gameList button").length) { - storage.get('settings', function (items) - { - if (items.settings) - { - settings = items.settings; - date_main(settings); - } else { - console.log('no settings found'); - } - }); + let reload=false; + + let button_tag = "button"; + const currentUrl = window.location.href; + const domain = currentUrl.split('/')[2]; + if(domain=="ticketmaster.sg") { + button_tag = "a"; + } + const query_string = "#gameList "+button_tag; + if ($(query_string).length) { + date_clean(); + if ($(query_string).length) { + if (settings) + { + date_main(settings); + } } else { - location.reload(); + reload=true; } } else { - location.reload(); + reload=true; + } + + if(reload) { + let auto_reload_page_interval = 0.0; + if(settings) { + auto_reload_page_interval = settings.advanced.auto_reload_page_interval; + } + if(auto_reload_page_interval == 0) { + //console.log('Start to reload now.'); + location.reload(); + } else { + console.log('We are going to reload after few seconeds.'); + setTimeout(function () { + location.reload(); + }, auto_reload_page_interval * 1000); + } } } +storage.get('settings', function (items) +{ + if (items.settings) + { + settings = items.settings; + } +}); + storage.get('status', function (items) { - console.log(items); if (items.status && items.status=='ON') { date_auto_reload(); @@ -106,5 +139,3 @@ storage.get('status', function (items) console.log('no status found'); } }); - - diff --git a/webdriver/Maxbotplus_1.0.0/manifest.json b/webdriver/Maxbotplus_1.0.0/manifest.json index 3a6b2d4..506d5b8 100644 --- a/webdriver/Maxbotplus_1.0.0/manifest.json +++ b/webdriver/Maxbotplus_1.0.0/manifest.json @@ -41,55 +41,55 @@ "default_title": "MaxBot" }, "content_scripts" : [ - { - "matches" : [ "https://tixcraft.com/ticket/area/*" ], - "run_at": "document_end", - "js" : [ "jquery.min.js", "js/tixcraft_area.js" ] - }, { "matches" : [ - "https://tixcraft.com/activity/game/*", - "https://www.indievox.com/activity/game/*", - "https://indievox.com/activity/game/*", - "https://ticketmaster.sg/activity/game/*", - "https://ticketmaster.com/activity/game/*" + "https://tixcraft.com/", + "https://www.indievox.com/", + "https://indievox.com/", + "https://ticketmaster.sg/" ], "run_at": "document_end", - "js" : [ "jquery.min.js", "js/common.js", "js/tixcraft_game.js" ] + "js" : [ "jquery.min.js", "js/tixcraft_home.js" ] }, { "matches" : [ "https://tixcraft.com/activity/detail/*", "https://www.indievox.com/activity/detail/*", "https://indievox.com/activity/detail/*", - "https://ticketmaster.sg/activity/detail/*", - "https://ticketmaster.com/activity/detail/*" + "https://ticketmaster.sg/activity/detail/*" + ], + "run_at": "document_start", + "js" : [ "jquery.min.js", "js/tixcraft_detail.js" ] + }, + { + "matches" : [ + "https://tixcraft.com/activity/game/*", + "https://www.indievox.com/activity/game/*", + "https://indievox.com/activity/game/*", + "https://ticketmaster.sg/activity/game/*" ], "run_at": "document_end", - "js" : [ "jquery.min.js", "js/tixcraft_detail.js" ] + "js" : [ "jquery.min.js", "js/common.js", "js/tixcraft_game.js" ] + }, + { + "matches" : [ + "https://tixcraft.com/ticket/area/*", + "https://www.indievox.com/ticket/area/*", + "https://indievox.com/ticket/area/*" + ], + "run_at": "document_end", + "js" : [ "jquery.min.js", "js/common.js", "js/tixcraft_area.js" ] }, { "matches" : [ "https://tixcraft.com/ticket/ticket/*", "https://www.indievox.com/ticket/ticket/*", "https://indievox.com/ticket/ticket/*", - "https://ticketmaster.sg/ticket/ticket/*", - "https://ticketmaster.com/ticket/ticket/*" + "https://ticketmaster.sg/ticket/ticket/*" ], "run_at": "document_end", "js" : [ "jquery.min.js", "js/tixcraft_ticket.js" ] }, - { - "matches" : [ - "https://tixcraft.com/", - "https://www.indievox.com/", - "https://indievox.com/", - "https://ticketmaster.sg/", - "https://ticketmaster.com/" - ], - "run_at": "document_end", - "js" : [ "jquery.min.js", "js/tixcraft_home.js" ] - }, { "matches" : [ "https://ticket.com.tw/application/UTK02/UTK0201_.aspx?PRODUCT_ID=*" ], "run_at": "document_end", @@ -129,6 +129,21 @@ "run_at": "document_end", "js" : [ "jquery.min.js", "js/ibon_area.js" ] }, + { + "matches" : [ + "https://msg.cityline.com/*.html*" + ], + "run_at": "document_end", + "js" : [ "jquery.min.js", "js/cityline_msg_background.js"] + }, + { + "matches" : [ + "https://msg.cityline.com/*.html*" + ], + "run_at": "document_end", + "world": "MAIN", + "js" : [ "jquery.min.js", "js/cityline_msg_front.js"] + }, { "matches" : [ "https://*.cityline.com/utsvInternet/internet/eventDetail?event=*", @@ -174,5 +189,5 @@ "js" : [ "jquery.min.js", "js/common.js", "js/kktix_registrations_reload.js" ] } ], - "version": "1.0.0" + "version": "1.0.1" } \ No newline at end of file diff --git a/webdriver/Maxbotplus_1.0.0/options.html b/webdriver/Maxbotplus_1.0.0/options.html index 59e67ba..40c3c51 100644 --- a/webdriver/Maxbotplus_1.0.0/options.html +++ b/webdriver/Maxbotplus_1.0.0/options.html @@ -61,14 +61,12 @@ +
-
- - -
-
+ + + +
diff --git a/webdriver/Maxbotplus_1.0.0/options.js b/webdriver/Maxbotplus_1.0.0/options.js index 44bba49..de3de24 100644 --- a/webdriver/Maxbotplus_1.0.0/options.js +++ b/webdriver/Maxbotplus_1.0.0/options.js @@ -7,7 +7,7 @@ const date_keyword = document.querySelector('#date_keyword'); const area_select_mode = document.querySelector('#area_select_mode'); const area_keyword = document.querySelector('#area_keyword'); const keyword_exclude = document.querySelector('#keyword_exclude'); -const auto_reload_random_delay = document.querySelector('#auto_reload_random_delay'); +const auto_reload_page_interval = document.querySelector('#auto_reload_page_interval'); var settings = null; loadChanges(); @@ -29,7 +29,7 @@ async function saveChanges() settings.area_auto_select.mode = area_select_mode.value; settings.area_auto_select.area_keyword = area_keyword.value; settings.keyword_exclude = keyword_exclude.value; - settings.advanced.auto_reload_random_delay = auto_reload_random_delay.checked; + settings.advanced.auto_reload_page_interval = auto_reload_page_interval.value; await storage.set( { @@ -56,7 +56,7 @@ function loadChanges() area_select_mode.value = settings.area_auto_select.mode; area_keyword.value = settings.area_auto_select.area_keyword; keyword_exclude.value = settings.keyword_exclude; - auto_reload_random_delay.checked = settings.advanced.auto_reload_random_delay; + auto_reload_page_interval.value = settings.advanced.auto_reload_page_interval; //message('Loaded saved settings.'); } else { console.log('no settings found'); diff --git a/webdriver/Maxbotplus_1.0.0/rules_1.json b/webdriver/Maxbotplus_1.0.0/rules_1.json index 5060e73..13a3a06 100644 --- a/webdriver/Maxbotplus_1.0.0/rules_1.json +++ b/webdriver/Maxbotplus_1.0.0/rules_1.json @@ -259,5 +259,32 @@ "urlFilter": "*www.youtube.com/youtubei/v1/player/heartbeat*", "resourceTypes": ["main_frame", "sub_frame", "script", "image", "font", "xmlhttprequest", "media"] } + }, + { + "id": 30, + "priority": 1, + "action": { "type": "block"}, + "condition": { + "urlFilter": "*tixcraft.com/js/analytics.js*", + "resourceTypes": ["main_frame", "sub_frame", "script", "image", "font", "xmlhttprequest", "media"] + } + }, + { + "id": 31, + "priority": 1, + "action": { "type": "block"}, + "condition": { + "urlFilter": "*ticketmaster.sg/js/adblock.js*", + "resourceTypes": ["main_frame", "sub_frame", "script", "image", "font", "xmlhttprequest", "media"] + } + }, + { + "id": 32, + "priority": 1, + "action": { "type": "block"}, + "condition": { + "urlFilter": "*img.uniicreative.com/*", + "resourceTypes": ["main_frame", "sub_frame", "script", "image", "font", "xmlhttprequest", "media"] + } } ]