update to 2023-11-09
							parent
							
								
									d5e6fd8fb8
								
							
						
					
					
						commit
						d6729a546b
					
				|  | @ -55,7 +55,7 @@ import webbrowser | |||
| 
 | ||||
| import chromedriver_autoinstaller | ||||
| 
 | ||||
| CONST_APP_VERSION = "MaxBot (2023.11.08)" | ||||
| CONST_APP_VERSION = "MaxBot (2023.11.09)" | ||||
| 
 | ||||
| CONST_MAXBOT_CONFIG_FILE = "settings.json" | ||||
| CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt" | ||||
|  | @ -1583,21 +1583,30 @@ def force_press_button_iframe(driver, f, select_by, select_query, force_submit=T | |||
| 
 | ||||
|     return is_clicked | ||||
| 
 | ||||
| def remove_attribute_tag_by_selector(driver, select_query, class_name, more_script = ""): | ||||
|     element_script = "eachItem.removeAttribute('"+ class_name +"');" | ||||
|     javascript_tag_by_selector(driver, select_query, element_script, more_script = more_script) | ||||
| 
 | ||||
| def remove_class_tag_by_selector(driver, select_query, class_name, more_script = ""): | ||||
|     element_script = "eachItem.classList.remove('"+ class_name +"');" | ||||
|     javascript_tag_by_selector(driver, select_query, element_script, more_script = more_script) | ||||
| 
 | ||||
| def hide_tag_by_selector(driver, select_query, more_script = ""): | ||||
|     callback = "eachItem.style='display:none;';" | ||||
|     javascript_tag_by_selector(driver, select_query, callback, more_script = more_script) | ||||
|     element_script = "eachItem.style='display:none;';" | ||||
|     javascript_tag_by_selector(driver, select_query, element_script, more_script = more_script) | ||||
| 
 | ||||
| def clean_tag_by_selector(driver, select_query, more_script = ""): | ||||
|     callback = "eachItem.outerHTML='';" | ||||
|     javascript_tag_by_selector(driver, select_query, callback, more_script = more_script) | ||||
|     element_script = "eachItem.outerHTML='';" | ||||
|     javascript_tag_by_selector(driver, select_query, element_script, more_script = more_script) | ||||
| 
 | ||||
| def javascript_tag_by_selector(driver, select_query, callback, more_script = ""): | ||||
| # PS: selector query string must without single quota. | ||||
| def javascript_tag_by_selector(driver, select_query, element_script, more_script = ""): | ||||
|     try: | ||||
|         driver.set_script_timeout(1) | ||||
|         js = """var selectSoldoutItems = document.querySelectorAll('%s'); | ||||
| selectSoldoutItems.forEach((eachItem) => | ||||
| {%s}); | ||||
| %s""" % (select_query, callback, more_script) | ||||
| %s""" % (select_query, element_script, more_script) | ||||
| 
 | ||||
|         #print("javascript:", js) | ||||
|         driver.execute_script(js) | ||||
|  | @ -1794,25 +1803,23 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
|                 try: | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                     # check buy button. | ||||
|                     if row_is_enabled: | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                         row_is_enabled=False | ||||
|                 if len(row_text) > 0: | ||||
|                             row_is_enabled=True | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                     row_is_enabled=False | ||||
|                     for text_item in find_ticket_text_list: | ||||
|                         if text_item in row_text: | ||||
|  | @ -1846,11 +1853,6 @@ def tixcraft_date_auto_select(driver, url, config_dict, domain_name): | |||
|                             is_coming_soon = True | ||||
|                             break | ||||
| 
 | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     pass | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                         formated_area_list.append(row) | ||||
| 
 | ||||
|  | @ -1956,19 +1958,19 @@ def ticketmaster_date_auto_select(driver, url, config_dict, domain_name): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
|                 try: | ||||
|                     if not row.is_enabled(): | ||||
|                         row_is_enabled=False | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                     # check buy button. | ||||
|                     if row_is_enabled: | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     row_is_enabled=False | ||||
|                     # must contains 'See Tickets' | ||||
|                     for text_item in find_ticket_text_list: | ||||
|  | @ -1986,11 +1988,6 @@ def ticketmaster_date_auto_select(driver, url, config_dict, domain_name): | |||
|                                         print("match sold out text: %s, skip this row." % (sold_out_item)) | ||||
|                                     break | ||||
| 
 | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     pass | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                         formated_area_list.append(row) | ||||
| 
 | ||||
|  | @ -2064,7 +2061,10 @@ def get_matched_blocks_by_keyword_item_set(config_dict, auto_select_mode, keywor | |||
|             row_html = row.get_attribute('innerHTML') | ||||
|             row_text = remove_html_tags(row_html) | ||||
|         except Exception as exc: | ||||
|             pass | ||||
|             if show_debug_message: | ||||
|                 print(exc) | ||||
|             # error, exit loop | ||||
|             break | ||||
| 
 | ||||
|         if len(row_text) > 0: | ||||
|             if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|  | @ -2186,20 +2186,16 @@ def get_tixcraft_target_area(el, config_dict, area_keyword_item): | |||
|     if area_list_count > 0: | ||||
|         matched_blocks = [] | ||||
|         for row in area_list: | ||||
|             row_is_enabled=False | ||||
|             try: | ||||
|                 row_is_enabled = row.is_enabled() | ||||
|             except Exception as exc: | ||||
|                 pass | ||||
| 
 | ||||
|             row_text = "" | ||||
|             row_html = "" | ||||
|             if row_is_enabled: | ||||
|             try: | ||||
|                 #row_text = row.text | ||||
|                 row_html = row.get_attribute('innerHTML') | ||||
|                 row_text = remove_html_tags(row_html) | ||||
|             except Exception as exc: | ||||
|                 if show_debug_message: | ||||
|                     print(exc) | ||||
|                 # error, exit loop | ||||
|                 break | ||||
| 
 | ||||
|             if len(row_text) > 0: | ||||
|  | @ -3103,20 +3099,16 @@ def get_tixcraft_ticket_select_by_keyword(driver, config_dict, area_keyword_item | |||
|     if area_list_count > 0: | ||||
|         matched_blocks = [] | ||||
|         for row in area_list: | ||||
|             row_is_enabled=False | ||||
|             try: | ||||
|                 row_is_enabled = row.is_enabled() | ||||
|             except Exception as exc: | ||||
|                 pass | ||||
| 
 | ||||
|             row_text = "" | ||||
|             row_html = "" | ||||
|             if row_is_enabled: | ||||
|             try: | ||||
|                 #row_text = row.text | ||||
|                 row_html = row.get_attribute('innerHTML') | ||||
|                 row_text = remove_html_tags(row_html) | ||||
|             except Exception as exc: | ||||
|                 if show_debug_message: | ||||
|                     print(exc) | ||||
|                 # error, exit loop | ||||
|                 break | ||||
| 
 | ||||
|             if len(row_text) > 0: | ||||
|  | @ -3448,7 +3440,7 @@ def kktix_travel_price_list(driver, config_dict, kktix_area_auto_select_mode, kk | |||
| 
 | ||||
|     ticket_price_list = None | ||||
|     try: | ||||
|         ticket_price_list = driver.find_elements(By.CSS_SELECTOR, '.display-table-row') | ||||
|         ticket_price_list = driver.find_elements(By.CSS_SELECTOR, 'div.display-table-row') | ||||
|     except Exception as exc: | ||||
|         ticket_price_list = None | ||||
|         print("find ticket-price span Exception:") | ||||
|  | @ -3485,7 +3477,6 @@ def kktix_travel_price_list(driver, config_dict, kktix_area_auto_select_mode, kk | |||
|         row_index = 0 | ||||
|         for row in ticket_price_list: | ||||
|             row_index += 1 | ||||
| 
 | ||||
|             row_text = "" | ||||
|             row_html = "" | ||||
|             try: | ||||
|  | @ -3494,7 +3485,17 @@ def kktix_travel_price_list(driver, config_dict, kktix_area_auto_select_mode, kk | |||
|                 row_text = remove_html_tags(row_html) | ||||
|             except Exception as exc: | ||||
|                 is_travel_interrupted = True | ||||
|                 print("get text fail.") | ||||
|                 if show_debug_message: | ||||
|                     print(exc) | ||||
|                 # error, exit loop | ||||
|                 break | ||||
| 
 | ||||
|             if len(row_text) > 0: | ||||
|                 if '未開賣' in row_text: | ||||
|                     row_text = "" | ||||
| 
 | ||||
|                 if '暫無票' in row_text: | ||||
|                     row_text = "" | ||||
| 
 | ||||
|                 if '已售完' in row_text: | ||||
|                     row_text = "" | ||||
|  | @ -3654,12 +3655,17 @@ def kktix_assign_ticket_number(driver, config_dict, kktix_area_keyword): | |||
|     matched_blocks = None | ||||
|     is_ticket_number_assigned, matched_blocks = kktix_travel_price_list(driver, config_dict, auto_select_mode, kktix_area_keyword) | ||||
| 
 | ||||
|     is_need_refresh = False | ||||
| 
 | ||||
|     target_area = None | ||||
|     if not is_ticket_number_assigned: | ||||
|         target_area = get_target_item_from_matched_list(matched_blocks, auto_select_mode) | ||||
| 
 | ||||
|     is_need_refresh = False | ||||
|     if not matched_blocks is None: | ||||
|         if len(matched_blocks) == 0: | ||||
|             is_need_refresh = True | ||||
|             if show_debug_message: | ||||
|                 print("matched_blocks is empty, is_need_refresh") | ||||
| 
 | ||||
|     current_ticket_number = "" | ||||
|     is_visible = False | ||||
|     if not target_area is None: | ||||
|  | @ -4609,11 +4615,8 @@ def get_fami_target_area(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     #print("row index:", row_index) | ||||
| 
 | ||||
|                     date_html_text = "" | ||||
|                     area_html_text = "" | ||||
| 
 | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -4633,7 +4636,9 @@ def get_fami_target_area(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                         print("get row text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -4805,8 +4810,6 @@ def fami_date_auto_select(driver, config_dict, last_activity_url): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=False | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 try: | ||||
|  | @ -4814,15 +4817,19 @@ def fami_date_auto_select(driver, config_dict, last_activity_url): | |||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                     print("get text fail") | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if "<button" in row_html: | ||||
|                         if "立即購買" in row_html: | ||||
|                             row_is_enabled=True | ||||
|                         if not("立即購買" in row_html): | ||||
|                             row_text = "" | ||||
|                     else: | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 if len(row_text) > 0: | ||||
|                     formated_area_list.append(row) | ||||
| 
 | ||||
|     if not formated_area_list is None: | ||||
|  | @ -4933,17 +4940,17 @@ def fami_area_auto_select(driver, config_dict, area_keyword_item): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 if row_is_enabled: | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                         pass | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if '售完' in row_text: | ||||
|                     row_text = "" | ||||
|  | @ -4955,10 +4962,7 @@ def fami_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                     if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                 if row_text == "": | ||||
|                     row_is_enabled=False | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 if len(row_text) > 0: | ||||
|                     formated_area_list.append(row) | ||||
|         else: | ||||
|             if show_debug_message: | ||||
|  | @ -4985,8 +4989,6 @@ def fami_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -4994,7 +4996,9 @@ def fami_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -5323,9 +5327,6 @@ def urbtix_date_auto_select(driver, auto_select_mode, date_keyword, auto_reload_ | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     #row_is_enabled=False | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -5333,7 +5334,9 @@ def urbtix_date_auto_select(driver, auto_select_mode, date_keyword, auto_reload_ | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -5455,45 +5458,35 @@ def urbtix_area_auto_select(driver, config_dict, area_keyword_item): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 if row_is_enabled: | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                         pass | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                         row_text = "" | ||||
|                  | ||||
|                 if row_text == "": | ||||
|                     row_is_enabled=False | ||||
|                 if len(row_text) > 0: | ||||
|                     if 'disabled' in row_html: | ||||
|                         row_text = "" | ||||
|                  | ||||
|                 button_class_string = None | ||||
|                 if row_is_enabled: | ||||
|                     try: | ||||
|                         button_class_string = str(row.get_attribute('class')) | ||||
|                     except Exception as exc: | ||||
|                         pass | ||||
| 
 | ||||
|                 if button_class_string is None: | ||||
|                     button_class_string = "" | ||||
| 
 | ||||
|                 if len(button_class_string) > 1: | ||||
|                     if 'disabled' in button_class_string: | ||||
|                         row_is_enabled=False | ||||
|                     if 'selected' in button_class_string: | ||||
|                 if len(row_text) > 0: | ||||
|                     if 'selected' in row_html: | ||||
|                         # someone is selected. skip this process. | ||||
|                         row_is_enabled=False | ||||
|                         is_price_assign_by_bot = True | ||||
|                          | ||||
|                         row_text = "" | ||||
|                         break | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 if len(row_text) > 0: | ||||
|                     formated_area_list.append(row) | ||||
|         else: | ||||
|             if show_debug_message: | ||||
|  | @ -5521,9 +5514,6 @@ def urbtix_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
| 
 | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -5531,7 +5521,9 @@ def urbtix_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -5871,9 +5863,6 @@ def cityline_date_auto_select(driver, auto_select_mode, date_keyword, auto_reloa | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     #row_is_enabled=False | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -5881,7 +5870,9 @@ def cityline_date_auto_select(driver, auto_select_mode, date_keyword, auto_reloa | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -6011,9 +6002,7 @@ def cityline_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     #row_is_enabled=False | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|      | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -6021,7 +6010,9 @@ def cityline_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -6475,18 +6466,20 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 if row_is_enabled: | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                         pass | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if '已售完' in row_text: | ||||
|                         row_text = "" | ||||
| 
 | ||||
|  | @ -6540,10 +6533,7 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                                 print(exc) | ||||
|                             pass | ||||
| 
 | ||||
|                 if row_text == "": | ||||
|                     row_is_enabled=False | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 if len(row_text) > 0: | ||||
|                     formated_area_list.append(row) | ||||
|         else: | ||||
|             if show_debug_message: | ||||
|  | @ -6570,8 +6560,7 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
| 
 | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -6579,7 +6568,9 @@ def ibon_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -7489,6 +7480,29 @@ def tixcraft_main(driver, url, config_dict, tixcraft_dict, ocr, Captcha_Browser) | |||
| 
 | ||||
|     return tixcraft_dict | ||||
| 
 | ||||
| def kktix_paused_main(driver, url, config_dict, kktix_dict): | ||||
|     if '/registrations/new' in url: | ||||
|          | ||||
|         # part 1: check recaptch  div. | ||||
|         recaptcha_div = None | ||||
|         try: | ||||
|             recaptcha_div = driver.find_element(By.CSS_SELECTOR, '.event-captcha-info') | ||||
|         except Exception as exc: | ||||
|             pass | ||||
|          | ||||
|         if not recaptcha_div is None: | ||||
|             select_query = '.ng-hide' | ||||
|             class_name = 'ng-hide' | ||||
|             remove_class_tag_by_selector(driver, select_query, class_name) | ||||
|             select_query = '.btn-disabled-alt' | ||||
|             class_name = 'btn-disabled-alt' | ||||
|             remove_class_tag_by_selector(driver, select_query, class_name) | ||||
|             select_query = 'button[disabled="disabled"]' | ||||
|             class_name = 'disabled' | ||||
|             remove_attribute_tag_by_selector(driver, select_query, class_name) | ||||
| 
 | ||||
|     return kktix_dict | ||||
| 
 | ||||
| def kktix_main(driver, url, config_dict, kktix_dict): | ||||
|     kktix_account = config_dict["advanced"]["kktix_account"] | ||||
| 
 | ||||
|  | @ -7501,6 +7515,8 @@ def kktix_main(driver, url, config_dict, kktix_dict): | |||
| 
 | ||||
|     if not is_url_contain_sign_in: | ||||
|         if '/registrations/new' in url: | ||||
|             is_need_refresh = False | ||||
|             is_finish_checkbox_click = False | ||||
|             is_need_refresh, is_finish_checkbox_click = kktix_reg_auto_reload(driver, url, config_dict, kktix_dict["kktix_register_status_last"]) | ||||
| 
 | ||||
|             if is_need_refresh: | ||||
|  | @ -8772,40 +8788,35 @@ def hkticketing_date_assign(driver, config_dict): | |||
|                 row_index = 0 | ||||
|                 for row in area_list: | ||||
|                     row_index += 1 | ||||
|                     row_is_enabled=False | ||||
|                     option_value_string = None | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|                         if row.is_enabled(): | ||||
|                             ''' | ||||
|                             option_value_string = str(row.get_attribute('value')) | ||||
|                             if len(option_value_string) > 6: | ||||
|                                 row_is_enabled=True | ||||
|                             ''' | ||||
|                             # alway disable. | ||||
|                             row_text = remove_html_tags(row.get_attribute('innerHTML')) | ||||
|                             option_text_string = row_text | ||||
|                             print("option_text_string:", option_text_string) | ||||
|                             if '20' in option_text_string: | ||||
|                                 row_is_enabled=True | ||||
|                             if ' Exhausted' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
|                             if '配售完畢' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
|                             if '配售完毕' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
|                             if 'No Longer On Sale' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
|                             if '已停止發售' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
|                             if '已停止发售' in option_text_string: | ||||
|                                 row_is_enabled=False | ||||
| 
 | ||||
|                         #row_text = row.text | ||||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         pass | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                     if len(row_text) > 0: | ||||
|                         if '20' in row_text: | ||||
|                             row_text = "" | ||||
|                         if ' Exhausted' in row_text: | ||||
|                             row_text = "" | ||||
|                         if '配售完畢' in row_text: | ||||
|                             row_text = "" | ||||
|                         if '配售完毕' in row_text: | ||||
|                             row_text = "" | ||||
|                         if 'No Longer On Sale' in row_text: | ||||
|                             row_text = "" | ||||
|                         if '已停止發售' in row_text: | ||||
|                             row_text = "" | ||||
|                         if '已停止发售' in row_text: | ||||
|                             row_text = "" | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|                         formated_area_list.append(row) | ||||
| 
 | ||||
|         if not formated_area_list is None: | ||||
|  | @ -9064,8 +9075,6 @@ def hkticketing_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -9073,7 +9082,9 @@ def hkticketing_area_auto_select(driver, config_dict, area_keyword_item): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                             print("get text fail") | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -9663,9 +9674,6 @@ def hkam_date_auto_select(driver, domain_name, config_dict): | |||
|                 row_index = 0 | ||||
|                 for row in area_list: | ||||
|                     row_index += 1 | ||||
| 
 | ||||
|                     row_is_enabled=False | ||||
| 
 | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -9673,17 +9681,21 @@ def hkam_date_auto_select(driver, domain_name, config_dict): | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                         pass | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|                         if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                             row_text = "" | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|                         if '立即訂購' in row_text or '點此購票' in row_text: | ||||
|                             if "<button" in row_html: | ||||
|                             row_is_enabled=True | ||||
|                                 row_text = "" | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                     if len(row_text) > 0: | ||||
|                         formated_area_list.append(row) | ||||
|             else: | ||||
|                 if show_debug_message: | ||||
|  | @ -9845,8 +9857,6 @@ def kham_area_auto_select(driver, domain_name, config_dict, area_keyword_item): | |||
|             row_index = 0 | ||||
|             for row in formated_area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
|                 if row_is_enabled: | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 try: | ||||
|  | @ -9854,12 +9864,14 @@ def kham_area_auto_select(driver, domain_name, config_dict, area_keyword_item): | |||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if '售完' in row_text: | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|                     if ' Soldout' in row_html: | ||||
|                         row_text = "" | ||||
| 
 | ||||
|  | @ -10701,32 +10713,23 @@ def ticketplus_date_auto_select(driver, config_dict): | |||
|             row_index = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
|                 try: | ||||
|                     # skip to check enable, due to modal dialog popup. | ||||
|                     ''' | ||||
|                     if not row.is_enabled(): | ||||
|                         row_is_enabled=False | ||||
|                     ''' | ||||
| 
 | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                     # check buy button. | ||||
|                     if row_is_enabled: | ||||
|                         # .text is failed. @_@! | ||||
|                 try: | ||||
|                     #row_text = row.text | ||||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 if len(row_text) > 0: | ||||
|                     if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                         row_is_enabled=False | ||||
|                 if len(row_text) > 0: | ||||
|                             row_is_enabled=True | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                     row_is_enabled=False | ||||
|                     for text_item in find_ticket_text_list: | ||||
|                         if text_item in row_text: | ||||
|  | @ -10743,11 +10746,6 @@ def ticketplus_date_auto_select(driver, config_dict): | |||
|                                         print("match sold out text: %s, skip this row." % (sold_out_item)) | ||||
|                                     break | ||||
| 
 | ||||
|                 except Exception as exc: | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     pass | ||||
| 
 | ||||
|                     if row_is_enabled: | ||||
|                         formated_area_list.append(row) | ||||
| 
 | ||||
|  | @ -10917,9 +10915,6 @@ def ticketplus_order_expansion_auto_select(driver, config_dict, area_keyword_ite | |||
|             soldout_count = 0 | ||||
|             for row in area_list: | ||||
|                 row_index += 1 | ||||
|                 row_is_enabled=True | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 row_text = "" | ||||
|                 row_html = "" | ||||
|                 try: | ||||
|  | @ -10927,7 +10922,10 @@ def ticketplus_order_expansion_auto_select(driver, config_dict, area_keyword_ite | |||
|                     row_html = row.get_attribute('innerHTML') | ||||
|                     row_text = remove_html_tags(row_html) | ||||
|                 except Exception as exc: | ||||
|                         pass | ||||
|                     if show_debug_message: | ||||
|                         print(exc) | ||||
|                     # error, exit loop | ||||
|                     break | ||||
| 
 | ||||
|                 # for style_2 | ||||
|                 if len(row_text) > 0: | ||||
|  | @ -10960,10 +10958,7 @@ def ticketplus_order_expansion_auto_select(driver, config_dict, area_keyword_ite | |||
|                     if reset_row_text_if_match_keyword_exclude(config_dict, row_text): | ||||
|                         row_text = "" | ||||
| 
 | ||||
|                     if row_text == "": | ||||
|                         row_is_enabled=False | ||||
| 
 | ||||
|                 if row_is_enabled: | ||||
|                 if len(row_text) > 0: | ||||
|                     formated_area_list.append(row) | ||||
| 
 | ||||
|             if soldout_count > 0: | ||||
|  | @ -10995,8 +10990,6 @@ def ticketplus_order_expansion_auto_select(driver, config_dict, area_keyword_ite | |||
|                 row_index = 0 | ||||
|                 for row in formated_area_list: | ||||
|                     row_index += 1 | ||||
|                     row_is_enabled=True | ||||
|                     if row_is_enabled: | ||||
|                     row_text = "" | ||||
|                     row_html = "" | ||||
|                     try: | ||||
|  | @ -11004,6 +10997,9 @@ def ticketplus_order_expansion_auto_select(driver, config_dict, area_keyword_ite | |||
|                         row_html = row.get_attribute('innerHTML') | ||||
|                         row_text = remove_html_tags(row_html) | ||||
|                     except Exception as exc: | ||||
|                         if show_debug_message: | ||||
|                             print(exc) | ||||
|                         # error, exit loop | ||||
|                         break | ||||
| 
 | ||||
|                     if len(row_text) > 0: | ||||
|  | @ -11893,7 +11889,10 @@ def main(args): | |||
|             last_url = url | ||||
| 
 | ||||
|         if is_maxbot_paused: | ||||
|             time.sleep(0.2) | ||||
|             if 'kktix.c' in url: | ||||
|                 kktix_dict = kktix_paused_main(driver, url, config_dict, kktix_dict) | ||||
| 
 | ||||
|             time.sleep(0.1) | ||||
|             continue | ||||
| 
 | ||||
|         tixcraft_family = False | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue