2024-01-01, update for firefox browser, cityline maxbot plus extension.

master
unknown 2024-01-09 16:30:49 +08:00
parent 1cf1418cb5
commit 8f32c4975d
18 changed files with 330 additions and 212 deletions

View File

@ -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

View File

@ -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"

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": "", "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": ""}}
{"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": ""}}

View File

@ -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("<Button-1>", 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)

View File

@ -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"

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": "", "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": ""}}
{"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": ""}}

View File

@ -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')

View File

@ -0,0 +1,32 @@
const storage = chrome.storage.local;
var settings = null;
function cityline_msg_start(status)
{
if(settings) {
let settings_div="<div style='display:none' id='settings'>" + JSON.stringify(settings) + "</div>";
$("body").append(settings_div);
let status_div="<div style='display:none' id='status'>" + 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');
}
});

View File

@ -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);

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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')

View File

@ -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;
}

View File

@ -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');
}
});

View File

@ -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"
}

View File

@ -61,14 +61,12 @@
<label for="keyword_exclude" class="form-label">Exclude Keywords</label>
<textarea class="form-control" id="keyword_exclude" rows="3"></textarea>
</div>
<div class="col-12">
<div class="form-check">
<input class="form-check-input" type="checkbox" id="auto_reload_random_delay">
<label class="form-check-label" for="auto_reload_random_delay">
Add random delay for auto reload
</label>
</div>
</div -->
<label for="auto_reload_page_interval" class="form-label">Reload page interval(sec.)</label>
<input class="form-control" id="auto_reload_page_interval" value="" />
</div>
<div class="col-12">
<button class="btn btn-primary" id="save_btn">Save</button>
</div>

View File

@ -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');

View File

@ -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"]
}
}
]