2023-01-29, support galaxy macau.
parent
65a6caa98f
commit
d70bfc52ab
|
@ -51,7 +51,7 @@ except Exception as exc:
|
||||||
import ssl
|
import ssl
|
||||||
ssl._create_default_https_context = ssl._create_unverified_context
|
ssl._create_default_https_context = ssl._create_unverified_context
|
||||||
|
|
||||||
CONST_APP_VERSION = u"MaxBot (2023.01.26)"
|
CONST_APP_VERSION = u"MaxBot (2023.01.29)"
|
||||||
|
|
||||||
CONST_HOMEPAGE_DEFAULT = "https://tixcraft.com"
|
CONST_HOMEPAGE_DEFAULT = "https://tixcraft.com"
|
||||||
|
|
||||||
|
@ -5477,7 +5477,6 @@ def hkticketing_date_auto_select(driver, auto_select_mode, date_keyword, auto_re
|
||||||
date_keyword = format_keyword_string(date_keyword)
|
date_keyword = format_keyword_string(date_keyword)
|
||||||
date_keyword_and = ""
|
date_keyword_and = ""
|
||||||
|
|
||||||
|
|
||||||
form_select = None
|
form_select = None
|
||||||
try:
|
try:
|
||||||
form_select = driver.find_element(By.CSS_SELECTOR, '#p')
|
form_select = driver.find_element(By.CSS_SELECTOR, '#p')
|
||||||
|
@ -5515,6 +5514,8 @@ def hkticketing_date_auto_select(driver, auto_select_mode, date_keyword, auto_re
|
||||||
if show_debug_message:
|
if show_debug_message:
|
||||||
print("is_date_assigned:", is_date_assigned)
|
print("is_date_assigned:", is_date_assigned)
|
||||||
|
|
||||||
|
#PS: some blocks are generate by ajax, not appear at first time.
|
||||||
|
formated_area_list = None
|
||||||
if not is_date_assigned:
|
if not is_date_assigned:
|
||||||
area_list = None
|
area_list = None
|
||||||
try:
|
try:
|
||||||
|
@ -5524,8 +5525,6 @@ def hkticketing_date_auto_select(driver, auto_select_mode, date_keyword, auto_re
|
||||||
print("find #p options date list fail")
|
print("find #p options date list fail")
|
||||||
print(exc)
|
print(exc)
|
||||||
|
|
||||||
#PS: some blocks are generate by ajax, not appear at first time.
|
|
||||||
formated_area_list = None
|
|
||||||
if area_list is not None:
|
if area_list is not None:
|
||||||
area_list_count = len(area_list)
|
area_list_count = len(area_list)
|
||||||
if show_debug_message:
|
if show_debug_message:
|
||||||
|
@ -5669,40 +5668,47 @@ def hkticketing_date_auto_select(driver, auto_select_mode, date_keyword, auto_re
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# alway, auto submit
|
# alway, auto submit
|
||||||
if True:
|
el_btn = None
|
||||||
el_btn = None
|
try:
|
||||||
|
my_css_selector = "#buyButton > input"
|
||||||
|
el_btn = driver.find_element(By.CSS_SELECTOR, my_css_selector)
|
||||||
|
except Exception as exc:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if el_btn is not None:
|
||||||
try:
|
try:
|
||||||
my_css_selector = "#buyButton > input"
|
if el_btn.is_enabled() and el_btn.is_displayed():
|
||||||
el_btn = driver.find_element(By.CSS_SELECTOR, my_css_selector)
|
el_btn.click()
|
||||||
|
print("buy button pressed.")
|
||||||
|
ret = True
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
pass
|
# use plan B
|
||||||
|
|
||||||
if el_btn is not None:
|
|
||||||
try:
|
try:
|
||||||
if el_btn.is_enabled() and el_btn.is_displayed():
|
print("force to click by js.")
|
||||||
el_btn.click()
|
driver.execute_script("arguments[0].click();", el_btn)
|
||||||
print("buy button pressed.")
|
ret = True
|
||||||
ret = True
|
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
# use plan B
|
pass
|
||||||
try:
|
else:
|
||||||
print("force to click by js.")
|
|
||||||
driver.execute_script("arguments[0].click();", el_btn)
|
|
||||||
ret = True
|
|
||||||
except Exception as exc:
|
|
||||||
pass
|
|
||||||
|
|
||||||
'''
|
|
||||||
if auto_reload_coming_soon_page_enable:
|
if auto_reload_coming_soon_page_enable:
|
||||||
# auto refresh for date list page.
|
# auto refresh for date list page.
|
||||||
if not formated_area_list is None:
|
is_need_refresh = True
|
||||||
if len(formated_area_list) == 0:
|
|
||||||
try:
|
if is_date_assigned:
|
||||||
driver.refresh()
|
# if select box assign.
|
||||||
time.sleep(0.4)
|
is_need_refresh = False
|
||||||
except Exception as exc:
|
else:
|
||||||
pass
|
if not formated_area_list is None:
|
||||||
'''
|
if len(formated_area_list) > 0:
|
||||||
|
# option waiting to assign at next loop.
|
||||||
|
is_need_refresh = False
|
||||||
|
|
||||||
|
if is_need_refresh:
|
||||||
|
try:
|
||||||
|
driver.refresh()
|
||||||
|
time.sleep(0.3)
|
||||||
|
except Exception as exc:
|
||||||
|
pass
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
@ -5889,6 +5895,18 @@ def hkticketing_ticket_number_auto_select(driver, ticket_number):
|
||||||
by_method = By.CSS_SELECTOR
|
by_method = By.CSS_SELECTOR
|
||||||
return assign_ticket_number_by_select(driver, ticket_number, by_method, selector_string)
|
return assign_ticket_number_by_select(driver, ticket_number, by_method, selector_string)
|
||||||
|
|
||||||
|
def hkticketing_nav_to_footer(driver):
|
||||||
|
try:
|
||||||
|
el_nav = None
|
||||||
|
el_nav = driver.find_element(By.CSS_SELECTOR, '#wrapFooter')
|
||||||
|
if not el_nav is None:
|
||||||
|
builder = ActionChains(driver)
|
||||||
|
builder.move_to_element(el_nav)
|
||||||
|
builder.click(el_nav)
|
||||||
|
builder.perform()
|
||||||
|
except Exception as exc:
|
||||||
|
pass
|
||||||
|
|
||||||
def hkticketing_next_button_press(driver):
|
def hkticketing_next_button_press(driver):
|
||||||
ret = False
|
ret = False
|
||||||
|
|
||||||
|
@ -5901,15 +5919,8 @@ def hkticketing_next_button_press(driver):
|
||||||
|
|
||||||
if el_btn is not None:
|
if el_btn is not None:
|
||||||
print("bingo, found next button, start to press")
|
print("bingo, found next button, start to press")
|
||||||
|
hkticketing_nav_to_footer(driver)
|
||||||
try:
|
try:
|
||||||
el_nav = None
|
|
||||||
el_nav = driver.find_element(By.CSS_SELECTOR, '#wrapFooter')
|
|
||||||
if not el_nav is None:
|
|
||||||
builder = ActionChains(driver)
|
|
||||||
builder.move_to_element(el_nav)
|
|
||||||
builder.click(el_nav)
|
|
||||||
builder.perform()
|
|
||||||
|
|
||||||
if el_btn.is_enabled() and el_btn.is_displayed():
|
if el_btn.is_enabled() and el_btn.is_displayed():
|
||||||
el_btn.click()
|
el_btn.click()
|
||||||
ret = True
|
ret = True
|
||||||
|
@ -5932,14 +5943,6 @@ def hkticketing_go_to_payment(driver):
|
||||||
if el_btn is not None:
|
if el_btn is not None:
|
||||||
print("bingo, found next button, start to press")
|
print("bingo, found next button, start to press")
|
||||||
try:
|
try:
|
||||||
el_nav = None
|
|
||||||
el_nav = driver.find_element(By.CSS_SELECTOR, '#wrapFooter')
|
|
||||||
if not el_nav is None:
|
|
||||||
builder = ActionChains(driver)
|
|
||||||
builder.move_to_element(el_nav)
|
|
||||||
builder.click(el_nav)
|
|
||||||
builder.perform()
|
|
||||||
|
|
||||||
if el_btn.is_enabled() and el_btn.is_displayed():
|
if el_btn.is_enabled() and el_btn.is_displayed():
|
||||||
el_btn.click()
|
el_btn.click()
|
||||||
ret = True
|
ret = True
|
||||||
|
@ -5986,7 +5989,13 @@ def hkticketing_ticket_delivery_option(driver):
|
||||||
print("delivery_option fail")
|
print("delivery_option fail")
|
||||||
print(exc)
|
print(exc)
|
||||||
|
|
||||||
# clean block content.
|
|
||||||
|
return is_delivery_option_assigned
|
||||||
|
|
||||||
|
def hkticketing_hide_tickets_blocks(driver):
|
||||||
|
show_debug_message = True # debug.
|
||||||
|
show_debug_message = False # online
|
||||||
|
|
||||||
actionBlock_divs = None
|
actionBlock_divs = None
|
||||||
try:
|
try:
|
||||||
selector_string = 'div.actionBlock.note'
|
selector_string = 'div.actionBlock.note'
|
||||||
|
@ -5999,9 +6008,26 @@ def hkticketing_ticket_delivery_option(driver):
|
||||||
print(exc)
|
print(exc)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return is_delivery_option_assigned
|
detailModuleCopy_divs = None
|
||||||
|
try:
|
||||||
|
selector_string = 'div.detailModuleCopy'
|
||||||
|
detailModuleCopy_divs = driver.find_elements(By.CSS_SELECTOR, selector_string)
|
||||||
|
if not detailModuleCopy_divs is None:
|
||||||
|
driver.execute_script("arguments[0].innerHTML='';", detailModuleCopy_divs);
|
||||||
|
except Exception as exc:
|
||||||
|
pass
|
||||||
|
|
||||||
def hkticketing_performance(driver, config_dict):
|
mapWrapper_divs = None
|
||||||
|
try:
|
||||||
|
selector_string = 'div.mapWrapper'
|
||||||
|
mapWrapper_divs = driver.find_elements(By.CSS_SELECTOR, selector_string)
|
||||||
|
if not mapWrapper_divs is None:
|
||||||
|
driver.execute_script("arguments[0].innerHTML='';", mapWrapper_divs);
|
||||||
|
except Exception as exc:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def hkticketing_performance(driver, config_dict, domain_name):
|
||||||
show_debug_message = True # debug.
|
show_debug_message = True # debug.
|
||||||
show_debug_message = False # online
|
show_debug_message = False # online
|
||||||
|
|
||||||
|
@ -6052,6 +6078,12 @@ def hkticketing_performance(driver, config_dict):
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# hide blocks.
|
||||||
|
hkticketing_hide_tickets_blocks(driver)
|
||||||
|
|
||||||
|
# goto bottom.
|
||||||
|
hkticketing_nav_to_footer(driver)
|
||||||
|
|
||||||
# choose ticket.
|
# choose ticket.
|
||||||
ticket_number = str(config_dict["ticket_number"])
|
ticket_number = str(config_dict["ticket_number"])
|
||||||
is_ticket_number_assigned = hkticketing_ticket_number_auto_select(driver, ticket_number)
|
is_ticket_number_assigned = hkticketing_ticket_number_auto_select(driver, ticket_number)
|
||||||
|
@ -6060,11 +6092,14 @@ def hkticketing_performance(driver, config_dict):
|
||||||
print("is_ticket_number_assigned:", is_ticket_number_assigned)
|
print("is_ticket_number_assigned:", is_ticket_number_assigned)
|
||||||
|
|
||||||
# Select a delivery option
|
# Select a delivery option
|
||||||
is_delivery_option_assigned = False
|
is_delivery_option_assigned = True
|
||||||
if is_ticket_number_assigned:
|
if not 'galaxymacau.com' in domain_name:
|
||||||
is_delivery_option_assigned = hkticketing_ticket_delivery_option(driver)
|
# hkticketing
|
||||||
if show_debug_message:
|
is_delivery_option_assigned = False
|
||||||
print("is_delivery_option_assigned:", is_delivery_option_assigned)
|
if is_ticket_number_assigned:
|
||||||
|
is_delivery_option_assigned = hkticketing_ticket_delivery_option(driver)
|
||||||
|
if show_debug_message:
|
||||||
|
print("is_delivery_option_assigned:", is_delivery_option_assigned)
|
||||||
|
|
||||||
if is_delivery_option_assigned:
|
if is_delivery_option_assigned:
|
||||||
auto_press_next_step_button = True
|
auto_press_next_step_button = True
|
||||||
|
@ -6079,6 +6114,8 @@ def hkticketing_performance(driver, config_dict):
|
||||||
|
|
||||||
return is_price_assign_by_bot
|
return is_price_assign_by_bot
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def hkticketing_main(driver, url, config_dict):
|
def hkticketing_main(driver, url, config_dict):
|
||||||
home_url_list = ['https://premier.hkticketing.com/'
|
home_url_list = ['https://premier.hkticketing.com/'
|
||||||
,'https://hotshow.hkticketing.com/'
|
,'https://hotshow.hkticketing.com/'
|
||||||
|
@ -6111,10 +6148,14 @@ def hkticketing_main(driver, url, config_dict):
|
||||||
# https://premier.hkticketing.com/events/XXX/venues/KSH/performances/XXX/tickets
|
# https://premier.hkticketing.com/events/XXX/venues/KSH/performances/XXX/tickets
|
||||||
if '/events/' in url and '/performances/' in url:
|
if '/events/' in url and '/performances/' in url:
|
||||||
if '/tickets' in url:
|
if '/tickets' in url:
|
||||||
|
domain_name = url.split('/')[2]
|
||||||
area_auto_select_enable = config_dict["tixcraft"]["area_auto_select"]["enable"]
|
area_auto_select_enable = config_dict["tixcraft"]["area_auto_select"]["enable"]
|
||||||
if area_auto_select_enable:
|
if area_auto_select_enable:
|
||||||
hkticketing_performance(driver, config_dict)
|
hkticketing_performance(driver, config_dict, domain_name)
|
||||||
|
|
||||||
if '/seatmap' in url:
|
if '/seatmap' in url:
|
||||||
|
# goto bottom.
|
||||||
|
hkticketing_nav_to_footer(driver)
|
||||||
hkticketing_go_to_payment(driver)
|
hkticketing_go_to_payment(driver)
|
||||||
|
|
||||||
def khan_go_buy_redirect(driver):
|
def khan_go_buy_redirect(driver):
|
||||||
|
@ -7139,6 +7180,8 @@ def main():
|
||||||
if 'hkticketing.com' in url:
|
if 'hkticketing.com' in url:
|
||||||
hkticketing_main(driver, url, config_dict)
|
hkticketing_main(driver, url, config_dict)
|
||||||
|
|
||||||
|
if 'galaxymacau.com' in url:
|
||||||
|
hkticketing_main(driver, url, config_dict)
|
||||||
|
|
||||||
# for facebook
|
# for facebook
|
||||||
facebook_login_url = 'https://www.facebook.com/login.php?'
|
facebook_login_url = 'https://www.facebook.com/login.php?'
|
||||||
|
|
15
settings.py
15
settings.py
|
@ -19,7 +19,7 @@ import json
|
||||||
import webbrowser
|
import webbrowser
|
||||||
import pyperclip
|
import pyperclip
|
||||||
|
|
||||||
CONST_APP_VERSION = u"MaxBot (2023.01.26)"
|
CONST_APP_VERSION = u"MaxBot (2023.01.29)"
|
||||||
|
|
||||||
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
|
CONST_FROM_TOP_TO_BOTTOM = u"from top to bottom"
|
||||||
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
|
CONST_FROM_BOTTOM_TO_TOP = u"from bottom to top"
|
||||||
|
@ -1087,7 +1087,18 @@ def PreferenctTab(root, config_dict, language_code, UI_PADDING_X):
|
||||||
|
|
||||||
global combo_homepage
|
global combo_homepage
|
||||||
combo_homepage = ttk.Combobox(frame_group_header, state="readonly")
|
combo_homepage = ttk.Combobox(frame_group_header, state="readonly")
|
||||||
combo_homepage['values']= ("https://kktix.com","https://tixcraft.com (拓元)","https://teamear.tixcraft.com/ (添翼)","https://www.indievox.com/ (獨立音樂)","https://www.famiticket.com.tw (全網)","https://ticket.ibon.com.tw/","https://kham.com.tw/ (寬宏)","http://www.urbtix.hk/ (城市)","https://www.cityline.com/ (買飛)","https://premier.hkticketing.com/ (快達票)")
|
combo_homepage['values']= ["https://kktix.com"
|
||||||
|
,"https://tixcraft.com (拓元)"
|
||||||
|
,"https://teamear.tixcraft.com/ (添翼)"
|
||||||
|
,"https://www.indievox.com/ (獨立音樂)"
|
||||||
|
,"https://www.famiticket.com.tw (全網)"
|
||||||
|
,"https://ticket.ibon.com.tw/"
|
||||||
|
,"https://kham.com.tw/ (寬宏)"
|
||||||
|
,"http://www.urbtix.hk/ (城市)"
|
||||||
|
,"https://www.cityline.com/ (買飛)"
|
||||||
|
,"https://premier.hkticketing.com/ (快達票)"
|
||||||
|
,"https://ticketing.galaxymacau.com/ (澳門銀河)"
|
||||||
|
]
|
||||||
combo_homepage.set(homepage)
|
combo_homepage.set(homepage)
|
||||||
combo_homepage.bind("<<ComboboxSelected>>", callbackHomepageOnChange)
|
combo_homepage.bind("<<ComboboxSelected>>", callbackHomepageOnChange)
|
||||||
combo_homepage.grid(column=1, row=group_row_count, sticky = W)
|
combo_homepage.grid(column=1, row=group_row_count, sticky = W)
|
||||||
|
|
Loading…
Reference in New Issue