upate for kktix half char.
parent
6861ad506c
commit
7416303e1c
|
@ -53,7 +53,7 @@ import webbrowser
|
||||||
|
|
||||||
import chromedriver_autoinstaller
|
import chromedriver_autoinstaller
|
||||||
|
|
||||||
CONST_APP_VERSION = "MaxBot (2023.12.09)"
|
CONST_APP_VERSION = "MaxBot (2023.12.10)"
|
||||||
|
|
||||||
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
CONST_MAXBOT_CONFIG_FILE = "settings.json"
|
||||||
CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt"
|
CONST_MAXBOT_LAST_URL_FILE = "MAXBOT_LAST_URL.txt"
|
||||||
|
@ -293,27 +293,35 @@ def get_chinese_numeric():
|
||||||
return my_dict
|
return my_dict
|
||||||
|
|
||||||
# 同義字
|
# 同義字
|
||||||
def synonyms(keyword):
|
def synonym_dict(char):
|
||||||
ret = []
|
ret = []
|
||||||
my_dict = get_chinese_numeric()
|
my_dict = get_chinese_numeric()
|
||||||
if keyword in my_dict:
|
if char in my_dict:
|
||||||
ret = my_dict[keyword]
|
ret = my_dict[char]
|
||||||
else:
|
else:
|
||||||
ret.append(keyword)
|
ret.append(char)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def normalize_chinese_numeric(keyword):
|
def chinese_numeric_to_int(char):
|
||||||
ret = None
|
ret = None
|
||||||
my_dict = get_chinese_numeric()
|
my_dict = get_chinese_numeric()
|
||||||
for i in my_dict:
|
for i in my_dict:
|
||||||
for item in my_dict[i]:
|
for item in my_dict[i]:
|
||||||
if keyword.lower() == item:
|
if char.lower() == item:
|
||||||
ret = int(i)
|
ret = int(i)
|
||||||
break
|
break
|
||||||
if not ret is None:
|
if not ret is None:
|
||||||
break
|
break
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
def normalize_chinese_numeric(keyword):
|
||||||
|
ret = ""
|
||||||
|
for char in keyword:
|
||||||
|
converted_int = chinese_numeric_to_int(char)
|
||||||
|
if not converted_int is None:
|
||||||
|
ret += str(converted_int)
|
||||||
|
return ret
|
||||||
|
|
||||||
def find_continuous_number(text):
|
def find_continuous_number(text):
|
||||||
chars = "0123456789"
|
chars = "0123456789"
|
||||||
return find_continuous_pattern(chars, text)
|
return find_continuous_pattern(chars, text)
|
||||||
|
@ -1328,7 +1336,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -1342,7 +1350,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -1356,7 +1364,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -1370,7 +1378,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -1384,7 +1392,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -1398,7 +1406,7 @@ def guess_answer_list_from_hint(CONST_EXAMPLE_SYMBOL, CONST_INPUT_SYMBOL, captch
|
||||||
space_index = tmp_text.find(" ", star_index)
|
space_index = tmp_text.find(" ", star_index)
|
||||||
answer_char_count = tmp_text[star_index-1:star_index]
|
answer_char_count = tmp_text[star_index-1:star_index]
|
||||||
if answer_char_count.isnumeric():
|
if answer_char_count.isnumeric():
|
||||||
answer_char_count = normalize_chinese_numeric(answer_char_count)
|
answer_char_count = chinese_numeric_to_int(answer_char_count)
|
||||||
if answer_char_count is None:
|
if answer_char_count is None:
|
||||||
answer_char_count = '0'
|
answer_char_count = '0'
|
||||||
|
|
||||||
|
@ -4336,6 +4344,11 @@ def get_answer_list_from_question_string(registrationsNewApp_div, captcha_text_d
|
||||||
temp_answer = temp_answer.strip()
|
temp_answer = temp_answer.strip()
|
||||||
if len(temp_answer) > 0:
|
if len(temp_answer) > 0:
|
||||||
temp_answer = temp_answer.replace(' ','')
|
temp_answer = temp_answer.replace(' ','')
|
||||||
|
|
||||||
|
# check raw question.
|
||||||
|
if '數字' in captcha_text_div_text:
|
||||||
|
temp_answer = normalize_chinese_numeric(temp_answer)
|
||||||
|
|
||||||
inferred_answer_string = temp_answer
|
inferred_answer_string = temp_answer
|
||||||
|
|
||||||
if inferred_answer_string is None:
|
if inferred_answer_string is None:
|
||||||
|
@ -7796,7 +7809,7 @@ def get_urbtix_survey_answer_by_question(question_text):
|
||||||
if seq_string.isdigit():
|
if seq_string.isdigit():
|
||||||
seq = int(seq_string)
|
seq = int(seq_string)
|
||||||
else:
|
else:
|
||||||
tmp_seq = normalize_chinese_numeric(seq_string)
|
tmp_seq = chinese_numeric_to_int(seq_string)
|
||||||
if not tmp_seq is None:
|
if not tmp_seq is None:
|
||||||
seq = tmp_seq
|
seq = tmp_seq
|
||||||
|
|
||||||
|
@ -7870,7 +7883,7 @@ def get_urbtix_survey_answer_by_question(question_text):
|
||||||
if count_target_string.isdigit():
|
if count_target_string.isdigit():
|
||||||
count_target = int(count_target_string)
|
count_target = int(count_target_string)
|
||||||
else:
|
else:
|
||||||
count_target = normalize_chinese_numeric(count_target_string)
|
count_target = chinese_numeric_to_int(count_target_string)
|
||||||
|
|
||||||
if not count_target is None:
|
if not count_target is None:
|
||||||
for char in option_text_string:
|
for char in option_text_string:
|
||||||
|
@ -7935,7 +7948,7 @@ def urbtix_auto_survey(driver, config_dict):
|
||||||
option_content_div_text = full2half(option_content_div_text)
|
option_content_div_text = full2half(option_content_div_text)
|
||||||
|
|
||||||
if question_direction in ['left','right']:
|
if question_direction in ['left','right']:
|
||||||
for answer_item in synonyms(question_answer_char):
|
for answer_item in synonym_dict(question_answer_char):
|
||||||
if answer_item in option_content_div_text:
|
if answer_item in option_content_div_text:
|
||||||
is_radio_clicked = force_press_button(each_option_div, By.CSS_SELECTOR, 'div.radio-wrapper')
|
is_radio_clicked = force_press_button(each_option_div, By.CSS_SELECTOR, 'div.radio-wrapper')
|
||||||
if is_radio_clicked:
|
if is_radio_clicked:
|
||||||
|
@ -7945,7 +7958,7 @@ def urbtix_auto_survey(driver, config_dict):
|
||||||
break
|
break
|
||||||
|
|
||||||
if question_direction == "count":
|
if question_direction == "count":
|
||||||
for answer_item in synonyms(question_answer_char):
|
for answer_item in synonym_dict(question_answer_char):
|
||||||
if answer_item in option_content_div_text:
|
if answer_item in option_content_div_text:
|
||||||
is_radio_clicked = force_press_button(each_option_div, By.CSS_SELECTOR, 'div.radio-wrapper')
|
is_radio_clicked = force_press_button(each_option_div, By.CSS_SELECTOR, 'div.radio-wrapper')
|
||||||
if is_radio_clicked:
|
if is_radio_clicked:
|
||||||
|
@ -7971,7 +7984,7 @@ def urbtix_auto_survey(driver, config_dict):
|
||||||
int_answer_char = int(question_answer_char)
|
int_answer_char = int(question_answer_char)
|
||||||
if int_answer_char > 1:
|
if int_answer_char > 1:
|
||||||
for i in range(int_answer_char-1):
|
for i in range(int_answer_char-1):
|
||||||
for answer_item in synonyms(str(i+1)):
|
for answer_item in synonym_dict(str(i+1)):
|
||||||
is_match_more_then = False
|
is_match_more_then = False
|
||||||
if answer_item + '個或以上' in option_content_div_text:
|
if answer_item + '個或以上' in option_content_div_text:
|
||||||
is_match_more_then = True
|
is_match_more_then = True
|
||||||
|
@ -12322,7 +12335,8 @@ def test_captcha_model():
|
||||||
captcha_text_div_text = "請回答下列問題,請在下方空格輸入DELIGHT(請以半形輸入法作答,大小寫需要一模一樣)"
|
captcha_text_div_text = "請回答下列問題,請在下方空格輸入DELIGHT(請以半形輸入法作答,大小寫需要一模一樣)"
|
||||||
#captcha_text_div_text = "請在下方空白處輸入引號內文字:「abc」"
|
#captcha_text_div_text = "請在下方空白處輸入引號內文字:「abc」"
|
||||||
#captcha_text_div_text = "請在下方空白處輸入引號內文字:「0118eveconcert」(請以半形小寫作答。)"
|
#captcha_text_div_text = "請在下方空白處輸入引號內文字:「0118eveconcert」(請以半形小寫作答。)"
|
||||||
captcha_text_div_text = "請在下方空白處輸入括號內數字(12 34)"
|
#captcha_text_div_text = "請在下方空白處輸入括號內數字(12 34)"
|
||||||
|
#captcha_text_div_text = "請在下方空白處輸入括號內數字( 218441 )"
|
||||||
#captcha_text_div_text = "在《DEEP AWAKENING見過深淵的人》專輯中,哪一首為合唱曲目? 【V6】深淵 、【Z5】浮木、【J8】無聲、【C1】以上皆非 (請以半形輸入法作答,大小寫/阿拉伯數字需要一模一樣,範例:A2)"
|
#captcha_text_div_text = "在《DEEP AWAKENING見過深淵的人》專輯中,哪一首為合唱曲目? 【V6】深淵 、【Z5】浮木、【J8】無聲、【C1】以上皆非 (請以半形輸入法作答,大小寫/阿拉伯數字需要一模一樣,範例:A2)"
|
||||||
#captcha_text_div_text = "Super Junior 的隊長是以下哪位? 【v】神童 【w】藝聲 【x】利特 【y】始源 若你覺得答案為 a,請輸入 a (英文為半形小寫)"
|
#captcha_text_div_text = "Super Junior 的隊長是以下哪位? 【v】神童 【w】藝聲 【x】利特 【y】始源 若你覺得答案為 a,請輸入 a (英文為半形小寫)"
|
||||||
#captcha_text_div_text = "請問XXX, 請以英文為半形小寫(例如:a) a. 1月5日 b. 2月5日 c. 3月5日 d. 4月5日"
|
#captcha_text_div_text = "請問XXX, 請以英文為半形小寫(例如:a) a. 1月5日 b. 2月5日 c. 3月5日 d. 4月5日"
|
||||||
|
|
Loading…
Reference in New Issue