from pathlib import Path import json print("params=" + param) print( "dir= " + directory_to_process + "/page_catalog_group_recommend.lxml"); file_xml = open(directory_to_process + "/page_catalog_group_recommend.lxml", 'r') file_content_main = file_xml.read() #print(file_xml.read()) # ; include-file=dummy_layout.inc file_inc = open(directory_to_process + "/dummy_layout.inc", 'r') file_inc_content = file_inc.read() file_xml.close() if "template1" in param: file_inc2 = open(directory_to_process + "/event/promotion_template1.inc", 'r') file_inc2_content = file_inc2.read() file_inc_img = open(directory_to_process + "/../image/event/image_template1", 'r') file_inc2_img_content = file_inc_img.read() # replace key. sp_key = file_inc2_img_content.split("\n") print("sp_key = " + str(len( sp_key))) for sp_line in sp_key: sp_line = sp_line.strip() key_val = sp_line.split("=") if len( key_val) == 2: print("k = " + key_val[0] + " val=" + key_val[1]) file_inc2_content = file_inc2_content.replace( "###" + key_val[0], '"' + key_val[1].strip() + '"') file_inc_event_click = open(directory_to_process + "/event/promotion_onclick1.inc", 'r') file_inc_event_click_content = file_inc_event_click.read() file_inc2_content = file_inc2_content.replace("###EventOnClick", file_inc_event_click_content) print(file_inc2_content) #print( file_inc_content) content_data_was_repack = file_content_main.replace(";dummy_layout.inc", file_inc_content) content_data = content_data_was_repack.replace(";BigLogoLayout", file_inc2_content) begin_text = content_data.index(";TAGESP") end_text = content_data.index(";TAGESP", begin_text + 7) print("TAGESP sub text = " + str(begin_text) + " end = " + str(end_text)) tmp1 = content_data[: begin_text - 7] tmp2 = content_data[ end_text:-1] #print("tmp1=" + tmp1) #print("tmp2=" + tmp2) content_data = tmp1 + tmp2 file_xml3_out = open(directory_to_process + "/event/out_put_file1.txt", 'r') file_xml3_out_content = file_xml3_out.read() file_xml3_out_content = file_xml3_out_content.strip() file_xml3_out_content = file_xml3_out_content.replace("\r", "") file_xml3_out_content = file_xml3_out_content.replace("\n", "") file_xml3 = open(directory_to_process + file_xml3_out_content, 'w') file_xml3.write( content_data) file_xml3.close() if "template2" in param: file_inc2 = open(directory_to_process + "/event/promotion_template2.inc", 'r') file_inc2_content = file_inc2.read() file_inc_img = open(directory_to_process + "/../image/event/image_template2", 'r') file_inc2_img_content = file_inc_img.read() # replace key. sp_key = file_inc2_img_content.split("\n") print("sp_key = " + str(len( sp_key))) for sp_line in sp_key: sp_line = sp_line.strip() key_val = sp_line.split("=") if len( key_val) == 2: print("k = " + key_val[0] + " val=" + key_val[1]) file_inc2_content = file_inc2_content.replace( "###" + key_val[0], '"' + key_val[1].strip() + '"') file_inc_event_click = open(directory_to_process + "/event/promotion_onclick2.inc", 'r') file_inc_event_click_content = file_inc_event_click.read() file_inc2_content = file_inc2_content.replace("###EventOnClick", file_inc_event_click_content) print(file_inc2_content) #print( file_inc_content) content_data_was_repack = file_content_main.replace(";dummy_layout.inc", file_inc_content) content_data = content_data_was_repack.replace(";BigLogoLayout", file_inc2_content) begin_text = content_data.index(";TAGESP") end_text = content_data.index(";TAGESP", begin_text + 7) #print("sub text = " + str(begin_text) + " end = " + str(end_text)) tmp1 = content_data[: begin_text - 7] tmp2 = content_data[ end_text:-1] #print("tmp1=" + tmp1) #print("tmp2=" + tmp2) content_data = tmp1 + tmp2 file_xml3_out = open(directory_to_process + "/event/out_put_file2.txt", 'r') file_xml3_out_content = file_xml3_out.read() file_xml3_out_content = file_xml3_out_content.strip() file_xml3_out_content = file_xml3_out_content.replace("\r", "") file_xml3_out_content = file_xml3_out_content.replace("\n", "") file_xml3 = open(directory_to_process + file_xml3_out_content, 'w') file_xml3.write( content_data) file_xml3.close() if "template3" in param: file_inc3 = open(directory_to_process + "/event/promotion_template3.inc", 'r') file_inc3_content = file_inc3.read() file_inc_img = open(directory_to_process + "/../image/event/image_template3", 'r') file_inc3_img_content = file_inc_img.read() # replace key. sp_key = file_inc3_img_content.split("\n") print("sp_key = " + str(len( sp_key))) for sp_line in sp_key: sp_line = sp_line.strip() key_val = sp_line.split("=") print("Kenta420:", key_val) if len( key_val) == 2: print("k = " + key_val[0] + " val=" + key_val[1]) file_inc3_content = file_inc3_content.replace( "###" + key_val[0], '"' + key_val[1].strip() + '"') file_inc_event_click = open(directory_to_process + "/event/promotion_onclick3.inc", 'r') file_inc_event_click_content = file_inc_event_click.read() file_inc3_content = file_inc3_content.replace("###EventOnClick", file_inc_event_click_content) print(file_inc3_content) #print( file_inc_content) content_data_was_repack = file_content_main.replace(";dummy_layout.inc", file_inc_content) content_data = content_data_was_repack.replace(";BigLogoLayout", file_inc3_content) begin_text = content_data.index(";TAGESP") end_text = content_data.index(";TAGESP", begin_text + 7) #print("sub text = " + str(begin_text) + " end = " + str(end_text)) tmp1 = content_data[: begin_text - 7] tmp3 = content_data[ end_text:-1] #print("tmp1=" + tmp1) #print("tmp3=" + tmp3) content_data = tmp1 + tmp3 file_xml3_out = open(directory_to_process + "/event/out_put_file3.txt", 'r') file_xml3_out_content = file_xml3_out.read() file_xml3_out_content = file_xml3_out_content.strip() file_xml3_out_content = file_xml3_out_content.replace("\r", "") file_xml3_out_content = file_xml3_out_content.replace("\n", "") file_xml3 = open(directory_to_process + file_xml3_out_content, 'w') file_xml3.write( content_data) file_xml3.close() if "template4" in param: # NOTE: promotion_template4.inc, image_template4, promotion_onclick4.inc, out_put_file4.txt # promotion 4 file_inc3 = open(directory_to_process + "/event/promotion_template4.inc", 'r') file_inc3_content = file_inc3.read() file_inc_img = open(directory_to_process + "/../image/event/image_template4", 'r') file_inc3_img_content = file_inc_img.read() # replace key. sp_key = file_inc3_img_content.split("\n") print("sp_key = " + str(len( sp_key))) for sp_line in sp_key: sp_line = sp_line.strip() key_val = sp_line.split("=") print("Kenta420:", key_val) if len( key_val) == 2: print("k = " + key_val[0] + " val=" + key_val[1]) file_inc3_content = file_inc3_content.replace( "###" + key_val[0], '"' + key_val[1].strip() + '"') file_inc_event_click = open(directory_to_process + "/event/promotion_onclick4.inc", 'r') file_inc_event_click_content = file_inc_event_click.read() file_inc3_content = file_inc3_content.replace("###EventOnClick", file_inc_event_click_content) print(file_inc3_content) #print( file_inc_content) content_data_was_repack = file_content_main.replace(";dummy_layout.inc", file_inc_content) content_data = content_data_was_repack.replace(";BigLogoLayout", file_inc3_content) begin_text = content_data.index(";TAGESP") end_text = content_data.index(";TAGESP", begin_text + 7) #print("sub text = " + str(begin_text) + " end = " + str(end_text)) tmp1 = content_data[: begin_text - 7] tmp3 = content_data[ end_text:-1] #print("tmp1=" + tmp1) #print("tmp3=" + tmp3) content_data = tmp1 + tmp3 file_xml3_out = open(directory_to_process + "/event/out_put_file4.txt", 'r') file_xml3_out_content = file_xml3_out.read() file_xml3_out_content = file_xml3_out_content.strip() file_xml3_out_content = file_xml3_out_content.replace("\r", "") file_xml3_out_content = file_xml3_out_content.replace("\n", "") file_xml3 = open(directory_to_process + file_xml3_out_content, 'w') file_xml3.write( content_data) file_xml3.close() if "template5" in param: # promotion thai tea file_inc3 = open(directory_to_process + "/event/promotion_template5.inc", 'r') file_inc3_content = file_inc3.read() file_inc_img = open(directory_to_process + "/../image/event/image_template5", 'r') file_inc3_img_content = file_inc_img.read() # replace key. sp_key = file_inc3_img_content.split("\n") print("sp_key = " + str(len( sp_key))) for sp_line in sp_key: sp_line = sp_line.strip() key_val = sp_line.split("=") print("Kenta420:", key_val) if len( key_val) == 2: print("k = " + key_val[0] + " val=" + key_val[1]) file_inc3_content = file_inc3_content.replace( "###" + key_val[0], '"' + key_val[1].strip() + '"') file_inc_event_click = open(directory_to_process + "/event/promotion_onclick5.inc", 'r') file_inc_event_click_content = file_inc_event_click.read() file_inc3_content = file_inc3_content.replace("###EventOnClick", file_inc_event_click_content) print(file_inc3_content) #print( file_inc_content) content_data_was_repack = file_content_main.replace(";dummy_layout.inc", file_inc_content) content_data = content_data_was_repack.replace(";BigLogoLayout", file_inc3_content) begin_text = content_data.index(";TAGESP") end_text = content_data.index(";TAGESP", begin_text + 7) #print("sub text = " + str(begin_text) + " end = " + str(end_text)) tmp1 = content_data[: begin_text - 7] tmp3 = content_data[ end_text:-1] #print("tmp1=" + tmp1) #print("tmp3=" + tmp3) content_data = tmp1 + tmp3 file_xml3_out = open(directory_to_process + "/event/out_put_file5.txt", 'r') file_xml3_out_content = file_xml3_out.read() file_xml3_out_content = file_xml3_out_content.strip() file_xml3_out_content = file_xml3_out_content.replace("\r", "") file_xml3_out_content = file_xml3_out_content.replace("\n", "") file_xml3 = open(directory_to_process + file_xml3_out_content, 'w') file_xml3.write( content_data) file_xml3.close() ############################################################### # MULTI PRO ############################################################### print("dummy.current_file_name=", current_file_name) if "multi_promotion" in param: print("Should gen multi") files = os.listdir(directory_to_process + "/event/") files = [f for f in files if f.startswith("multi_promotion_config")] for filename in files: recommend_multi_pro_buff = Path(directory_to_process + "/page_catalog_group_recommend_multi_pro.lxml").read_text() # print("pre-regex multi pro buff = ", recommend_multi_pro_buff) # print("test split", json.dumps(recommend_multi_pro_buff.splitlines(), indent=2)) temp = [] for buffer in recommend_multi_pro_buff.splitlines(): # print("buffer:"+buffer) if "\\n" in buffer: # print("found") buffer = buffer.replace("\\n", "\\\\n") temp.append(buffer) recommend_multi_pro_buff = "\n".join(temp) # print("after-splitlines multi pro buff = ", recommend_multi_pro_buff) # recommend_multi_pro_buff = recommend_multi_pro.read() # recommend_multi_pro.close() #read config multi_pro_config_file = open(directory_to_process + "/event/"+ filename) multi_pro_config = json.load(multi_pro_config_file) # if has any 'reorder' order_list: list = [] index = 0 promotion_name = [] while index < len(multi_pro_config): promotion_config = multi_pro_config[index] index += 1 # add promotion name for create filename later promotion_name.append(promotion_config["name"]) #load template template_file = open(directory_to_process + promotion_config["template"]) template = template_file.read() template_file.close() # TODO: get script and replace ###event_on_click if gen_season_pass and promotion_config["name"].startswith("s") and "product_code_key" in promotion_config.keys(): product_code = promotion_config["product_code_key"] script = None print("try find script for ", product_code) try: script = season_pass_menu_script[product_code] if "\\n" in script: script = script.replace("\\n", "\\\\n") except: pass # print("script=", script) if script != None: template = template.replace("###on_click_script", script.strip()) # replace state product_code_state = "$Sum" + ''.join(product_code.split('.')[1:]).replace("-","").replace("#","") product_code_list = product_code.split('.')[1:] pd_dot_btn = [pd +".Button" for pd in product_code_list if "#" not in pd] print("gen state", product_code_state) # template = template.replace("BigButtonEnable", f"Flag( {','.join(pd_dot_btn)},Disable=Invisible,{product_code_state})") if "dev" in param: template = template.replace("BigButtonEnable", f"\"Enable\"") else: template = template.replace("BigButtonEnable", f"{product_code_state}") template = template.replace("###on_click_script", "") for key, value in promotion_config["config"].items(): template = template.replace("###"+key, '"' + value.strip() + '"') promotion_block_str = '\r\n\r\n\t PromotionState{0} \r\n\t 33 \r\n\t 22 \r\n\t 484 \r\n\t 602 \r\n'.format(index) if gen_season_pass and promotion_config["name"].startswith("s") and "product_code_key" in promotion_config.keys(): promotion_block_str = f"\r\n\r\n\t Flag( {','.join(pd_dot_btn)},Disable=Invisible,{product_code_state}) \r\n\t 33 \r\n\t 22 \r\n\t 484 \r\n\t 602 \r\n" # insert overlay tag # promotion_block_str += season_pass_menu_big_btn_ui[f"{product_code}.overlay"].replace("menu_overlay_set", "event/menu_overlay_set") try: template = template.replace(";#Overlay", season_pass_menu_big_btn_ui[f"{product_code}.overlay"].replace("menu_overlay_set", "event/menu_overlay_set")) except: print("Overlay not found for "+product_code) pass if "dev" in param: promotion_block_str = f"\r\n\r\n\t \"Enable\" \r\n\t 33 \r\n\t 22 \r\n\t 484 \r\n\t 602 \r\n" # Add text for price and name # season_pass_menu_big_btn_ui if gen_season_pass and promotion_config["name"].startswith("s") and "product_code_key" in promotion_config.keys(): price_name_ui = season_pass_menu_big_btn_ui[product_code] if price_name_ui != None: print("get cloned ui OK") # print("preview\n", price_name_ui) template += "\r\n" + price_name_ui.replace("\\n", "\\\\n") # # 10 # 10 # "ROOT/taobin_project/inter/hkg/image/event/menu_overlay_set/gradeB/button_overlay_catalog_3_posi1.png" # # print("after replace\n", template) # try: # # get overlay # overlay_original_tag = season_pass_menu_big_btn_ui[f"{product_code}.overlay"] # # print(f"[OverlayClone] {product_code} --- "+overlay_original_tag+".") # overlay_new_path = " ".join(overlay_original_tag.split(' ')[3:-1]).replace("menu_overlay_set", "event/menu_overlay_set").replace(")","") # template += f"\t\r\n\t 10 \r\n\t 10 \r\n\t {overlay_new_path} \r\n\t\r\n" # except: # print("\t\t> Overlay not found for "+product_code+"\n") promotion_block_str += template promotion_block_str += '\r\n\r\n' recommend_multi_pro_buff = re.sub(r'(?is)(;block{0}).*(;endblock{0})'.format(index), r'\1{0}\2'.format(promotion_block_str), recommend_multi_pro_buff) # print("before idx cond check", recommend_multi_pro_buff) # Path("./before_idx_cond_check."+str(index)).write_text(recommend_multi_pro_buff, encoding="utf-8") if gen_season_pass and promotion_config["name"].startswith("s") and "product_code_key" in promotion_config.keys(): current_season = int([ s for s in product_code.split('.')[0]][1]) print("[REPL] season ", current_season) filter_sm = [ pd for pd in season_pass_menu[current_season] if pd.endswith("sm")] print("[SM] expect at least 4, ", len(filter_sm)) has_reorder = "reorder" in promotion_config.keys() # interact_idx = (-1, -1) # do load list if has_reorder: print("reorder mode") order_list = promotion_config["reorder"] print(json.dumps(order_list, indent=2), " while ", json.dumps(filter_sm, indent=2)) # buffer_key = "" # new_sorted_list = [ # "", # "", # "", # "" # ] filter_sm = order_list # sort by has_order # for filtered in filter_sm: # print("try reorder", filtered, order_list) # # get index from order # expect_index = order_list.index(filtered) # # interact_idx[0] = expect_index # print("get expect = ", expect_index) # current_index = filter_sm.index(filtered) # # interact_idx[1] = current_index # print("get current = ", current_index) # is_matched_index = expect_index != -1 and expect_index == current_index # print(f"check match {filtered}: ", not is_matched_index) # # apply to new list # new_sorted_list[expect_index] = filtered # if not is_matched_index: # print(f"swap current={filtered}@{current_index} to position@{expect_index} was {filter_sm[expect_index]}") # buffer_key = filter_sm[expect_index] # filter_sm[expect_index] = filtered # filter_sm[current_index] = buffer_key # buffer_key = "" # print("final reorder \n\n",filter_sm,order_list,"\n\n", new_sorted_list ,"\n\n") # try get block generated_block_buffer = "" for sm_menu in filter_sm: if ";season-sm-block" not in recommend_multi_pro_buff: print("expect already generated") break try: sm_menu = ".".join(sm_menu.split(".")[:-1]) print("sm_menu", sm_menu) curr_sm_block = store_block_list[sm_menu] curr_sm_block = curr_sm_block.replace(",$Sum", ",Disable=Invisible,$Sum").replace("\\n", "\\\\n") generated_block_buffer += curr_sm_block # if "52-05-02-0076" in sm_menu: # print("52-05-02-0076", generated_block_buffer) except: print("Cannot find store block for ", sm_menu) pass # replace by set of season menus if generated_block_buffer != "" and ";season-sm-block" in recommend_multi_pro_buff: print("init replace block") recommend_multi_pro_buff = re.sub(r'(?is);season-sm-block.*?;end-season-sm-block', generated_block_buffer, recommend_multi_pro_buff) # print(recommend_multi_pro_buff) # recommend_multi_pro_buff = recommend_multi_pro_buff.replace("\\n", "\\n") # Path("./generated_buffer_sm."+str(index)).write_text(recommend_multi_pro_buff, encoding="utf-8") if index == 2: # expend block3 to full width bottom inner_block = re.search(r'(?is);block{0}(.*);endblock{0}'.format(index+1), recommend_multi_pro_buff).group(1) inner_block = inner_block.replace(" 516 ", " 1032 ", 2) inner_block = inner_block.replace(" 4 ", " 8 ", 1) inner_block = inner_block.replace(" 2 ", " 4 ", 1) recommend_multi_pro_buff = re.sub(r'(?is)(;block{0}).*(;endblock{0})'.format(index+1), r'\1{0}\2'.format(inner_block), recommend_multi_pro_buff) # remove block4 recommend_multi_pro_buff = re.sub(r'(?is)(;block{0}).*(;endblock{0})'.format(index+2), r'\1\2', recommend_multi_pro_buff) # print("after idx 2 cond check", recommend_multi_pro_buff) if index == 3: # create expand block # print("inner block2. Is buffer contain ;block?", ";block" in recommend_multi_pro_buff, re.search(r'(?is)(;block{0}.*;endblock{0})'.format(index+1), recommend_multi_pro_buff)) inner_block2 = re.search(r'(?is)(;block{0}.*;endblock{0})'.format(index+1), recommend_multi_pro_buff).group(1) # print("inner_block2 = ", inner_block2) # Path("./inner_block2."+str(index)).write_text(inner_block2, encoding="utf-8") # Path("./inner_block2_buffer."+str(index)).write_text(recommend_multi_pro_buff, encoding="utf-8") inner_block2 = inner_block2.replace(";block{0}".format(index+1), ";block{0}-expand".format(index+1)) # print("inner_block2_1 = ", inner_block2) # Path("./inner_block2_1."+str(index)).write_text(inner_block2, encoding="utf-8") # Path("./inner_block2_1_buffer."+str(index)).write_text(recommend_multi_pro_buff, encoding="utf-8") inner_block2 = inner_block2.replace(";endblock{0}".format(index+1), ";endblock{0}-expand".format(index+1)) # print("inner_block2_2 = ", inner_block2) # Path("./inner_block2_2."+str(index)).write_text(inner_block2, encoding="utf-8") # Path("./inner_block2_2_buffer."+str(index)).write_text(recommend_multi_pro_buff, encoding="utf-8") # print(f"inner_block2_2.buffer {index} = ", recommend_multi_pro_buff) inner_block2 = inner_block2.replace(" 516 ", " 1032 ", 2) # inner_block2 = inner_block2.replace(" \"Enable\" ", "\r\n\teval(\r\n\tIf PromotionState{0} = \"Enable\" Then\r\n\t\tVar block_expend_show = \"Invisible\"\r\n\tElse\r\n\t\tVar block_expend_show = \"Enable\"\r\n\tEndIf\r\n\tVar return = block_expend_show\r\n\t)\r\n".format(index), 1) inner_block2 = inner_block2.replace(" 4 ", "\r\neval(\r\n\tIf CountEnablePromotion > 2 Then\r\n\t\tVar max_count = 4\r\n\tElse\r\n\t\tVar max_count = 8\r\n\tEndIf\r\n\tVar return = max_count\r\n)\r\n", 1) inner_block2 = inner_block2.replace(" 2 ", "\r\neval(\r\n\tIf CountEnablePromotion > 2 Then\r\n\t\tVar column_count = 2\r\n\tElse\r\n\t\tVar column_count = 4\r\n\tEndIf\r\n\tVar return = column_count\r\n)\r\n", 1) # print("inner_block2_3 = ", inner_block2) if "\\n" in inner_block2: inner_block2 = inner_block2.replace("\\n", "\\\\n") recommend_multi_pro_buff = re.sub(r'(?is);block{0}.*;endblock{0}'.format(index+1), inner_block2, recommend_multi_pro_buff) # print("after idx 3 cond check", recommend_multi_pro_buff) # print("index = ", index) # create promotion file count_name_dict = { 2: "double_", 3: "triple_" } # print("write buffer encode: ", str(recommend_multi_pro_buff)) # test # print("test pathlib", Path(directory_to_process + "/page_catalog_group_recommend_multi_pro.lxml").read_text()) # promo_file = open(directory_to_process + "/event/" + count_name_dict[len(multi_pro_config)]+ "promotion_" + "_and_".join(promotion_name) + ".lxml", "w") Path(directory_to_process + "/event/" + count_name_dict[len(multi_pro_config)]+ "promotion_" + "_and_".join(promotion_name) + ".lxml").write_text(recommend_multi_pro_buff, encoding="utf-8") # promo_file.write(recommend_multi_pro_buff) # # promo_file.writelines(recommend_multi_pro_buff.split("\r\n")) # promo_file.close()