From 9b0d32918f151ff12740ebb428ba0f1e77ccaeee Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 25 Aug 2024 17:31:16 +0800 Subject: [PATCH] 2024-04-23, add refrash at target time --- chrome_tixcraft.py | 21 +++++++++++++- config_launcher.py | 2 +- demo_video.md | 6 ---- nodriver_tixcraft.py | 24 ++++++++++++++- settings.json | 5 ++-- settings.py | 4 ++- settings_old.py | 29 +++++++++++++++---- .../Maxblockplus_1.0.0/data/settings.json | 2 +- webdriver/Maxbotplus_1.0.0/data/settings.json | 2 +- www/settings.html | 13 +++++++++ www/settings.js | 5 +++- 11 files changed, 93 insertions(+), 20 deletions(-) diff --git a/chrome_tixcraft.py b/chrome_tixcraft.py index 6040128..9412aaa 100644 --- a/chrome_tixcraft.py +++ b/chrome_tixcraft.py @@ -44,7 +44,7 @@ except Exception as exc: print(exc) pass -CONST_APP_VERSION = "MaxBot (2024.04.22)" +CONST_APP_VERSION = "MaxBot (2024.04.23)" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_CONFIG_FILE = "settings.json" @@ -10851,6 +10851,20 @@ def resize_window(driver, config_dict): driver.set_window_size(int(size_array[0]), int(size_array[1])) driver.set_window_position(position_left, 30) +def check_refresh_datetime_occur(driver, target_time): + is_refresh_datetime_sent = False + + system_clock_data = datetime.now() + current_time = system_clock_data.strftime('%H:%M:%S') + if target_time == current_time: + try: + driver.refresh() + is_refresh_datetime_sent = True + print("send refresh at time:", current_time) + except Exception as exc: + pass + + return is_refresh_datetime_sent def main(args): config_dict = get_config_dict(args) @@ -10885,6 +10899,8 @@ def main(args): maxbot_last_reset_time = time.time() is_quit_bot = False + is_refresh_datetime_sent = False + while True: time.sleep(0.05) @@ -10936,6 +10952,9 @@ def main(args): driver = reset_webdriver(driver, config_dict, url) maxbot_last_reset_time = time.time() + if not is_refresh_datetime_sent: + is_refresh_datetime_sent = check_refresh_datetime_occur(driver, config_dict["refresh_datetime"]) + tixcraft_family = False if 'tixcraft.com' in url: tixcraft_family = True diff --git a/config_launcher.py b/config_launcher.py index 2b925ca..a62d7ae 100644 --- a/config_launcher.py +++ b/config_launcher.py @@ -24,7 +24,7 @@ import webbrowser import util -CONST_APP_VERSION = "MaxBot (2024.04.22)" +CONST_APP_VERSION = "MaxBot (2024.04.23)" CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json" CONST_MAXBOT_CONFIG_FILE = "settings.json" diff --git a/demo_video.md b/demo_video.md index b4026a8..2939fe5 100644 --- a/demo_video.md +++ b/demo_video.md @@ -1,11 +1,5 @@ # Demo (示範影片) -### 2024-04-14 - -網頁設定介面 - -https://youtu.be/VDQFbweMLxU - ### 2024-04-11 信用卡活動登錄自動填身份證號碼 diff --git a/nodriver_tixcraft.py b/nodriver_tixcraft.py index 4d4712b..25931f0 100644 --- a/nodriver_tixcraft.py +++ b/nodriver_tixcraft.py @@ -32,7 +32,7 @@ except Exception as exc: print(exc) pass -CONST_APP_VERSION = "MaxBot (2024.04.22)" +CONST_APP_VERSION = "MaxBot (2024.04.23)" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_CONFIG_FILE = "settings.json" @@ -2152,6 +2152,23 @@ def nodriver_overwrite_prefs(conf): with open(state_filepath, 'w') as outfile: outfile.write(json_str) + +async def check_refresh_datetime_occur(tab, target_time): + is_refresh_datetime_sent = False + + system_clock_data = datetime.now() + current_time = system_clock_data.strftime('%H:%M:%S') + if target_time == current_time: + try: + await tab.reload() + is_refresh_datetime_sent = True + print("send refresh at time:", current_time) + except Exception as exc: + pass + + return is_refresh_datetime_sent + + async def main(args): config_dict = get_config_dict(args) @@ -2205,6 +2222,8 @@ async def main(args): maxbot_last_reset_time = time.time() is_quit_bot = False + is_refresh_datetime_sent = False + while True: time.sleep(0.05) @@ -2250,6 +2269,9 @@ async def main(args): time.sleep(0.1) continue + if not is_refresh_datetime_sent: + is_refresh_datetime_sent = await check_refresh_datetime_occur(tab, config_dict["refresh_datetime"]) + # for kktix.cc and kktix.com if 'kktix.c' in url: is_quit_bot = await nodriver_kktix_main(tab, url, config_dict) diff --git a/settings.json b/settings.json index 3043a85..6bfdcdd 100644 --- a/settings.json +++ b/settings.json @@ -1,8 +1,9 @@ { "homepage": "about:blank", "browser": "chrome", - "language": "English", + "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, + "refresh_datetime": "", "ocr_captcha": { "enable": true, "beta": true, @@ -82,7 +83,7 @@ "remote_url": "\"http://127.0.0.1:16888/\"", "auto_reload_page_interval": 0.1, "auto_reload_overheat_count": 4, - "auto_reload_overheat_cd": 1, + "auto_reload_overheat_cd": 1.0, "reset_browser_interval": 0, "proxy_server_port": "", "window_size": "480,1024", diff --git a/settings.py b/settings.py index 4526f81..1000bac 100644 --- a/settings.py +++ b/settings.py @@ -39,7 +39,7 @@ try: except Exception as exc: pass -CONST_APP_VERSION = "MaxBot (2024.04.22)" +CONST_APP_VERSION = "MaxBot (2024.04.23)" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_CONFIG_FILE = "settings.json" @@ -104,6 +104,8 @@ def get_default_config(): config_dict["browser"] = "chrome" config_dict["language"] = "English" config_dict["ticket_number"] = 2 + config_dict["refresh_datetime"] = "" + config_dict["ocr_captcha"] = {} config_dict["ocr_captcha"]["enable"] = True config_dict["ocr_captcha"]["beta"] = True diff --git a/settings_old.py b/settings_old.py index 7bc5c43..4c73d07 100644 --- a/settings_old.py +++ b/settings_old.py @@ -34,7 +34,7 @@ try: except Exception as exc: pass -CONST_APP_VERSION = "MaxBot (2024.04.22)" +CONST_APP_VERSION = "MaxBot (2024.04.23)" CONST_MAXBOT_ANSWER_ONLINE_FILE = "MAXBOT_ONLINE_ANSWER.txt" CONST_MAXBOT_CONFIG_FILE = "settings.json" @@ -106,6 +106,7 @@ def load_translate(): en_us["browser"] = 'Browser' en_us["language"] = 'Language' en_us["ticket_number"] = 'Ticker Number' + en_us["refresh_datetime"] = 'Refresh at specified time' en_us["enable"] = 'Enable' en_us["recommand_enable"] = "Recommended to enable" @@ -226,6 +227,7 @@ def load_translate(): zh_tw["browser"] = '瀏覽器' zh_tw["language"] = '語言' zh_tw["ticket_number"] = '門票張數' + zh_tw["refresh_datetime"] = '刷新在指定時間' zh_tw["enable"] = '啟用' zh_tw["recommand_enable"] = "建議啟用" @@ -344,6 +346,7 @@ def load_translate(): zh_cn["browser"] = '浏览器' zh_cn["language"] = '语言' zh_cn["ticket_number"] = '门票张数' + zh_cn["refresh_datetime"] = '刷新在指定时间' zh_cn["enable"] = '启用' zh_cn["recommand_enable"] = "建议启用" @@ -464,6 +467,7 @@ def load_translate(): ja_jp["browser"] = 'ブラウザ' ja_jp["language"] = '言語' ja_jp["ticket_number"] = '枚数' + ja_jp["refresh_datetime"] = '目標時間にリフレッシュ' ja_jp["enable"] = '有効' ja_jp["recommand_enable"] = "有効化を推奨" @@ -591,6 +595,8 @@ def get_default_config(): config_dict["browser"] = "chrome" config_dict["language"] = "English" config_dict["ticket_number"] = 2 + config_dict["refresh_datetime"] = "" + config_dict["ocr_captcha"] = {} config_dict["ocr_captcha"]["enable"] = True config_dict["ocr_captcha"]["beta"] = True @@ -1023,6 +1029,7 @@ def btn_save_act(slience_mode=False): txt_resume_keyword_second.insert("1.0", config_dict["advanced"]["resume_keyword_second"].strip()) if is_all_data_correct: + config_dict["refresh_datetime"] = txt_refresh_datetime.get().strip() config_dict["area_auto_select"]["enable"] = bool(chk_state_area_auto_select.get()) config_dict["area_auto_select"]["mode"] = combo_area_auto_select_mode.get().strip() @@ -1258,6 +1265,7 @@ def applyNewLanguage(): global lbl_browser global lbl_language global lbl_ticket_number + global lbl_refresh_datetime # for kktix global lbl_auto_press_next_step_button @@ -1347,6 +1355,7 @@ def applyNewLanguage(): lbl_browser.config(text=translate[language_code]["browser"]) lbl_language.config(text=translate[language_code]["language"]) lbl_ticket_number.config(text=translate[language_code]["ticket_number"]) + lbl_refresh_datetime.config(text=translate[language_code]["refresh_datetime"]) lbl_auto_press_next_step_button.config(text=translate[language_code]["auto_press_next_step_button"]) lbl_auto_fill_ticket_number.config(text=translate[language_code]["auto_fill_ticket_number"]) @@ -1674,9 +1683,6 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): print("python version:", platform.python_version()) print("platform:", platform.platform()) - global lbl_homepage - global lbl_ticket_number - global lbl_kktix global lbl_tixcraft @@ -1686,6 +1692,7 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): group_row_count = 0 # first row need padding Y + global lbl_homepage lbl_homepage = Label(frame_group_header, text=translate[language_code]['homepage']) lbl_homepage.grid(column=0, row=group_row_count, sticky = E) @@ -1699,6 +1706,7 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): group_row_count+=1 + global lbl_ticket_number lbl_ticket_number = Label(frame_group_header, text=translate[language_code]['ticket_number']) lbl_ticket_number.grid(column=0, row=group_row_count, sticky = E) @@ -1719,6 +1727,17 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X): frame_group_header.grid(column=0, row=row_count, sticky = W, padx=UI_PADDING_X) + group_row_count+=1 + + global lbl_refresh_datetime + lbl_refresh_datetime = Label(frame_group_header, text=translate[language_code]['refresh_datetime']) + lbl_refresh_datetime.grid(column=0, row=group_row_count, sticky = E) + + global txt_refresh_datetime + txt_refresh_datetime_value = StringVar(frame_group_header, value=str(config_dict["refresh_datetime"])) + txt_refresh_datetime = Entry(frame_group_header, width=30, textvariable = txt_refresh_datetime_value) + txt_refresh_datetime.grid(column=1, row=group_row_count, sticky = W) + row_count+=1 # for sub group KKTix. @@ -3130,7 +3149,7 @@ def main_gui(): load_GUI(root, config_dict) - GUI_SIZE_WIDTH = 590 + GUI_SIZE_WIDTH = 610 GUI_SIZE_HEIGHT = 645 GUI_SIZE_MACOS = str(GUI_SIZE_WIDTH) + 'x' + str(GUI_SIZE_HEIGHT) diff --git a/webdriver/Maxblockplus_1.0.0/data/settings.json b/webdriver/Maxblockplus_1.0.0/data/settings.json index 4ca0673..bfac101 100644 --- a/webdriver/Maxblockplus_1.0.0/data/settings.json +++ b/webdriver/Maxblockplus_1.0.0/data/settings.json @@ -1 +1 @@ -{"homepage": "about:blank", "browser": "chrome", "language": "English", "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, "max_dwell_time": 60}, "cityline": {"cityline_queue_retry": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": false, "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, "auto_reload_overheat_count": 4, "auto_reload_overheat_cd": 1, "reset_browser_interval": 0, "proxy_server_port": "", "window_size": "480,1024,0", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}, "domain_filter": ["*.doubleclick.net/*", "*.googlesyndication.com/*", "*.ssp.hinet.net/*", "*a.amnet.tw/*", "*adx.c.appier.net/*", "*cdn.cookielaw.org/*", "*cdnjs.cloudflare.com/ajax/libs/clipboard.js/*", "*clarity.ms/*", "*cloudfront.com/*", "*cms.analytics.yahoo.com/*", "*e2elog.fetnet.net/*", "*fundingchoicesmessages.google.com/*", "*ghtinc.com/*", "*google-analytics.com/*", "*googletagmanager.com/*", "*googletagservices.com/*", "*img.uniicreative.com/*", "*lndata.com/*", "*match.adsrvr.org/*", "*onead.onevision.com.tw/*", "*play.google.com/log?*", "*popin.cc/*", "*rollbar.com/*", "*sb.scorecardresearch.com/*", "*tagtoo.co/*", "*ticketmaster.sg/js/adblock*", "*ticketmaster.sg/js/adblock.js*", "*tixcraft.com/js/analytics.js*", "*tixcraft.com/js/common.js*", "*tixcraft.com/js/custom.js*", "*treasuredata.com/*", "*www.youtube.com/youtubei/v1/player/heartbeat*"]} \ No newline at end of file +{"homepage": "about:blank", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "refresh_datetime": "", "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, "max_dwell_time": 60}, "cityline": {"cityline_queue_retry": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": false, "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, "auto_reload_overheat_count": 4, "auto_reload_overheat_cd": 1.0, "reset_browser_interval": 0, "proxy_server_port": "", "window_size": "480,1024,0", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}, "domain_filter": ["*.doubleclick.net/*", "*.googlesyndication.com/*", "*.ssp.hinet.net/*", "*a.amnet.tw/*", "*adx.c.appier.net/*", "*cdn.cookielaw.org/*", "*cdnjs.cloudflare.com/ajax/libs/clipboard.js/*", "*clarity.ms/*", "*cloudfront.com/*", "*cms.analytics.yahoo.com/*", "*e2elog.fetnet.net/*", "*fundingchoicesmessages.google.com/*", "*ghtinc.com/*", "*google-analytics.com/*", "*googletagmanager.com/*", "*googletagservices.com/*", "*img.uniicreative.com/*", "*lndata.com/*", "*match.adsrvr.org/*", "*onead.onevision.com.tw/*", "*play.google.com/log?*", "*popin.cc/*", "*rollbar.com/*", "*sb.scorecardresearch.com/*", "*tagtoo.co/*", "*ticketmaster.sg/js/adblock*", "*ticketmaster.sg/js/adblock.js*", "*tixcraft.com/js/analytics.js*", "*tixcraft.com/js/common.js*", "*tixcraft.com/js/custom.js*", "*treasuredata.com/*", "*www.youtube.com/youtubei/v1/player/heartbeat*"]} \ No newline at end of file diff --git a/webdriver/Maxbotplus_1.0.0/data/settings.json b/webdriver/Maxbotplus_1.0.0/data/settings.json index d08e58e..b28d7fb 100644 --- a/webdriver/Maxbotplus_1.0.0/data/settings.json +++ b/webdriver/Maxbotplus_1.0.0/data/settings.json @@ -1 +1 @@ -{"homepage": "about:blank", "browser": "chrome", "language": "English", "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, "max_dwell_time": 60}, "cityline": {"cityline_queue_retry": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": false, "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, "auto_reload_overheat_count": 4, "auto_reload_overheat_cd": 1, "reset_browser_interval": 0, "proxy_server_port": "", "window_size": "480,1024,0", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}} \ No newline at end of file +{"homepage": "about:blank", "browser": "chrome", "language": "\u7e41\u9ad4\u4e2d\u6587", "ticket_number": 2, "refresh_datetime": "", "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, "max_dwell_time": 60}, "cityline": {"cityline_queue_retry": true}, "tixcraft": {"pass_date_is_sold_out": true, "auto_reload_coming_soon_page": true}, "advanced": {"play_sound": {"ticket": true, "order": true, "filename": "ding-dong.wav"}, "tixcraft_sid": "", "ibonqware": "", "facebook_account": "", "kktix_account": "", "fami_account": "", "cityline_account": "", "urbtix_account": "", "hkticketing_account": "", "kham_account": "", "ticket_account": "", "udn_account": "", "ticketplus_account": "", "facebook_password": "", "kktix_password": "", "fami_password": "", "urbtix_password": "", "cityline_password": "", "hkticketing_password": "", "kham_password": "", "ticket_password": "", "udn_password": "", "ticketplus_password": "", "facebook_password_plaintext": "", "kktix_password_plaintext": "", "fami_password_plaintext": "", "urbtix_password_plaintext": "", "cityline_password_plaintext": "", "hkticketing_password_plaintext": "", "kham_password_plaintext": "", "ticket_password_plaintext": "", "udn_password_plaintext": "", "ticketplus_password_plaintext": "", "chrome_extension": true, "disable_adjacent_seat": false, "hide_some_image": false, "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, "auto_reload_overheat_count": 4, "auto_reload_overheat_cd": 1.0, "reset_browser_interval": 0, "proxy_server_port": "", "window_size": "480,1024,0", "idle_keyword": "", "resume_keyword": "", "idle_keyword_second": "", "resume_keyword_second": ""}} \ No newline at end of file diff --git a/www/settings.html b/www/settings.html index 5c9fd0c..cf6813a 100644 --- a/www/settings.html +++ b/www/settings.html @@ -176,6 +176,19 @@ + +
+ +
+ + +
+ 提示: + 時間格式 HH:MM:SS (小時:分鐘:秒數)。在設定介面修改並存檔,並不會套用在「已經」開出的瀏覽器,只會套用在存檔之後按「搶票」所開出的瀏覽器。 +
+
+
+
diff --git a/www/settings.js b/www/settings.js index 377d1b6..fcd6796 100644 --- a/www/settings.js +++ b/www/settings.js @@ -10,6 +10,7 @@ const resume_button = document.querySelector('#resume_btn'); // preference const homepage = document.querySelector('#homepage'); const ticket_number = document.querySelector('#ticket_number'); +const refresh_datetime = document.querySelector('#refresh_datetime'); const date_select_mode = document.querySelector('#date_select_mode'); const date_keyword = document.querySelector('#date_keyword'); const area_select_mode = document.querySelector('#area_select_mode'); @@ -95,6 +96,7 @@ function load_settins_to_form(settings) // preference homepage.value = settings.homepage; ticket_number.value = settings.ticket_number; + refresh_datetime.value = settings.refresh_datetime; date_select_mode.value = settings.date_auto_select.mode; date_keyword.value = settings.date_auto_select.date_keyword; if(date_keyword.value=='""') { @@ -328,6 +330,7 @@ function save_changes_to_dict(silent_flag) // preference settings.homepage = homepage.value; settings.ticket_number = ticket_number_value; + settings.refresh_datetime = refresh_datetime.value; settings.date_auto_select.mode = date_select_mode.value; let date_keyword_string = date_keyword.value; @@ -507,7 +510,7 @@ function maxbot_save() function check_unsaved_fields() { if(settings) { - const field_list_basic = ["homepage","ticket_number","browser","webdriver_type"]; + const field_list_basic = ["homepage","ticket_number","refresh_datetime","browser","webdriver_type"]; field_list_basic.forEach(f => { const field = document.querySelector('#'+f); if(field.value != settings[f]) {