write_jinja_h_down.py 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388
  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_w_common = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:common"
  8. value_w_common ="""
  9. {%- macro commands_params(changed_params) -%}
  10. {%- if changed_params is none or changed_params == {} or changed_params == "" -%}
  11. {{""}}
  12. {%- else -%}
  13. {%- set setTemp_raw = changed_params.get('setTemp') -%}
  14. {%- set speed_raw = changed_params.get('speed') -%}
  15. {%- set spinTime_raw = changed_params.get('spinTime') -%}
  16. {%- set washTime_raw = changed_params.get('washTime') -%}
  17. {%- set setTemp = setTemp_raw | int if setTemp_raw not in [none, ''] else none -%}
  18. {%- set speed = speed_raw | int if speed_raw not in [none, ''] else none -%}
  19. {%- set spinTime = spinTime_raw | int if spinTime_raw not in [none, ''] else none -%}
  20. {%- set washTime = washTime_raw | int if washTime_raw not in [none, ''] else none -%}
  21. {{[
  22. "水温常温" if setTemp is not none and setTemp == 0 else "水温95度" if setTemp is not in [none, 65535] and setTemp >= 90 else "水温{}度".format(setTemp) if setTemp is not in [none, 65535] else "",
  23. "转速{}转".format(speed * 10) if speed is not in [none, 0, 65535] else "",
  24. "漂洗{}次".format(spinTime) if spinTime not in [none, '', 65535 ] else "",
  25. "洗涤{}分钟".format(washTime) if washTime not in [none, '', 0, 65535] and washTime <= 255 else ""
  26. ] | reject("equalto", "") | join(",") }}
  27. {%- endif -%}
  28. {%- endmacro -%}
  29. {% set down_prog_map = {
  30. "1": {"name":"棉麻","desc":"适用于棉麻类衣物的洗涤。"},
  31. "2": {"name":"化纤","desc":"适用于化纤类衣物的洗涤。"},
  32. "3": {"name":"羽绒","desc":"适用于可机洗的羽绒类衣物及填充物为合成纤维的棉服。例如:羽绒外套、丝棉背心等。"},
  33. "6": {"name":"衬衣","desc":"适用于棉质、亚麻、合成纤维及其混纺类衬衣的洗涤。"},
  34. "7": {"name":"童装","desc":"适用于婴幼儿棉质及混纺衣物的洗涤。例如:婴儿服、爬服、婴儿床品等。建议使用适用于婴幼儿衣物的洗涤剂。"},
  35. "9": {"name":"烫烫净","desc":"适用于可耐高温的棉麻类衣物的除菌洗涤;例如:婴幼儿棉质衣物、床品或较脏的衣物。"},
  36. "10":{"name":"羊毛","desc":"适用于可机洗的羊毛及羊毛混纺衣物的洗涤,洗衣强度较低,以轻柔地护理羊毛织物,降低缩水、毡化"},
  37. "13":{"name":"筒自洁","desc":"适用于清洁洗衣机内外筒,借助离子净化技术结合高温水流,深入清洁内筒缝隙中的污垢与细菌。为了避免高温导致泡沫溢出,请勿添加任何清洗剂。"},
  38. "14": {"name":"内衣","desc":"适用于可机洗内衣的洗涤,如秋衣秋裤、保暖衣的日常洗涤。"},
  39. "15": {"name":"速洗","desc":"适用于有轻微污渍的衣物的快速洗涤。例如:夏季日常换洗的衣物。"},
  40. "17": {"name":"大件","desc":"适用于可机洗的棉质、亚麻及混合面料的大件织物的日常洗涤。例如:棉质床单、被罩、毛巾被、秋冬季棉质工装等。"},
  41. "18": {"name":"运动服","desc":"适用于棉质、合成纤维等运动类衣物的洗涤。低温水流有效保护衣物纤维,维持衣物功能性。"},
  42. "19": {"name":"超柔","desc":"适用于可机洗的真丝类、手洗类衣物的洗涤。易褶皱类衣物请降低脱水转速,衣量不超过一公斤。"},
  43. "27": {"name":"漂+脱","desc":"仅对衣物进行漂洗和脱水操作,也可用于手洗后漂洗脱水。请确认要漂洗的衣物适合机洗。"},
  44. "28": {"name":"单脱水","desc":"仅对衣物进行脱水操作,也可用于手洗后衣物的脱水。请确认要脱水的衣物适合机洗。"},
  45. "40": {"name":"强力洗","desc":"适用于耐磨的棉、麻及其混纺衣物的洗涤。通过增强洗护力度实现深层去污。"},
  46. "52": {"name":"冲锋衣","desc":"适用于含有防水涂层面料的户外衣物的洗涤。例如:冲锋衣、户外裤、夹克等。建议洗前拉上拉链,切勿使用柔顺剂。"},
  47. "56": {"name":"智慧洗","desc":"适用于棉、麻、合成纤维类衣物的洗涤。程序会根据衣物的重量自动调节洗涤方式,确保衣物达到最佳洗护效果。"},
  48. "58": {"name":"浴巾","desc":"适用于毛巾、浴巾等用品的洗涤,通过持续高温水流有效杀菌和消除衣物上的污渍和异味。"}
  49. } %}
  50. """
  51. # 人气模板
  52. key_w_popular = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_popularity:1"
  53. value_w_popular = """
  54. {% set program_id = program_id | string | trim %}
  55. {% set prog = down_prog_map.get(program_id) %}
  56. {% if prog %}
  57. {{ [
  58. "{0}程序,是{1}当前人气最高的程序哦。{2}".format(
  59. down_prog_map[program_id].name,
  60. city,
  61. "它"~down_prog_map[program_id].desc
  62. ),
  63. "{0}程序,在{1}人气最高哦。{2}".format(
  64. down_prog_map[program_id].name,
  65. city,
  66. "它"~down_prog_map[program_id].desc
  67. ),
  68. "{0}程序,在{1}很受欢迎呢。{2}".format(
  69. down_prog_map[program_id].name,
  70. city,
  71. "它"~down_prog_map[program_id].desc
  72. ),
  73. "{0}程序,是全网人气最高的程序哦。{1}".format(
  74. down_prog_map[program_id].name,
  75. "它"~down_prog_map[program_id].desc
  76. ),
  77. "{0}程序,在全网都很受欢迎呢。{1}".format(
  78. down_prog_map[program_id].name,
  79. "它"~down_prog_map[program_id].desc
  80. )
  81. ] | random }}
  82. {% else %}
  83. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  84. {% endif %}
  85. """
  86. # 定制模板
  87. key_w_made = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_made:2"
  88. value_w_made ="""
  89. {% set program_id = program_id | string | trim %}
  90. {% set prog = down_prog_map.get(program_id) %}
  91. {% if prog %}
  92. {% if feature_name != "" %}
  93. {% set commands_text = commands_params(changed_params) %}
  94. {% if commands_text != "" %}
  95. {{ [[
  96. "{0}程序,是你{1}的程序呢".format(
  97. down_prog_map[program_id].name,
  98. feature_name
  99. ),
  100. "发现你{0}{1}程序呢".format(
  101. feature_name,
  102. down_prog_map[program_id].name
  103. ),
  104. "这是你{0}的程序呢".format(
  105. feature_name
  106. )
  107. ] | random,
  108. [
  109. commands_text ~ "的习惯参数也帮你记着了。",
  110. commands_text ~ "的习惯参数也帮你准备好了。",
  111. "AI守护帮你设置了习惯的" ~ commands_text ~ "。"
  112. ] | random] | reject("equalto", "") | join(",") }}
  113. {% else %}
  114. {{ [
  115. "{0}程序,是你{1}的程序呢,{2}".format(
  116. down_prog_map[program_id].name,
  117. feature_name,
  118. "它" ~ down_prog_map[program_id].desc
  119. ),
  120. "发现你{0}{1}程序呢。{2}".format(
  121. feature_name,
  122. down_prog_map[program_id].name,
  123. "它" ~ down_prog_map[program_id].desc
  124. ),
  125. "这是你{0}的程序呢,{1}".format(
  126. feature_name,
  127. "它" ~ down_prog_map[program_id].desc
  128. )
  129. ] | random }}
  130. {% endif %}
  131. {% else %}
  132. 帮你准备了{{down_prog_map[program_id].name}}程序,它{{down_prog_map[program_id].desc}}
  133. {% endif %}
  134. {% else %}
  135. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  136. {% endif %}
  137. """
  138. # 天气模板
  139. key_w_weather = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_weather:0"
  140. value_w_weather = """
  141. {{ [
  142. [
  143. "今天阴天,晾晒衣物会比较慢,帮你打开洗烘联动啦。",
  144. "今天阴天,晾晒衣物会比较慢,洗烘联动更省心哦。"
  145. ] | random if weather == '阴' else
  146. [
  147. "今天预报有{},不适合室外晾晒,帮你打开洗烘联动啦。".format(weather),
  148. "今天预报有{},不适合室外晾晒,洗烘联动更省心哦。".format(weather)
  149. ] | random if weather in ['小雨','中雨','大雨','暴雨'] else
  150. [
  151. "今天预报有{},不适合室外晾晒,帮你打开洗烘联动啦。".format(weather),
  152. "今天预报有{},不适合室外晾晒,洗烘联动更省心哦。".format(weather)
  153. ] | random if weather in ['小雪','中雪','大雪','暴雪'] else
  154. [
  155. "今天有{},室外晾晒容易导致二次污染,帮你打开洗烘联动啦。".format(weather),
  156. "今天有{},室外晾晒容易导致二次污染,洗烘联动更省心哦。".format(weather)
  157. ] | random if weather in ['雾霾','中度雾霾','重度雾霾','沙尘暴'] else
  158. [
  159. "今天天气不太好,帮你打开洗烘联动啦。",
  160. "今天天气不太好,洗烘联动更省心哦。"
  161. ] |random
  162. ] | first }}
  163. """
  164. # 季节模板——当季推荐
  165. key_w_season_in = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_season_in:0"
  166. value_w_season_in = """
  167. {% set program_id = program_id | string | trim %}
  168. {% set prog = down_prog_map.get(program_id) %}
  169. {% if prog %}
  170. {% set program_name = down_prog_map[program_id].name %}
  171. {{ [
  172. "立春快乐,春风送暖,是时候准备好轻盈的春装了。{}".format(
  173. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  174. if program_name == '冲锋衣' else "")
  175. if time_term == '立春' else
  176. "立夏时节,暑气渐长。轻薄的夏日穿搭该拿出来洗洗啦。{}".format(
  177. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。"
  178. if program_name == '丝绸' else "")
  179. if time_term == '立夏' else
  180. "立秋已至,暑去凉来。是时候洗净压箱底的秋装,准备添衣了。{}".format(
  181. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  182. if program_name == '冲锋衣' else "")
  183. if time_term == '立秋' else
  184. "立冬安康,寒潮将至。保暖的冬装该登场了。{}".format(
  185. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。" if program_name == '羊毛' else
  186. "AI守护提醒您"~program_name~"衣物洗前记得拉好拉链,内外翻转后洗涤。" if program_name =="羽绒" else
  187. "")
  188. if time_term == '立冬'
  189. ]| first}}
  190. {% else %}
  191. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  192. {% endif %}
  193. """
  194. # 季节模板——收纳推荐
  195. key_w_season_storage = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_season_storage:0"
  196. value_w_season_storage = """
  197. {% set program_id = program_id | string | trim %}
  198. {% set prog = down_prog_map.get(program_id) %}
  199. {% if prog %}
  200. {% set program_name = down_prog_map[program_id].name %}
  201. {{ [
  202. "立春时节,是时候洗好厚重衣物收纳起来啦。{}".format(
  203. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。" if program_name == '羊毛' else
  204. "AI守护提醒您羽绒衣物洗前记得拉好拉链,内外翻转后洗涤。" if program_name =="羽绒" else
  205. "")
  206. if time_term == '立春' else
  207. "立夏潮闷,春装收纳正当时。{}".format(
  208. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  209. if program_name == '冲锋衣' else "")
  210. if time_term == '立夏' else
  211. "立秋换季,夏装可以功成身退啦。{}".format(
  212. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。"
  213. if program_name == '丝绸' else "")
  214. if time_term == '立秋' else
  215. "立冬时节,薄款秋装该收起来啦。{}".format(
  216. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  217. if program_name == '冲锋衣' else "")
  218. if time_term == '立冬'
  219. ]| first}}
  220. {% else %}
  221. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  222. {% endif %}
  223. """
  224. # 关怀模板
  225. Key_w_care = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_care:0"
  226. value_w_care = """
  227. {% set name_wash = "夜间洗" %}
  228. {% set name_wind = "延取防皱" %}
  229. {% set night_wash = washNight if washNight !="0" else ""%}
  230. {% set wind_cruise = WFreeCn if WFreeCn !="0" else ""%}
  231. {{ [
  232. ["夜深了,AI守护已为您开启{0}和{1}啦,衣服就放心交给我吧。".format(name_wash, name_wind) ,
  233. "时间有点晚了,已为你开启{0}和{1},衣物久放也不闷。".format(name_wash, name_wind),
  234. "{0}已开启,静音洗衣,不扰眠。{1}为您守护衣物至天明。".format(name_wash, name_wind),
  235. "AI守护已开启{0}和{1},降噪洗护,防止衣物产生异味和褶皱。".format(name_wash, name_wind)
  236. ] |random if night_wash and wind_cruise else
  237. ["夜深了,AI守护已为您开启{}功能,静音洗衣不扰眠。".format(name_wash),
  238. "时间有点晚了,我会静悄悄的。",
  239. "夜间洗衣,AI守护已自动开启静音洗涤,守护您的安宁。",
  240. "夜洗功能已开启,洗衣机会低噪运行,让您静享安宁。"
  241. ] |random if night_wash else
  242. ["夜深了,AI守护已帮你打开{},智能保管衣物。".format(name_wind) ,
  243. "时间有点晚了,{}功能会帮你守护衣物到天明。".format(name_wind),
  244. "夜间洗衣,帮你开启{}了,衣物久放也不用怕。".format(name_wind),
  245. "{}准备好了,洗完会帮你智能保管衣物。".format(name_wind)
  246. ]|random if wind_cruise else
  247. ""
  248. ] | first }}
  249. """
  250. # 环保模板
  251. key_w_environmental = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_environmental:0"
  252. value_w_environmental = """
  253. AI守护提醒您,马上就到错峰用电时间段了,建议您预约洗护。
  254. """
  255. # 健康模板
  256. key_w_health = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_health:0"
  257. value_w_health = """
  258. {% set program_id = program_id | string | trim %}
  259. {% set prog = down_prog_map.get(program_id) %}
  260. {% if prog %}
  261. {% set health_name = down_prog_map[program_id].name %}
  262. {{
  263. "您的洗衣筒需要清洁了,请及时使用{}程序清洗。".format(health_name) if remainderNum |int <= 0 else
  264. ""
  265. }}
  266. {%- endif -%}
  267. """
  268. # 默认模板+筒自洁
  269. key_w_default = "broadcast-template-jinja:201c51890c31c308050400218003484843000001000000000000000000000040:3:time_basic:0"
  270. value_w_default = """
  271. {% set program_id = program_id | string | trim %}
  272. {% set program_data = down_prog_map.get(program_id)%}
  273. {% set program_desc = program_data.desc if program_data else '' %}
  274. {% set program_name = program_data.name if program_data else '' %}
  275. {%set commands_text = commands_params(changed_params)%}
  276. {% if program_name %}
  277. {% if program_id == "13" %}
  278. {% set remainderNum = remainderNum | int %}
  279. {{
  280. "您的洗衣筒还很干净,暂时不需要清洁。" if remainderNum|int > 3 else
  281. "洗衣机快到清洁时间啦,先囤好筒洗剂,再洗几次衣服就该给内筒做清洁啦" if remainderNum |int <=3 and remainderNum |int >= 1 else
  282. ""
  283. }}
  284. {% elif commands_text %}
  285. {{
  286. ["AI守护为你准备好了,{0}程序最常用的{1}哦。".format(program_name,commands_text),
  287. "发现你使用{0}程序时,喜欢调节{1}呢,帮你准备好了。".format(program_name,commands_text),
  288. "{0}程序,已按照你的习惯备好,{1}直接启动就可以啦。".format(program_name,commands_text),
  289. "AI守护为你贴心定制 {0}程序,{1}已就绪。".format(program_name,commands_text),
  290. "根据你的使用习惯,{0} 已调整为{1}".format(program_name,commands_text)
  291. ]|random
  292. }}
  293. {% elif program_desc %}
  294. {{ "{0}程序{1}".format(program_name, program_desc) }}
  295. {% endif %}
  296. {% else %}
  297. {{
  298. [
  299. "AI守护会持续守护您的衣物健康。",
  300. "AI守护会根据衣物情况,自动帮你匹配最优洗护方案哦。",
  301. "衣服交给我你就放心吧。"
  302. ]|random
  303. }}
  304. {% endif %}
  305. """
  306. # =================== H+ 多卡写入下筒洗衣机模板 ================
  307. # 通用
  308. write_jinja(key_w_common,value_w_common)
  309. # 人气
  310. write_jinja(key_w_popular,value_w_popular)
  311. #定制
  312. write_jinja(key_w_made,value_w_made)
  313. # 天气
  314. write_jinja(key_w_weather,value_w_weather)
  315. # 季节
  316. write_jinja(key_w_season_in,value_w_season_in)
  317. write_jinja(key_w_season_storage,value_w_season_storage)
  318. # 关怀
  319. write_jinja(Key_w_care,value_w_care)
  320. # 环保
  321. write_jinja(key_w_environmental,value_w_environmental)
  322. # 健康
  323. write_jinja(key_w_health,value_w_health)
  324. # 默认+筒自洁
  325. write_jinja(key_w_default,value_w_default)
  326. # 通用
  327. # del_jinja(key_w_common)
  328. # # 人气
  329. # del_jinja(key_w_popular)
  330. # #定制
  331. # del_jinja(key_w_made)
  332. # # 天气
  333. # del_jinja(key_w_weather)
  334. # # 季节
  335. # del_jinja(key_w_season_in)
  336. # del_jinja(key_w_season_storage)
  337. # # 关怀
  338. # del_jinja(Key_w_care)
  339. # # 环保
  340. # del_jinja(key_w_environmental)
  341. # # 默认+筒自洁
  342. # del_jinja(key_w_default)