write_jinja_x11_down.py 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  1. import sys
  2. import json
  3. from pathlib import Path
  4. PROJECT_ROOT = Path(__file__).resolve().parents[2] # 往上两级就是项目根
  5. sys.path.insert(0, str(PROJECT_ROOT))
  6. from pre_data.common.client_tools import write_jinja,del_jinja,write_multi_key,write_multi_common_key
  7. type_id ="201c51890c31c308050100218008390000000000000000000000000000000040"
  8. zone_ids=["2","3"]
  9. rectype_ids=["1","2"]
  10. popular_ids=["1"]
  11. custom_ids=["2"]
  12. # 通用模板?如果洗衣机干衣机都一样怎么处理
  13. # key_common = "broadcast-template-jinja:"+type_id+":common"
  14. value_common_second_key="broadcast-template-jinja:single_card:wash:common"
  15. value_common = """
  16. {% macro count_round(value) %}
  17. {% set value = value | int %}
  18. {{ (value / 10) | round(0) | int * 10 }}
  19. {% endmacro %}
  20. {% macro approx_fraction(p) -%}
  21. {%- set p = 99 if p |int >= 100 else p -%}
  22. {%- if p >= 50 -%}
  23. 百分之{{ ['','一','二','三','四','五','六','七','八','九'][p//10] }}{{ '十' if p >= 10 else '' }}{{
  24. ['','一','二','三','四','五','六','七','八','九'][p%10] if p%10 else '' }}
  25. {%- elif p >= 40 -%}一半
  26. {%- else -%}三分之一
  27. {%- endif -%}
  28. {%- endmacro %}
  29. {% set greeting = ["嗨", "哈喽"] %}
  30. {% set assistant1 = ["小优来啦", "你的洗护小管家来啦", "你的洗护小助手来啦", "你的洗护小精灵来啦", "你的洗护小管家上线啦", "你的洗护小助手上线啦", "你的洗护小精灵上线啦", "小优前来报到",
  31. "洗护小管家前来报道", "洗护小助手前来报道", "洗护小精灵前来报到"] %}
  32. {% set assistant2 = ["洗衣推荐来啦", "洗衣小贴士来啦", "又要洗衣服啦", "又来洗衣服啦", "洗衣时间到啦"] %}
  33. {% set user1 = [ "位用户", "位邻居", "位朋友", "户家庭", "个小伙伴"] %}
  34. {% set user2 = ["用户", "小伙伴", "邻居"] %}
  35. {%- macro commands_params(changed_params) -%}
  36. {%- if changed_params is none or changed_params == {} or changed_params == "" -%}
  37. {{ "" }}
  38. {%- else -%}
  39. {# 注意:不要用 or 取值,因为 0 会被当成 false #}
  40. {%- set setTemp_raw = changed_params['setTemp'] if 'setTemp' in changed_params else changed_params.get('温度') -%}
  41. {%- set speed_raw = changed_params['speed'] if 'speed' in changed_params else changed_params.get('转速') -%}
  42. {%- set spinTime_raw = changed_params['spinTime'] if 'spinTime' in changed_params else changed_params.get('漂洗') -%}
  43. {%- set washTime_raw = changed_params['washTime'] if 'washTime' in changed_params else changed_params.get('时间') -%}
  44. {# ================= 温度 ================= #}
  45. {%- set temp_str = "" -%}
  46. {%- if setTemp_raw is not none and setTemp_raw != "" -%}
  47. {%- set setTemp_s = setTemp_raw|string|trim -%}
  48. {%- if setTemp_raw is number or setTemp_s.isdigit() -%}
  49. {%- set setTemp = setTemp_raw|int -%}
  50. {%- if setTemp != 65535 -%}
  51. {%- if setTemp == 0 -%}
  52. {%- set temp_str = "水温常温" -%}
  53. {%- elif setTemp >= 90 -%}
  54. {%- set temp_str = "水温95度" -%}
  55. {%- else -%}
  56. {%- set temp_str = "水温{}度".format(setTemp) -%}
  57. {%- endif -%}
  58. {%- endif -%}
  59. {%- else -%}
  60. {%- set temp_str = "水温" ~ setTemp_s -%}
  61. {%- endif -%}
  62. {%- endif -%}
  63. {# ================= 转速 ================= #}
  64. {%- set speed_str = "" -%}
  65. {%- if speed_raw is not none and speed_raw != "" -%}
  66. {%- set speed_s = speed_raw|string|trim -%}
  67. {%- if speed_raw is number or speed_s.isdigit() -%}
  68. {%- set speed = speed_raw|int -%}
  69. {%- if speed not in [65535] -%}
  70. {%- set speed_str = "转速{}转".format(speed * 10) -%}
  71. {%- endif -%}
  72. {%- else -%}
  73. {%- set speed_str = "转速" ~ speed_s -%}
  74. {%- endif -%}
  75. {%- endif -%}
  76. {# ================= 漂洗 ================= #}
  77. {%- set spin_str = "" -%}
  78. {%- if spinTime_raw is not none and spinTime_raw != "" -%}
  79. {%- set spinTime_s = spinTime_raw|string|trim -%}
  80. {%- if spinTime_raw is number or spinTime_s.isdigit() -%}
  81. {%- set spinTime = spinTime_raw|int -%}
  82. {%- if spinTime != 65535 -%}
  83. {%- set spin_str = "漂洗{}次".format(spinTime) -%}
  84. {%- endif -%}
  85. {%- else -%}
  86. {%- set spin_str = "漂洗" ~ spinTime_s -%}
  87. {%- endif -%}
  88. {%- endif -%}
  89. {# ================= 洗涤时间 ================= #}
  90. {%- set wash_str = "" -%}
  91. {%- if washTime_raw is not none and washTime_raw != "" -%}
  92. {%- set washTime_s = washTime_raw|string|trim -%}
  93. {%- if washTime_raw is number or washTime_s.isdigit() -%}
  94. {%- set washTime = washTime_raw|int -%}
  95. {%- if washTime not in [0, 65535] and washTime <= 255 -%}
  96. {%- set wash_str = "洗涤{}分钟".format(washTime) -%}
  97. {%- endif -%}
  98. {%- else -%}
  99. {%- set wash_str = "洗涤" ~ washTime_s -%}
  100. {%- endif -%}
  101. {%- endif -%}
  102. {{ [spin_str, wash_str, temp_str, speed_str] | reject("equalto", "") | join(",") }}
  103. {%- endif -%}
  104. {%- endmacro -%}
  105. {# --------------------- 人气/定制简短模板函数 --------------------- #}
  106. {% set prefix_message %}
  107. {% set program_id = program_id | string | trim %}
  108. {% set program_name = program_name_map.get(program_id) %}
  109. {% if program_name %}
  110. {% if rerank_reason |upper == "PIN_CONSECUTIVE" %}
  111. {%set commands_text = commands_params(changed_params) | trim %}
  112. {{[
  113. "{0}好呀,小优发现你最近几次洗衣都喜欢用{1}程序,{2}给你准备好了。".format(period, program_name, commands_text~"这个使用习惯" if commands_text else ""),
  114. "{0},发现你最近几次洗衣都使用{1},{2}给你准备好了。".format(assistant1 | random, program_name, commands_text~"," if commands_text else ""),
  115. "{0},为你推荐最近几次常用的{1}程序,{2}赶快启动吧!".format(assistant2 | random, program_name, commands_text~"," if commands_text else ""),
  116. "{0},最懂你的小优来啦,你最近几次洗衣都使用了{1}程序,{2}这次还这么用吧。".format(greeting |random, program_name, commands_text~"," if commands_text else ""),
  117. "又能帮你洗衣服了,小优很开心哦。前几次洗衣你都使用{0}程序,我猜你这次还想用它。".format(program_name)
  118. ] | random
  119. }}
  120. {% elif rerank_reason |upper == "PIN_WEEKLY" %}
  121. {%set feature_week_name="每周这个时间都喜欢用"%}
  122. {%set commands_text = commands_params(changed_params) | trim %}
  123. {{[
  124. "{0}好呀,小优发现你{1}{2}程序,{3}给你准备好了。".format(period, feature_week_name, program_name, commands_text~"," if commands_text else ""),
  125. "{0}好呀,小优准备了你{1}的{2}程序。{3}快来启动吧。".format(period, feature_week_name, program_name, commands_text~"," if commands_text else ""),
  126. "{0},{1},推荐你{2}的{3}程序。{4}".format(greeting |random, assistant1 | random, feature_week_name, program_name, commands_text~"。" if commands_text else ""),
  127. "{0},你{1}的{2}程序,{3}给你准备好了。".format(assistant1 | random, feature_week_name, program_name, commands_text~"这个使用习惯" if commands_text else ""),
  128. "{0},小优准备了你{1}的{2}程序,{3}赶快启动吧!".format(assistant2 | random, feature_week_name, program_name, commands_text~"," if commands_text else "")
  129. ] | random}}
  130. {% elif recommend_type |upper == "POPULAR" %}
  131. {{ [
  132. "{0},给你准备了{1}人气最高的{2}程序。".format(assistant1 | random, city, program_name),
  133. "{0},这个时间{1}程序在{2}使用率最高哦。".format(assistant2 | random, program_name, city),
  134. "{0}好呀,为你推荐{1}人气最高的{2}程序。".format(period, city, program_name),
  135. "嗨,小优发现这个时间{0},{1}程序人气最高哦。".format(city, program_name),
  136. "{0}洗衣推荐来啦,{1}程序是{2}当前的热门程序哦。".format(season, program_name, city)
  137. ] | random
  138. }}
  139. {% elif recommend_type |upper == "CUSTOM" %}
  140. {%set commands_text = commands_params(changed_params) | trim %}
  141. {% if feature_name!="" %}
  142. {{ [
  143. "{0}好呀,小优发现你{1}{2}程序,{3}给你准备好了。".format(period, feature_name, program_name, commands_text~"," if commands_text else ""),
  144. "{0}好呀,小优准备了你{1}的{2}程序。{3}".format(period, feature_name, program_name, commands_text~"。" if commands_text else ""),
  145. "{0},推荐你{1}的{2}程序。{3}".format(assistant1 | random, feature_name, program_name, commands_text~"。" if commands_text else ""),
  146. "{0},为你准备了你{1}的{2}程序。{3}".format(assistant1 | random, feature_name, program_name, commands_text~"。" if commands_text else ""),
  147. "{0},你{1}的{2}程序,{3}已经准备就绪。".format(assistant2 | random, feature_name, program_name, commands_text if commands_text else "")
  148. ]| random }}
  149. {% else %}
  150. {{
  151. "您好,推荐您常用的{}程序,已准备好了,快开始启动吧。".format(program_name)
  152. }}
  153. {% endif %}
  154. {% endif %}
  155. {% else %}
  156. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  157. {% endif %}
  158. {% endset %}
  159. """
  160. value_popular_second_key="broadcast-template-jinja:single_card:wash:time_popular"
  161. # 人气模板
  162. # def key_popular_fun(zone_id:str):
  163. # return "broadcast-template-jinja:"+type_id+":"+zone_id+":time_made_popularity:1"
  164. value_popular = """
  165. {% set program_id = program_id | string | trim %}
  166. {% set program_name = program_name_map.get(program_id) %}
  167. {% set count = count_round(count) | int %}
  168. {% set user_count = count_round(user_count) |int %}
  169. {% set user_proportion = user_proportion | int %}
  170. {% if program_name %}
  171. {% if rerank_reason |upper == "PIN_CONSECUTIVE" %}
  172. {%set commands_text = commands_params(changed_params) | trim %}
  173. {{[
  174. "{0}好呀,小优发现你最近几次洗衣都喜欢用{1}程序,{2}给你准备好了。".format(period, program_name,
  175. commands_text~"这个使用习惯" if commands_text else ""
  176. ),
  177. "{0},发现你最近几次洗衣都使用{1},{2}给你准备好了。".format(assistant1 | random, program_name,
  178. commands_text~"," if commands_text else ""
  179. ),
  180. "{0},为你推荐最近几次常用的{1}程序,{2}赶快启动吧!".format(assistant2 | random, program_name,
  181. commands_text~"," if commands_text else ""
  182. ),
  183. "{0},最懂你的小优来啦,你最近几次洗衣都使用了{1}程序,{2}这次还这么用吧。".format(greeting |random, program_name,
  184. commands_text~"," if commands_text else ""
  185. ),
  186. "又能帮你洗衣服了,小优很开心哦。前几次洗衣你都使用{0}程序,我猜你这次还想用它。".format(
  187. program_name
  188. )
  189. ] | random
  190. }}
  191. {% elif rerank_reason |upper == "PIN_WEEKLY" %}
  192. {%set commands_text = commands_params(changed_params) | trim %}
  193. {%set feature_week_name="每周这个时间都喜欢用"%}
  194. {{[
  195. "{0}好呀,小优发现你{1}{2}程序,{3}给你准备好了。".format(
  196. period,
  197. feature_week_name,
  198. program_name,
  199. commands_text~"," if commands_text else ""
  200. ),
  201. "{0}好呀,小优准备了你{1}的{2}程序。{3}快来启动吧。".format(
  202. period,
  203. feature_week_name,
  204. program_name,
  205. commands_text~"," if commands_text else ""
  206. ),
  207. "{0},{1},推荐你{2}的{3}程序。{4}".format(
  208. greeting |random,
  209. assistant1 | random,
  210. feature_week_name,
  211. program_name,
  212. commands_text~"。" if commands_text else ""
  213. ),
  214. "{0},你{1}的{2}程序,{3}给你准备好了。".format(
  215. assistant1 | random,
  216. feature_week_name,
  217. program_name,
  218. commands_text~"这个使用习惯" if commands_text else ""
  219. ),
  220. "{0},小优准备了你{1}的{2}程序,{3}赶快启动吧!".format(
  221. assistant2 | random,
  222. feature_week_name,
  223. program_name,
  224. commands_text~"," if commands_text else ""
  225. )
  226. ] | random}}
  227. {% else %}
  228. {{ [
  229. "{0}好呀,为你推荐{1}人气最高的{2}程序。{3}".format(
  230. period,
  231. city,
  232. program_name,
  233. ("近期有" ~ user_count ~ "多" ~ (user1 | random) ~ "都喜欢用呢。" if user_count >= 30 else "")
  234. ),
  235. "{0}好呀,为你推荐{1}人气最高的{2}程序。{3}".format(
  236. period,
  237. city,
  238. program_name,
  239. ("近期有" ~ approx_fraction(user_proportion) ~ "的" ~ (user2 | random) ~ "都喜欢用呢。" if user_proportion >= 30 else "快启动试试吧。")
  240. ),
  241. "{0}好呀,小优发现{1}程序在{2}的人气很高哦,{3}咱也来试试吧!".format(
  242. period,
  243. program_name,
  244. city,
  245. ("近期有" ~ count ~"多次使用记录呢," if count >= 100 else "")
  246. ),
  247. "{0},给你准备了{1}人气最高的{2}程序,{3}".format(
  248. assistant1 |random,
  249. city,
  250. program_name,
  251. ("近期有"~ user_count ~"多" ~ (user1 | random) ~ "都喜欢用呢。咱们也来试试看吧!" if user_count >= 30 else "快来试试看吧!")
  252. ),
  253. "{0},{1}程序在{2}很受欢迎呢,{3}咱们也来试试看吧!".format(
  254. assistant1 |random,
  255. program_name,
  256. city,
  257. ("是" ~ user_count ~"多"~ (user1 | random) ~ "的共同选择。" if user_count >= 30 else "")
  258. ),
  259. "{0},{1},这个时间段{2}程序在{3}人气最高,{4}给你也准备好了。".format(
  260. greeting | random,
  261. assistant1 | random,
  262. program_name,
  263. city,
  264. ("超过" ~ approx_fraction(user_proportion) ~ "的" ~ (user2 |random) ~ "都在用呢," if user_proportion >= 30 else "")
  265. ),
  266. "{0},为你推荐当前人气最高的{1}程序,{2}".format(
  267. assistant2 | random,
  268. program_name,
  269. (city ~ "超过"~ approx_fraction(user_proportion) ~"的"~ (user2 |random) ~"都在用哦" if user_proportion >= 30 else "都准备好了,直接启动就行。")
  270. ),
  271. "{0},给你准备了{1}人气最高的{2}程序,{3}".format(
  272. assistant2 | random,
  273. city,
  274. program_name,
  275. ("近期有"~ user_count ~"多" ~ (user1 | random) ~ "都喜欢用呢。咱们也来试试看吧!" if user_count >= 30 else "快启动试试吧!")
  276. ),
  277. "{0},{1}程序在{2}人气最高,{3}咱们也来试试看吧!".format(
  278. assistant2 | random,
  279. program_name,
  280. city,
  281. ("是"~ user_count ~"多"~ (user1 | random) ~ "的共同选择。" if user_count >= 30 else "")
  282. ),
  283. "{0},{1},{2}程序给你准备好了,{3}快来试试看吧!".format(
  284. greeting | random,
  285. assistant2 | random,
  286. program_name,
  287. ("这个时间"~ city ~"有超过"~ approx_fraction(user_proportion) ~"的"~ (user2 |random) ~"都在用它," if user_proportion >= 30 else "")
  288. ),
  289. "{0}好呀,根据全网用户的使用偏好,我帮你选好了{1}程序,你放心用就好了。".format(
  290. period,
  291. program_name
  292. ),
  293. "{0}好呀,小优发现大家都爱用{1}程序,今天我们也来试试吧。".format(
  294. period,
  295. program_name
  296. ),
  297. "{0},为你准备好了全网使用率最高的{1}程序,来试试效果怎么样吧。".format(
  298. assistant1 | random,
  299. program_name
  300. ),
  301. "{0}!{1},{2}程序大家用着还不错,快启动体验一下吧。".format(
  302. greeting | random,
  303. assistant2 | random,
  304. program_name
  305. ),
  306. "{0}!{1},今天我们来试试这个人气最高的程序吧。".format(
  307. greeting | random,
  308. assistant2 | random
  309. )
  310. ] | random }}
  311. {% endif %}
  312. {% else %}
  313. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  314. {% endif %}
  315. """
  316. # 定制模板
  317. value_custom_second_key="broadcast-template-jinja:single_card:wash:time_custom"
  318. # def key_custom_fun(zone_id:str):
  319. # return "broadcast-template-jinja:"+type_id+":"+zone_id+":time_made_popularity:2"
  320. value_custom="""
  321. {% set program_id = program_id | string | trim %}
  322. {% set program_name = program_name_map.get(program_id) %}
  323. {% if program_name %}
  324. {%set commands_text = commands_params(changed_params) | trim %}
  325. {% if rerank_reason |upper == "PIN_CONSECUTIVE" %}
  326. {{[
  327. "{0}好呀,小优发现你最近几次洗衣都喜欢用{1}程序,{2}给你准备好了。".format(period, program_name,
  328. commands_text~"这个使用习惯" if commands_text else ""
  329. ),
  330. "{0},发现你最近几次洗衣都使用{1},{2}给你准备好了。".format(assistant1 | random, program_name,
  331. commands_text~"," if commands_text else ""
  332. ),
  333. "{0},为你推荐最近几次常用的{1}程序,{2}赶快启动吧!".format(assistant2 | random, program_name,
  334. commands_text~"," if commands_text else ""
  335. ),
  336. "{0},最懂你的小优来啦,你最近几次洗衣都使用了{1}程序,{2}这次还这么用吧。".format(greeting |random, program_name,
  337. commands_text~"," if commands_text else ""
  338. ),
  339. "又能帮你洗衣服了,小优很开心哦。前几次洗衣你都使用{0}程序,我猜你这次还想用它。".format(
  340. program_name
  341. )
  342. ] | random
  343. }}
  344. {% elif rerank_reason |upper == "PIN_WEEKLY" %}
  345. {%set feature_week_name="每周这个时间都喜欢用"%}
  346. {{[
  347. "{0}好呀,小优发现你{1}{2}程序,{3}给你准备好了。".format(
  348. period,
  349. feature_week_name,
  350. program_name,
  351. commands_text~"," if commands_text else ""
  352. ),
  353. "{0}好呀,小优准备了你{1}的{2}程序。{3}快来启动吧。".format(
  354. period,
  355. feature_week_name,
  356. program_name,
  357. commands_text~"," if commands_text else ""
  358. ),
  359. "{0},{1},推荐你{2}的{3}程序。{4}".format(
  360. greeting |random,
  361. assistant1 | random,
  362. feature_week_name,
  363. program_name,
  364. commands_text~"。" if commands_text else ""
  365. ),
  366. "{0},你{1}的{2}程序,{3}给你准备好了。".format(
  367. assistant1 | random,
  368. feature_week_name,
  369. program_name,
  370. commands_text~"这个使用习惯" if commands_text else ""
  371. ),
  372. "{0},小优准备了你{1}的{2}程序,{3}赶快启动吧!".format(
  373. assistant2 | random,
  374. feature_week_name,
  375. program_name,
  376. commands_text~"," if commands_text else ""
  377. )
  378. ] | random}}
  379. {% elif feature_name!="" %}
  380. {{ [
  381. "{0}好呀,小优发现你{1}{2}程序,{3}给你准备好了。".format(
  382. period,
  383. feature_name,
  384. program_name,
  385. commands_text~"," if commands_text else ""
  386. ),
  387. "{0}好呀,小优准备了你{1}的{2}程序。{3}快来启动吧".format(
  388. period,
  389. feature_name,
  390. program_name,
  391. commands_text~"。" if commands_text else ""
  392. ),
  393. "{0}好呀,{1}程序已经准备就绪了,它可是你{2}的程序。{3}赶快启动吧".format(
  394. period,
  395. program_name,
  396. feature_name,
  397. commands_text~"的习惯参数也帮你设置好了。" if commands_text else ""
  398. ),
  399. "{0},{1},推荐你{2}的{3}程序,{4}".format(
  400. greeting | random,
  401. assistant1 | random,
  402. feature_name,
  403. program_name,
  404. commands_text~"。" if commands_text else ""
  405. ),
  406. "{0},{1},为你准备了你{2}的{3}程序。{4}".format(
  407. greeting | random,
  408. assistant1 | random,
  409. feature_name,
  410. program_name,
  411. commands_text~"。" if commands_text else ""
  412. ),
  413. "{0},你{1}的{2}程序{3}".format(
  414. assistant2 | random,
  415. feature_name,
  416. program_name,
  417. "和"~commands_text~"的习惯参数给你准备好了。" if commands_text else ",给你准备好了。"
  418. ),
  419. "{0},为你推荐{1}的{2}程序,{3}赶快启动吧!".format(
  420. assistant2 | random,
  421. feature_name,
  422. program_name,
  423. commands_text~"。" if commands_text else ""
  424. ),
  425. "{0},你{1}的{2}程序,{3}已经准备就绪。启动前,记得检查衣物口袋哦。".format(
  426. assistant2 | random,
  427. feature_name,
  428. program_name,
  429. commands_text~"。" if commands_text else ""
  430. ),
  431. "我发现你喜欢这么用,我给你准备好了,现在开始洗吗?",
  432. "你懂洗衣,我懂你,准备好了,快开始洗吧。"
  433. ]| random }}
  434. {% else %}
  435. {{ "您好,推荐您常用的{}程序,已准备好了,快开始启动吧。".format(program_name) }}
  436. {% endif %}
  437. {% else %}
  438. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  439. {% endif %}
  440. """
  441. # 天气模板--二级key
  442. value_weather_second_key="broadcast-template-jinja:single_card:wash:time_weather"
  443. value_weather = """
  444. {% set wd_link = wd_link | string |trim %}
  445. {% if wd_link in ['1', '开'] %}
  446. {% set wd_link = '1' %}
  447. {% endif %}
  448. {% set washdry = washdry | string |trim %}
  449. {{
  450. [ prefix_message |trim,
  451. [
  452. "今天阴天,洗完烘干更省心哦。" if weather == '阴' else
  453. "天气预报今天有{},洗完烘干更省心哦。".format(weather) if weather in ['小雨','中雨','大雨','暴雨','小雪','中雪','大雪','暴雪','雾霾','中度雾霾','重度雾霾','沙尘'] else
  454. "今天天气不太好,洗完烘干更省心哦。"
  455. ] | first if washdry == "_wd" else
  456. [
  457. [
  458. "今天阴天,晾晒衣物会比较慢,帮你打开洗烘联动啦。",
  459. "今天阴天,晾晒衣物会比较慢,洗烘联动更省心哦。"
  460. ] | random if weather == '阴' and wd_link == "1" else
  461. "今天阴天,室外晾晒衣物会比较慢,建议您在室内晾晒。" if weather == '阴' else
  462. [
  463. "今天预报有{},不适合室外晾晒,帮你打开洗烘联动啦。".format(weather),
  464. "今天预报有{},不适合室外晾晒,洗烘联动更省心哦。".format(weather)
  465. ] | random if weather in ['小雨','中雨','大雨','暴雨','小雪','中雪','大雪','暴雪'] and wd_link == "1" else
  466. "天气预报今天有{},建议您在室内晾晒。".format(weather) if weather in ['小雨','中雨','大雨','暴雨','小雪','中雪','大雪','暴雪'] else
  467. [
  468. "今天有{},室外晾晒容易导致二次污染,帮你打开洗烘联动啦。".format(weather),
  469. "今天有{},室外晾晒容易导致二次污染,洗烘联动更省心哦。".format(weather)
  470. ] | random if weather in ['雾霾','中度雾霾','重度雾霾','沙尘'] and wd_link == "1" else
  471. "天气预报今天有{},室外晾晒容易导致二次污染,建议您在室内晾晒。".format(weather) if weather in ['雾霾','中度雾霾','重度雾霾','沙尘'] else
  472. [
  473. "今天天气不太好,帮你打开洗烘联动啦。",
  474. "今天天气不太好,洗烘联动更省心哦。"
  475. ] | random if wd_link == "1" else
  476. "今天天气不太好,建议您在室内晾晒。"
  477. ] | first
  478. ]| reject("equalto", "") | join("")
  479. }}
  480. """
  481. #=====季节模板
  482. value_season_second_key="broadcast-template-jinja:single_card:wash:time_season"
  483. value_season="""
  484. {% set program_id = program_id | string | trim %}
  485. {% set program_name = program_name_map.get(program_id) %}
  486. {{ [
  487. "立春快乐,春风送暖,是时候准备好轻盈的春装了。{}".format(
  488. "为您推荐"~program_name~"程序,应对春季多变天气,轻松打理出行装备。"
  489. if program_id == '52' else "")
  490. if time_term == '立春' and filter_rule_code== 'time_season_in' else
  491. "立春时节,是时候让厚重冬衣退役啦。{}".format(
  492. "为您推荐"~program_name~"程序,温和洗净,将暖意封存。" if program_id in ["3","10"] else "")
  493. if time_term == '立春' and filter_rule_code== 'time_season_storage' else
  494. "立夏时节,暑气渐长。轻薄的夏日穿搭该从箱底翻出来洗洗啦。{}".format(
  495. "为您推荐"~program_name~"程序,温和洗净,抚平褶皱,让您的夏日清爽舒适。" if program_id in ["22","1"] else "")
  496. if time_term == '立夏' and filter_rule_code== 'time_season_in' else
  497. "立夏潮闷,春装收纳正当时。{}".format(
  498. "推荐使用"~program_name~"程序,彻底洗净风尘,便于安心久存。" if program_id == '52' else "")
  499. if time_term == '立夏' and filter_rule_code== 'time_season_storage' else
  500. "立秋已至,暑去凉来。是时候洗净压箱底的秋装,准备添衣了。{}".format(
  501. "为您推荐"~program_name~"程序,温和洁净,守护面料防水与防风性能,伴您从容出行。" if program_id == '52' else "")
  502. if time_term == '立秋' and filter_rule_code== 'time_season_in' else
  503. "立秋换季,夏装可以功成身退啦。{}".format(
  504. "推荐使用"~program_name~"程序,温和洗净,防止变形与泛黄,帮您留住夏日风采。"
  505. if program_id in ["22","1"] else "")
  506. if time_term == '立秋' and filter_rule_code== 'time_season_storage' else
  507. "立冬安康,寒潮将至。保暖的冬装该登场了。{}".format(
  508. "为您推荐"~program_name~"程序,温和洁净,让衣物恢复蓬松柔软,为您锁住冬日温暖。" if program_id in ["3","10"] else "")
  509. if time_term == '立冬' and filter_rule_code== 'time_season_in' else
  510. "立冬时节,薄款秋装该收纳入库啦。{}".format(
  511. "为您推荐"~program_name~"程序,温和洁净,让您的衣物保持最佳状态,静待明年春日。" if program_id == '52' else "")
  512. if time_term == '立冬' and filter_rule_code== 'time_season_storage'
  513. ]| random}}
  514. """
  515. #关怀模板
  516. value_care_second_key="broadcast-template-jinja:single_card:wash:time_care"
  517. value_care = """
  518. {# 从归一化后的 care 字典中读取,active = 1 表示已开启 #}
  519. {% set night_wash_on = care.get("night_wash", {}).get("active", 0) == 1 %}
  520. {% set night_wash_name = care.get("night_wash", {}).get("display_name", "夜间洗") %}
  521. {% set wind_cruise_on = care.get("wind_cruise", {}).get("active", 0) == 1 %}
  522. {% set wind_cruise_name = care.get("wind_cruise", {}).get("display_name", "风巡航") %}
  523. {{ [prefix_message |trim, [
  524. ["夜深了,帮你打开{0}和{1}功能啦。".format(night_wash_name, wind_cruise_name) ,
  525. "时间有点晚了,已为你开启{0}和{1},衣物久放也不闷。".format(night_wash_name, wind_cruise_name),
  526. "{0}已开启,静音洗衣,{1}为您守护衣物至天明。".format(night_wash_name, wind_cruise_name),
  527. "已开启{0}自动降噪,并开启{1}防异味。".format(night_wash_name, wind_cruise_name)
  528. ] |random if night_wash_on and wind_cruise_on else
  529. ["夜深了,帮你打开{0}功能,静音不扰眠。".format(night_wash_name),
  530. "时间有点晚了,我会静悄悄的。",
  531. "夜间洗衣,已自动开启静音洗涤,守护您的安宁。",
  532. "夜洗功能也准备好了,洗衣机会低噪运行,让您静享安宁。"
  533. ] |random if night_wash_on else
  534. ["夜深了,帮你打开{},智能保管衣物。".format(wind_cruise_name) ,
  535. "时间有点晚了,{}功能可以帮你守护衣物到天明。".format(wind_cruise_name),
  536. "夜间洗衣,帮你开启{}了,衣物久放也不用怕。".format(wind_cruise_name),
  537. "{}也准备好了,洗完会帮你智能保管衣物。".format(wind_cruise_name)
  538. ]|random if wind_cruise_on else
  539. ""
  540. ] | first] | reject("equalto", "") | join("") }}
  541. """
  542. #=====环保模板
  543. value_env_second_key="broadcast-template-jinja:single_card:wash:time_environmental"
  544. value_env="""
  545. {{ [prefix_message |trim,"马上就到错峰用电时间段了,建议您预约洗护。"] |reject("equalto", "") | join("")}}
  546. """
  547. #====健康模板
  548. value_health_second_key="broadcast-template-jinja:single_card:wash:time_health"
  549. value_health="""
  550. {% set program_id = program_id | string | trim %}
  551. {% set program_name = program_name_map.get(program_id) %}
  552. {{"你的洗衣机该清洁了,快启用{}程序给它洗个澡吧!注意不要放入衣服和洗衣液哦。".format(program_name)}}
  553. """
  554. #====健康2模板——杀菌
  555. value_health2_second_key="broadcast-template-jinja:single_card:wash:time_health_2"
  556. value_health2="""
  557. {% set health2_features = health2_features | string | trim %}
  558. {{"最近天气湿度较高,帮你打开了{}功能,杀菌消毒更放心哦。".format(health2_features)}}
  559. """
  560. #================ 写入X11洗衣机模板==========================================
  561. # 通用
  562. # write_multi_common_key(type_id, zone_ids, value_common_second_key)
  563. write_jinja(value_common_second_key, value_common, notify=True)
  564. # 人气
  565. # write_multi_key("time_made_popularity", zone_ids, popular_ids, type_id, value_popular_second_key)
  566. write_jinja(value_popular_second_key,value_popular, notify=True)
  567. # # 定制
  568. # write_multi_key("time_made_popularity", zone_ids, custom_ids, type_id, value_custom_second_key)
  569. write_jinja(value_custom_second_key,value_custom, notify=True)
  570. # 天气
  571. # 写入多个指向同一个key
  572. # write_multi_key("time_weather", zone_ids, rectype_ids, type_id, value_weather_second_key)
  573. write_jinja(value_weather_second_key,value_weather, notify=True)
  574. # # 季节
  575. # write_multi_key("time_season_storage", zone_ids, rectype_ids, type_id, value_season_second_key)
  576. # write_multi_key("time_season_in", zone_ids, rectype_ids, type_id, value_season_second_key)
  577. write_jinja(value_season_second_key,value_season, notify=True)
  578. # # 关怀
  579. # write_multi_key("time_care", zone_ids, rectype_ids, type_id, value_care_second_key)
  580. write_jinja(value_care_second_key,value_care, notify=True)
  581. # 环保
  582. # write_multi_key("time_environmental", zone_ids, rectype_ids, type_id, value_env_second_key)
  583. write_jinja(value_env_second_key,value_env, notify=True)
  584. # # 健康
  585. # write_multi_key("time_health", zone_ids, rectype_ids, type_id, value_health_second_key)
  586. write_jinja(value_health_second_key,value_health, notify=True)
  587. # 健康2杀菌
  588. # write_multi_key("time_health_2", zone_ids, rectype_ids, type_id, value_health2_second_key)
  589. write_jinja(value_health2_second_key,value_health2, notify=True)