2024-01-12, restart browser with interval.
parent
49ce76808d
commit
c0acf7fd89
|
@ -19,6 +19,9 @@ class NonBrowser():
|
|||
ret = True
|
||||
return ret
|
||||
|
||||
def Get_cookies(self):
|
||||
return self.Session.cookies.get_dict()
|
||||
|
||||
def set_headers(self, header:str):
|
||||
self.Session.headers = header
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ try:
|
|||
except Exception as exc:
|
||||
pass
|
||||
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.11)"
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.12)"
|
||||
|
||||
CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt"
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
|
@ -807,8 +807,8 @@ def close_browser_tabs(driver):
|
|||
pass
|
||||
|
||||
def get_driver_by_config(config_dict):
|
||||
global driver
|
||||
|
||||
driver = None
|
||||
|
||||
# read config.
|
||||
homepage = config_dict["homepage"]
|
||||
|
||||
|
@ -7432,7 +7432,10 @@ def set_non_browser_cookies(driver, url, Captcha_Browser):
|
|||
domain_name = url.split('/')[2]
|
||||
#PS: need set cookies once, if user change domain.
|
||||
if not Captcha_Browser is None:
|
||||
Captcha_Browser.Set_cookies(driver.get_cookies())
|
||||
try:
|
||||
Captcha_Browser.Set_cookies(driver.get_cookies())
|
||||
except Exception as e:
|
||||
pass
|
||||
Captcha_Browser.Set_Domain(domain_name)
|
||||
|
||||
def ticketmaster_parse_zone_info(driver, config_dict):
|
||||
|
@ -12309,7 +12312,7 @@ def get_current_url(driver):
|
|||
for each_error_string in exit_bot_error_strings:
|
||||
if isinstance(str_exc, str):
|
||||
if each_error_string in str_exc:
|
||||
print('quit bot by error:', each_error_string)
|
||||
print('quit bot by error:', each_error_string, driver)
|
||||
is_quit_bot = True
|
||||
driver.quit()
|
||||
sys.exit()
|
||||
|
@ -12320,6 +12323,21 @@ def get_current_url(driver):
|
|||
|
||||
return url, is_quit_bot
|
||||
|
||||
def reset_webdriver(driver, config_dict, url):
|
||||
new_driver = None
|
||||
try:
|
||||
cookies = driver.get_cookies()
|
||||
driver.close()
|
||||
config_dict["homepage"]=url
|
||||
new_driver = get_driver_by_config(config_dict)
|
||||
for cookie in cookies:
|
||||
new_driver.add_cookie(cookie);
|
||||
new_driver.get(url)
|
||||
driver = new_driver
|
||||
except Exception as e:
|
||||
pass
|
||||
return new_driver
|
||||
|
||||
def main(args):
|
||||
config_dict = get_config_dict(args)
|
||||
|
||||
|
@ -12377,13 +12395,13 @@ def main(args):
|
|||
if config_dict["ocr_captcha"]["enable"]:
|
||||
ocr = ddddocr.DdddOcr(show_ad=False, beta=config_dict["ocr_captcha"]["beta"])
|
||||
Captcha_Browser = NonBrowser()
|
||||
|
||||
if len(config_dict["advanced"]["tixcraft_sid"]) > 1:
|
||||
set_non_browser_cookies(driver, config_dict["homepage"], Captcha_Browser)
|
||||
except Exception as exc:
|
||||
print(exc)
|
||||
pass
|
||||
|
||||
maxbot_last_reset_time = time.time()
|
||||
while True:
|
||||
time.sleep(0.05)
|
||||
|
||||
|
@ -12417,10 +12435,16 @@ def main(args):
|
|||
if is_maxbot_paused:
|
||||
if 'kktix.c' in url:
|
||||
kktix_dict = kktix_paused_main(driver, url, config_dict, kktix_dict)
|
||||
|
||||
# sleep more when paused.
|
||||
time.sleep(0.1)
|
||||
continue
|
||||
|
||||
if config_dict["advanced"]["reset_browser_interval"] > 0:
|
||||
maxbot_running_time = time.time() - maxbot_last_reset_time
|
||||
if maxbot_running_time > config_dict["advanced"]["reset_browser_interval"]:
|
||||
driver = reset_webdriver(driver, config_dict, url)
|
||||
maxbot_last_reset_time = time.time()
|
||||
|
||||
tixcraft_family = False
|
||||
if 'tixcraft.com' in url:
|
||||
tixcraft_family = True
|
||||
|
|
|
@ -22,7 +22,7 @@ import sys
|
|||
import threading
|
||||
import webbrowser
|
||||
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.11)"
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.12)"
|
||||
|
||||
CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json"
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
|
|
|
@ -65,6 +65,7 @@
|
|||
"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": ""
|
||||
}
|
||||
}
|
27
settings.py
27
settings.py
|
@ -39,7 +39,7 @@ try:
|
|||
except Exception as exc:
|
||||
pass
|
||||
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.11)"
|
||||
CONST_APP_VERSION = "MaxBot (2024.01.12)"
|
||||
|
||||
CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt"
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
|
@ -133,6 +133,7 @@ def load_translate():
|
|||
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.)'
|
||||
en_us["reset_browser_interval"] = 'Reset browser interval(sec.)'
|
||||
en_us["proxy_server_port"] = 'Proxy IP:PORT'
|
||||
|
||||
en_us["area_select_order"] = 'Area select order'
|
||||
|
@ -240,6 +241,7 @@ def load_translate():
|
|||
zh_tw["pass_date_is_sold_out"] = '避開「搶購一空」的日期'
|
||||
zh_tw["auto_reload_coming_soon_page"] = '自動刷新倒數中的日期頁面'
|
||||
zh_tw["auto_reload_page_interval"] = '自動刷新頁面間隔(秒)'
|
||||
zh_tw["reset_browser_interval"] = '重新啟動瀏覽器間隔(秒)'
|
||||
zh_tw["proxy_server_port"] = 'Proxy IP:PORT'
|
||||
|
||||
zh_tw["area_select_order"] = '區域排序方式'
|
||||
|
@ -347,6 +349,7 @@ def load_translate():
|
|||
zh_cn["pass_date_is_sold_out"] = '避开“抢购一空”的日期'
|
||||
zh_cn["auto_reload_coming_soon_page"] = '自动刷新倒数中的日期页面'
|
||||
zh_cn["auto_reload_page_interval"] = '重新加载间隔(秒)'
|
||||
zh_cn["reset_browser_interval"] = '重新启动浏览器间隔(秒)'
|
||||
zh_cn["proxy_server_port"] = 'Proxy IP:PORT'
|
||||
|
||||
zh_cn["area_select_order"] = '区域排序方式'
|
||||
|
@ -455,6 +458,7 @@ def load_translate():
|
|||
ja_jp["pass_date_is_sold_out"] = '「売り切れ」公演を避ける'
|
||||
ja_jp["auto_reload_coming_soon_page"] = '公開予定のページをリロード'
|
||||
ja_jp["auto_reload_page_interval"] = 'リロード間隔(秒)'
|
||||
ja_jp["reset_browser_interval"] = 'ブラウザの再起動間隔(秒)'
|
||||
ja_jp["proxy_server_port"] = 'Proxy IP:PORT'
|
||||
|
||||
ja_jp["area_select_order"] = 'エリアソート方法'
|
||||
|
@ -687,6 +691,7 @@ def get_default_config():
|
|||
config_dict["advanced"]["remote_url"] = "http://127.0.0.1:%d/" % (CONST_SERVER_PORT)
|
||||
|
||||
config_dict["advanced"]["auto_reload_page_interval"] = 0.1
|
||||
config_dict["advanced"]["reset_browser_interval"] = 0
|
||||
config_dict["advanced"]["proxy_server_port"] = ""
|
||||
|
||||
return config_dict
|
||||
|
@ -776,6 +781,7 @@ def btn_save_act(language_code, slience_mode=False):
|
|||
global chk_state_pass_date_is_sold_out
|
||||
global chk_state_auto_reload_coming_soon_page
|
||||
global txt_auto_reload_page_interval
|
||||
global txt_reset_browser_intervalv
|
||||
global txt_proxy_server_port
|
||||
|
||||
global txt_tixcraft_sid
|
||||
|
@ -986,8 +992,14 @@ 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"]["reset_browser_interval"] = float(txt_reset_browser_interval.get().strip())
|
||||
config_dict["advanced"]["proxy_server_port"] = txt_proxy_server_port.get().strip()
|
||||
|
||||
if config_dict["advanced"]["reset_browser_interval"] > 0:
|
||||
if config_dict["advanced"]["reset_browser_interval"] < 20:
|
||||
# min value is 20 seconds.
|
||||
config_dict["advanced"]["reset_browser_interval"] = 20
|
||||
|
||||
|
||||
# save config.
|
||||
if is_all_data_correct:
|
||||
|
@ -1286,6 +1298,7 @@ def applyNewLanguage():
|
|||
global lbl_block_facebook_network_recommand
|
||||
|
||||
global lbl_auto_reload_page_interval
|
||||
global lbl_reset_browser_interval
|
||||
global lbl_proxy_server_port
|
||||
|
||||
lbl_homepage.config(text=translate[language_code]["homepage"])
|
||||
|
@ -1322,6 +1335,7 @@ def applyNewLanguage():
|
|||
lbl_block_facebook_network_recommand.config(text=translate[language_code]["recommand_enable"])
|
||||
|
||||
lbl_auto_reload_page_interval.config(text=translate[language_code]["auto_reload_page_interval"])
|
||||
lbl_reset_browser_interval.config(text=translate[language_code]["reset_browser_interval"])
|
||||
lbl_proxy_server_port.config(text=translate[language_code]["proxy_server_port"])
|
||||
|
||||
lbl_headless.config(text=translate[language_code]["headless"])
|
||||
|
@ -1944,6 +1958,17 @@ def AdvancedTab(root, config_dict, language_code, UI_PADDING_X):
|
|||
|
||||
group_row_count +=1
|
||||
|
||||
global lbl_reset_browser_interval
|
||||
lbl_reset_browser_interval = Label(frame_group_header, text=translate[language_code]['reset_browser_interval'])
|
||||
lbl_reset_browser_interval.grid(column=0, row=group_row_count, sticky = E)
|
||||
|
||||
global txt_reset_browser_interval
|
||||
txt_reset_browser_interval_value = StringVar(frame_group_header, value=config_dict["advanced"]["reset_browser_interval"])
|
||||
txt_reset_browser_interval = Entry(frame_group_header, width=30, textvariable = txt_reset_browser_interval_value)
|
||||
txt_reset_browser_interval.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)
|
||||
|
|
|
@ -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": "", "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, "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": "", "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "reset_browser_interval": 0.0, "proxy_server_port": ""}}
|
Loading…
Reference in New Issue