2023-05-28, ibon play sound, after input captcha answer.
parent
0a52fdd343
commit
4acc72b0b7
|
@ -54,7 +54,7 @@ import itertools
|
|||
import ssl
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.27)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.28)"
|
||||
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt"
|
||||
|
@ -2647,7 +2647,7 @@ def tixcraft_ticket_main(driver, config_dict, ocr, Captcha_Browser, domain_name)
|
|||
|
||||
# must wait select object ready to assign ticket number.
|
||||
if not is_ticket_number_assigned:
|
||||
# only this case: "ticket number changed by bot" to play sound!
|
||||
# only this case: "ticket number not changed by bot" to play sound!
|
||||
# PS: I assume each time assign ticket number will succufully changed, so let sound play first.
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
|
||||
|
@ -3786,6 +3786,7 @@ def kktix_reg_captcha(driver, config_dict, answer_index, is_finish_checkbox_clic
|
|||
if len(inputed_captcha_text) == 0:
|
||||
try:
|
||||
#print("focus() captcha to input.")
|
||||
# only this case: "ticket number not changed by bot" to play sound!
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
captcha_password_input_tag.click()
|
||||
time.sleep(1)
|
||||
|
@ -6352,13 +6353,10 @@ def hkticketing_login(driver, account, password):
|
|||
|
||||
return ret
|
||||
|
||||
|
||||
def check_and_play_sound_for_captcha(config_dict):
|
||||
play_captcha_sound = config_dict["advanced"]["play_captcha_sound"]["enable"]
|
||||
captcha_sound_filename = config_dict["advanced"]["play_captcha_sound"]["filename"].strip()
|
||||
if play_captcha_sound:
|
||||
if config_dict["advanced"]["play_captcha_sound"]["enable"]:
|
||||
app_root = get_app_root()
|
||||
captcha_sound_filename = os.path.join(app_root, captcha_sound_filename)
|
||||
captcha_sound_filename = os.path.join(app_root, config_dict["advanced"]["play_captcha_sound"]["filename"].strip())
|
||||
play_mp3_async(captcha_sound_filename)
|
||||
|
||||
def play_mp3_async(sound_filename):
|
||||
|
@ -7039,6 +7037,12 @@ def urbtix_main(driver, url, config_dict):
|
|||
if len(urbtix_account) > 2:
|
||||
urbtix_login(driver, urbtix_account, decryptMe(config_dict["advanced"]["urbtix_password"]))
|
||||
|
||||
is_ready_to_buy_from_queue = False
|
||||
# Q: How to know ready to buy ticket from queue?
|
||||
if is_ready_to_buy_from_queue:
|
||||
# play sound when ready to buy ticket.
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
|
||||
# https://www.urbtix.hk/event-detail/00000/
|
||||
if '/event-detail/' in url:
|
||||
if config_dict["tixcraft"]["date_auto_select"]["enable"]:
|
||||
|
@ -7151,6 +7155,12 @@ def cityline_main(driver, url, config_dict):
|
|||
except Exception as excSwithFail:
|
||||
pass
|
||||
|
||||
is_ready_to_buy_from_queue = False
|
||||
# Q: How to know ready to buy ticket from queue?
|
||||
if is_ready_to_buy_from_queue:
|
||||
# play sound when ready to buy ticket.
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
|
||||
if '/eventDetail?' in url:
|
||||
is_modal_dialog_popup = check_modal_dialog_popup(driver)
|
||||
if is_modal_dialog_popup:
|
||||
|
@ -7355,7 +7365,6 @@ def ibon_ticket_agree(driver):
|
|||
def ibon_check_sold_out(driver):
|
||||
is_sold_out = False
|
||||
|
||||
# check agree
|
||||
div_ticket_info = None
|
||||
try:
|
||||
div_ticket_info = driver.find_element(By.CSS_SELECTOR, '#ticket-info')
|
||||
|
@ -7553,7 +7562,8 @@ def ibon_captcha(driver, config_dict, ocr, Captcha_Browser, model_name):
|
|||
is_need_redo_ocr, previous_answer, is_form_sumbited = ibon_auto_ocr(driver, config_dict, ocr, away_from_keyboard_enable, previous_answer, Captcha_Browser, ocr_captcha_image_source, model_name)
|
||||
|
||||
# TODO: must ensure the answer is corrent...
|
||||
is_cpatcha_sent = True
|
||||
if not is_need_redo_ocr:
|
||||
is_cpatcha_sent = True
|
||||
|
||||
if is_form_sumbited:
|
||||
break
|
||||
|
@ -7636,22 +7646,29 @@ def ibon_main(driver, url, config_dict, ibon_dict, ocr, Captcha_Browser):
|
|||
is_finish_checkbox_click = ibon_uncheck_adjacent_seat(driver, config_dict)
|
||||
|
||||
# captcha
|
||||
domain_name = url.split('/')[2]
|
||||
model_name = url.split('/')[5]
|
||||
if len(model_name) > 7:
|
||||
model_name=model_name[:7]
|
||||
captcha_url = '/pic.aspx?TYPE=%s' % (model_name)
|
||||
#PS: need set cookies once, if user change domain.
|
||||
if not Captcha_Browser is None:
|
||||
Captcha_Browser.Set_Domain(domain_name, captcha_url=captcha_url)
|
||||
is_cpatcha_sent = False
|
||||
if config_dict["ocr_captcha"]["enable"]:
|
||||
domain_name = url.split('/')[2]
|
||||
model_name = url.split('/')[5]
|
||||
if len(model_name) > 7:
|
||||
model_name=model_name[:7]
|
||||
captcha_url = '/pic.aspx?TYPE=%s' % (model_name)
|
||||
#PS: need set cookies once, if user change domain.
|
||||
if not Captcha_Browser is None:
|
||||
Captcha_Browser.Set_Domain(domain_name, captcha_url=captcha_url)
|
||||
|
||||
is_cpatcha_sent = ibon_captcha(driver, config_dict, ocr, Captcha_Browser, model_name)
|
||||
is_cpatcha_sent = ibon_captcha(driver, config_dict, ocr, Captcha_Browser, model_name)
|
||||
|
||||
# step 2: assign ticket number.
|
||||
# assign ticket number.
|
||||
is_match_target_feature = True
|
||||
is_ticket_number_assigned = ibon_ticket_number_auto_select(driver, config_dict)
|
||||
if is_ticket_number_assigned:
|
||||
click_ret = ibon_purchase_button_press(driver)
|
||||
|
||||
if click_ret:
|
||||
# only this case: "ticket number CHANGED by bot" and "cpatcha sent" to play sound!
|
||||
if is_cpatcha_sent:
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
else:
|
||||
is_sold_out = ibon_check_sold_out(driver)
|
||||
if is_sold_out:
|
||||
|
@ -8499,6 +8516,12 @@ def hkticketing_main(driver, url, config_dict, hkticketing_dict):
|
|||
if len(account) > 4:
|
||||
hkticketing_login(driver, account, decryptMe(config_dict["advanced"]["hkticketing_password"]))
|
||||
|
||||
is_ready_to_buy_from_queue = False
|
||||
# Q: How to know ready to buy ticket from queue?
|
||||
if is_ready_to_buy_from_queue:
|
||||
# play sound when ready to buy ticket.
|
||||
check_and_play_sound_for_captcha(config_dict)
|
||||
|
||||
#https://premier.hkticketing.com/shows/show.aspx?sh=XXXX
|
||||
if 'shows/show.aspx?' in url:
|
||||
is_modal_dialog_popup = check_modal_dialog_popup(driver)
|
||||
|
@ -9995,11 +10018,12 @@ function svgUrlToPng(svgUrl, callback) {
|
|||
svgImage.src = svgUrl;
|
||||
}
|
||||
const img=document.querySelector('%s');
|
||||
if(img!=null) {
|
||||
const svg=img.innerHTML;
|
||||
svgToPng(svg, (imgData) => {
|
||||
callback = arguments[arguments.length - 1];
|
||||
callback(imgData);
|
||||
});
|
||||
}); }
|
||||
""" % (image_id))
|
||||
if not form_verifyCode_base64 is None:
|
||||
img_base64 = base64.b64decode(form_verifyCode_base64.split(',')[1])
|
||||
|
|
|
@ -22,7 +22,7 @@ import base64
|
|||
import threading
|
||||
import subprocess
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.27)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.28)"
|
||||
|
||||
CONST_MAXBOT_LAUNCHER_FILE = "config_launcher.json"
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
|
|
|
@ -25,7 +25,7 @@ import threading
|
|||
import subprocess
|
||||
import json
|
||||
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.27)"
|
||||
CONST_APP_VERSION = u"MaxBot (2023.05.28)"
|
||||
|
||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||
CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt"
|
||||
|
|
Loading…
Reference in New Issue