diff --git a/chrome_tixcraft.py b/chrome_tixcraft.py index d3c8032..d55b18e 100644 --- a/chrome_tixcraft.py +++ b/chrome_tixcraft.py @@ -55,7 +55,7 @@ import webbrowser import chromedriver_autoinstaller -CONST_APP_VERSION = "MaxBot (2023.11.12)" +CONST_APP_VERSION = "MaxBot (2023.11.13)" CONST_MAXBOT_CONFIG_FILE = "settings.json" CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" @@ -65,6 +65,7 @@ CONST_MAXBOT_QUESTION_FILE = "MAXBOT_QUESTION.txt" CONST_HOMEPAGE_DEFAULT = "https://tixcraft.com" URL_CHROME_DRIVER = 'https://chromedriver.chromium.org/' +URL_GOOGLE_OAUTH = 'https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount?redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&prompt=consent&response_type=code&client_id=407408718192.apps.googleusercontent.com&scope=email&access_type=offline&flowName=GeneralOAuthFlow' CONST_CHROME_VERSION_NOT_MATCH_EN="Please download the WebDriver version to match your browser version." CONST_CHROME_VERSION_NOT_MATCH_TW="請下載與您瀏覽器相同版本的WebDriver版本,或更新您的瀏覽器版本。" @@ -806,6 +807,9 @@ def get_driver_by_config(config_dict): driver.execute_cdp_cmd('Network.setBlockedURLs', {"urls": NETWORK_BLOCKED_URLS}) driver.execute_cdp_cmd('Network.enable', {}) + if config_dict["advanced"]["open_google_oauth_url"]: + driver.execute_script("window.open('%s','_blank');" % (URL_GOOGLE_OAUTH)); + if 'kktix.c' in homepage: if len(config_dict["advanced"]["kktix_account"])>0: if not 'https://kktix.com/users/sign_in?' in homepage: @@ -3648,6 +3652,7 @@ def kktix_assign_ticket_number(driver, config_dict, kktix_area_keyword): ticket_number_str = str(config_dict["ticket_number"]) auto_select_mode = config_dict["area_auto_select"]["mode"] + is_ticket_number_assigned = False matched_blocks = None is_ticket_number_assigned, matched_blocks = kktix_travel_price_list(driver, config_dict, auto_select_mode, kktix_area_keyword) @@ -3662,39 +3667,37 @@ def kktix_assign_ticket_number(driver, config_dict, kktix_area_keyword): if show_debug_message: print("matched_blocks is empty, is_need_refresh") - current_ticket_number = "" - is_visible = False if not target_area is None: + current_ticket_number = "" if show_debug_message: print("try to get input box value.") try: current_ticket_number = str(target_area.get_attribute('value')).strip() - is_visible = target_area.is_enabled() except Exception as exc: pass - if is_visible and len(current_ticket_number) > 0: - if current_ticket_number == "0": - try: - print("asssign ticket number:%s" % ticket_number_str) - target_area.clear() - target_area.send_keys(ticket_number_str) - - is_ticket_number_assigned = True - except Exception as exc: - print("asssign ticket number to ticket-price field Exception:") - print(exc) + if len(current_ticket_number) > 0: + if current_ticket_number == "0": try: + print("asssign ticket number:%s" % ticket_number_str) target_area.clear() - target_area.send_keys("1") + target_area.send_keys(ticket_number_str) is_ticket_number_assigned = True - except Exception as exc2: - pass - else: - if show_debug_message: - print("value already assigned.") - # already assigned. - is_ticket_number_assigned = True + except Exception as exc: + print("asssign ticket number to ticket-price field Exception:") + print(exc) + try: + target_area.clear() + target_area.send_keys("1") + is_ticket_number_assigned = True + except Exception as exc2: + print("asssign ticket number to ticket-price still failed.") + pass + else: + if show_debug_message: + print("value already assigned.") + # already assigned. + is_ticket_number_assigned = True return is_ticket_number_assigned, is_need_refresh @@ -5424,7 +5427,7 @@ def urbtix_area_auto_select(driver, config_dict, area_keyword_item): area_list = None try: #print("try to find cityline area block") - my_css_selector = "div.area-info" + my_css_selector = "div.area-list > div.area-wrapper" area_list = driver.find_elements(By.CSS_SELECTOR, my_css_selector) except Exception as exc: print("find #ticket-price-tbl date list fail") @@ -5458,11 +5461,13 @@ def urbtix_area_auto_select(driver, config_dict, area_keyword_item): row_text = "" if len(row_text) > 0: - if 'disabled' in row_html: + if ' disabled' in row_html: row_text = "" - + if ' 售罄' in row_html: + row_text = "" + if len(row_text) > 0: - if 'selected' in row_html: + if '