write_jinja_h_up.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. import sys
  2. import os
  3. base_dir = os.path.dirname(os.path.abspath(__file__)) if '__file__' in globals() else os.getcwd()
  4. project_root = os.path.abspath(os.path.join(base_dir, "..", ".."))
  5. sys.path.append(project_root)
  6. from pre_data.common.client_tools import write_jinja,del_jinja
  7. key_d_common = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:common"
  8. value_d_common ="""
  9. {% set up_prog_map = {
  10. "1": {"name":"棉麻","desc":"适用于耐磨、耐热的棉、麻及其混纺衣物。"},
  11. "2": {"name":"化纤","desc":"适用于合成纤维及轻薄棉织物。精准控温,快速干燥的同时有效避免面料损伤,保护纤维弹性。"},
  12. "3": {"name":"羽绒","desc":"适用于可烘干的羽绒衣物及合成纤维填充的棉服。通过气流和翻转确保羽绒蓬松轻盈。"},
  13. "6": {"name":"衬衣","desc":"适用于纯棉、亚麻、合成纤维及其混纺的衬衫,合理烘干档位可有效减少衣物褶皱,烘后即穿。"},
  14. "7": {"name":"童装","desc":"适用于婴幼儿棉质及其混纺衣物。例如:婴儿服、爬服、婴儿床品等。"},
  15. "10":{"name":"羊毛","desc":"适用于可烘干的羊毛及其混纺类衣物,可根据需求自定义烘干时间,呵护羊毛纤维不损伤。​"},
  16. "14": {"name":"内衣","desc":"适用于耐热的贴身衣物。烘干过程同步除菌,守护家人健康。​"},
  17. "15": {"name":"速烘","desc":"适用于少量棉麻、化纤类衣物的快速烘干。"},
  18. "17": {"name":"大件","desc":"适用于床单、被罩等家纺织物,精准温控配合智能翻转,确保大件家纺均匀受热,降低褶皱。"},
  19. "18": {"name":"运动服","desc":"适用于化纤或棉麻材质的运动类衣物。烘干前请查看水洗标,确保衣物适用于滚筒烘干。"},
  20. "22": {"name":"丝绸","desc":"适用于可滚筒烘干的丝绸衣物。建议烘干前查看水洗标,确保衣物适用于滚筒烘干。"},
  21. "34": {"name":"支架烘","desc":"适用于不可滚筒烘干的衣物,如羊毛衫、毛绒玩具等,请将衣物展开放在支架上,确保烘干效果。​"},
  22. "43": {"name":"定时","desc":"适用于可滚筒烘干的衣物,可根据衣物重量及含水量自定义烘干时间,此程序无自动判干功能。​"},
  23. "52": {"name":"冲锋衣","desc":"适用于冲锋衣、户外裤等功能性户外衣物。可有效保护防水涂层,维持衣物功能性。​"},
  24. "56": {"name":"智慧烘","desc":"适用于棉、麻、合成纤维类织物。​程序会根据衣物的重量自动调节烘干时间。"},
  25. "58": {"name":"浴巾","desc":"适用于耐热的浴巾、毛巾等家纺用品。能有效避免纤维板结,使浴巾蓬松柔软,吸水性更佳。​"},
  26. "92": {"name":"亚麻","desc":"适用于可滚筒烘干的亚麻及其混纺织物。有效降低衣物磨损和褶皱。"}
  27. } %}
  28. {# 干燥度枚举映射 #}
  29. {% set dry_level_map = {
  30. "1": "潮湿",
  31. "2": "即熨",
  32. "3": "即穿",
  33. "4": "储藏",
  34. "5": "特干"
  35. } %}
  36. {# 温度枚举映射 #}
  37. {% set dry_temp_map = {
  38. "0": "冷风",
  39. "1": "低温",
  40. "2": "中温",
  41. "3": "高温"
  42. } %}
  43. {# 烘干参数对应关系 #}
  44. {% macro commands_params(changed_params) -%}
  45. {% set DryLevel = changed_params.DryLevel |string |trim %}
  46. {% set DryTemp = changed_params.DryTemp |string |trim %}
  47. {% set FanLevel = changed_params.FanLevel |string |trim %}
  48. {{ [
  49. "干燥度:{}".format(dry_level_map.get(DryLevel)) if DryLevel and DryLevel != "0" else "",
  50. "温度:{}".format(dry_temp_map.get(DryTemp)) if DryTemp and DryTemp != "0" else "",
  51. "风力{}挡".format(FanLevel) if FanLevel and FanLevel != "0" else ""
  52. ] | reject("equalto", "") | join(",") }}
  53. {%- endmacro %}
  54. """
  55. # 人气模板
  56. key_d_popular = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_popularity:1"
  57. value_d_popular = """
  58. {% set program_id = program_id | string | trim %}
  59. {% set prog = up_prog_map.get(program_id) %}
  60. {% if prog %}
  61. {{ [
  62. "{0}程序,是{1}当前人气最高的程序。{2}".format(
  63. up_prog_map[program_id].name,
  64. city,
  65. "它"~up_prog_map[program_id].desc
  66. ),
  67. "{0}程序,在{1}人气最高哦。{2}".format(
  68. up_prog_map[program_id].name,
  69. city,
  70. "它"~up_prog_map[program_id].desc
  71. ),
  72. "{0}程序,在{1}很受欢迎呢。{2}".format(
  73. up_prog_map[program_id].name,
  74. city,
  75. "它"~up_prog_map[program_id].desc
  76. ),
  77. "{0}程序,是全网人气最高的程序。{1}".format(
  78. up_prog_map[program_id].name,
  79. "它"~up_prog_map[program_id].desc
  80. ),
  81. "{0}程序,在全网都很受欢迎呢。{1}".format(
  82. up_prog_map[program_id].name,
  83. "它"~up_prog_map[program_id].desc
  84. )
  85. ] | random }}
  86. {% else %}
  87. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  88. {% endif %}
  89. """
  90. # 定制模板
  91. key_d_made = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_made:2"
  92. value_d_made ="""
  93. {% set program_id = program_id | string | trim %}
  94. {% set prog = up_prog_map.get(program_id) %}
  95. {% if prog %}
  96. {% if feature_name != "" %}
  97. {% set commands_text = commands_params(changed_params) %}
  98. {% if commands_text != "" %}
  99. {{ [[
  100. "{0}程序,是你{1}的程序呢".format(
  101. up_prog_map[program_id].name,
  102. feature_name
  103. ),
  104. "发现你{0}{1}程序呢".format(
  105. feature_name,
  106. up_prog_map[program_id].name
  107. ),
  108. "这是你{0}的程序呢".format(
  109. feature_name
  110. )
  111. ] | random,
  112. [
  113. commands_text ~ "的习惯参数也帮你记着了。",
  114. commands_text ~ "的习惯参数也帮你准备好了。",
  115. "AI守护帮你设置了习惯的" ~ commands_text ~ "。"
  116. ] | random] | reject("equalto", "") | join(",") }}
  117. {% else %}
  118. {{ [
  119. "{0}程序,是你{1}的程序呢,{2}".format(
  120. up_prog_map[program_id].name,
  121. feature_name,
  122. "它" ~ up_prog_map[program_id].desc
  123. ),
  124. "发现你{0}{1}程序呢。{2}".format(
  125. feature_name,
  126. up_prog_map[program_id].name,
  127. "它" ~ up_prog_map[program_id].desc
  128. ),
  129. "这是你{0}的程序呢,{1}".format(
  130. feature_name,
  131. "它" ~ up_prog_map[program_id].desc
  132. )
  133. ] | random }}
  134. {% endif %}
  135. {% else %}
  136. 帮你准备了{{up_prog_map[program_id].name}}程序,它{{up_prog_map[program_id].desc}}
  137. {% endif %}
  138. {% else %}
  139. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  140. {% endif %}
  141. """
  142. # # 季节模板——当季推荐——姜磊
  143. key_d_season_in = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_season_in:0"
  144. value_d_season_in = """
  145. {% set program_id = program_id | trim %}
  146. {% set prog = up_prog_map.get(program_id) %}
  147. {% if prog %}
  148. {{ (
  149. "立春启新,暖意渐浓!轻盈的春装该提前准备了。" if time_term == '立春' else
  150. "立夏时节,暑气渐长。轻薄的夏日穿搭该提前准备好啦。" if time_term == '立夏' else
  151. "立秋已至,暑去凉来。是时候取出压箱底的秋装,准备添衣了。" if time_term == '立秋' else
  152. "立冬安康,寒潮将至。保暖的冬装该登场了。" if time_term == '立冬' else ''
  153. )}}
  154. {% else %}
  155. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  156. {% endif %}
  157. """
  158. # 季节模板——收纳推荐————姜磊
  159. key_d_season_storage = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_season_storage:0"
  160. value_d_season_storage = """
  161. {% set program_id = program_id | trim %}
  162. {% set prog = up_prog_map.get(program_id) %}
  163. {% if prog %}
  164. {{ (
  165. "立春时节,天气渐暖。厚重冬衣,烘干后收纳才靠谱。" if time_term == '立春' else
  166. "立夏潮闷,春装收纳正当时。" if time_term == '立夏' else
  167. "立秋换季,夏装可以功成身退啦。" if time_term == '立秋' else
  168. "立冬时节,薄款秋装该收纳入库啦。" if time_term == '立冬' else ''
  169. )}}
  170. {% else %}
  171. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  172. {% endif %}
  173. """
  174. # 关怀模板
  175. Key_d_care = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_care:0"
  176. value_d_care = """
  177. {% set name_dry = "夜间烘" %}
  178. {% set name_wind = "延取防皱" %}
  179. {% set night_dry = DryNight if DryNight !="0" else ""%}
  180. {% set wind_cruise = WFreeCn if WFreeCn !="0" else ""%}
  181. {{ [
  182. ["夜深了,AI守护已为您开启{0}和{1}啦,衣服就放心交给我吧。".format(name_dry, name_wind) ,
  183. "时间有点晚了,已为你开启{0}和{1},衣物久放也不皱。".format(name_dry, name_wind),
  184. "{0}已开启,静音干衣,不扰眠。{1}为您守护衣物至天明。".format(name_dry, name_wind),
  185. "AI守护已开启{0}和{1},降噪烘干,防止衣物产生褶皱。".format(name_dry, name_wind)
  186. ] |random if night_dry and wind_cruise else
  187. ["夜深了,AI守护已为您开启{}功能,静音洗衣不扰眠。".format(name_dry),
  188. "时间有点晚了,我会静悄悄的。",
  189. "夜间干衣,AI守护已自动开启静音模式,守护您的安宁。",
  190. "{}功能已开启,干衣机会低噪运行,让您静享安宁。".format(name_dry)
  191. ] |random if night_dry else
  192. ["夜深了,AI守护已帮你打开{},智能保管衣物。".format(name_wind) ,
  193. "时间有点晚了,{}功能会帮你守护衣物到天明。".format(name_wind),
  194. "夜间干衣,帮你开启{}了,衣物久放也不用怕。".format(name_wind),
  195. "{}准备好了,烘干完会帮你智能保管衣物。".format(name_wind)
  196. ]|random if wind_cruise else
  197. ""
  198. ] | first }}
  199. """
  200. # 环保模板——姜磊
  201. key_d_environmental = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_environmental:0"
  202. value_d_environmental = """
  203. AI守护提醒您,马上就到错峰用电时间段了,建议您预约烘干。
  204. """
  205. # 默认模板——姜磊
  206. key_d_default = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:0:time_basic:0"
  207. value_d_default = """
  208. {% set program_id = program_id | string | trim %}
  209. {% set program_data = up_prog_map.get(program_id)%}
  210. {% set program_name = program_data.name if program_data else '' %}
  211. {% set program_desc = program_data.desc if program_data else '' %}
  212. {% set commands_text = commands_params(changed_params)|trim %}
  213. {% if program_name %}
  214. {% if commands_text %}
  215. {{
  216. ["AI守护为你准备好了,{0}程序最常用的{1}哦。".format(program_name,commands_text),
  217. "发现你使用{0}程序时,喜欢调节{1}呢,帮你准备好了。".format(program_name,commands_text),
  218. "{0}程序,已按照你的习惯备好,{1}直接启动就可以啦。".format(program_name,commands_text),
  219. "AI守护为你贴心定制{0}程序,{1}已就绪。".format(program_name,commands_text),
  220. "根据你的使用习惯,{0} 已调整为{1}".format(program_name,commands_text)
  221. ]|random
  222. }}
  223. {% else %}
  224. {{ "{0}程序{1}".format(program_name, program_desc) }}
  225. {% endif %}
  226. {% else %}
  227. {{
  228. [
  229. "AI守护会持续守护您的衣物健康。",
  230. "AI守护会根据衣物情况,自动帮你匹配最优烘干方案哦。",
  231. "衣服交给我你就放心吧。"
  232. ]|random
  233. }}
  234. {% endif %}
  235. """
  236. # 通用
  237. write_jinja(key_d_common,value_d_common)
  238. # 写入上筒干衣机模板
  239. # 人气
  240. write_jinja(key_d_popular,value_d_popular)
  241. # #定制
  242. write_jinja(key_d_made,value_d_made)
  243. # # 季节
  244. write_jinja(key_d_season_in,value_d_season_in)
  245. write_jinja(key_d_season_storage,value_d_season_storage)
  246. # # 关怀
  247. write_jinja(Key_d_care,value_d_care)
  248. # # 环保
  249. write_jinja(key_d_environmental,value_d_environmental)
  250. # # 默认
  251. write_jinja(key_d_default,value_d_default)
  252. #分析下key的大小
  253. # text="""
  254. # """
  255. # kb_size = get_size_in_kb(text)
  256. # # print(f"字符串长度: {len(text)} 字符")
  257. # print(f"存储大小: {kb_size:.2f} KB")
  258. # del_jinja(key_d_season_in)
  259. # print(read_jinja(key_d_season_in))