write_jinja_multi_down.py 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. import sys
  2. from pathlib import Path
  3. PROJECT_ROOT = Path(__file__).resolve().parents[2]
  4. sys.path.insert(0, str(PROJECT_ROOT))
  5. from pre_data.common.client_tools import write_jinja
  6. WASH_COMMON_KEY = "broadcast-template-jinja:multi_card:wash:common"
  7. value_w_common ="""
  8. {%- macro commands_params(changed_params) -%}
  9. {%- if changed_params is none or changed_params == {} or changed_params == "" -%}
  10. {{""}}
  11. {%- else -%}
  12. {%- set setTemp_raw = changed_params.get('setTemp') -%}
  13. {%- set speed_raw = changed_params.get('speed') -%}
  14. {%- set spinTime_raw = changed_params.get('spinTime') -%}
  15. {%- set washTime_raw = changed_params.get('washTime') -%}
  16. {%- set setTemp = setTemp_raw | int if setTemp_raw not in [none, ''] else none -%}
  17. {%- set speed = speed_raw | int if speed_raw not in [none, ''] else none -%}
  18. {%- set spinTime = spinTime_raw | int if spinTime_raw not in [none, ''] else none -%}
  19. {%- set washTime = washTime_raw | int if washTime_raw not in [none, ''] else none -%}
  20. {{[
  21. "水温常温" 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 "",
  22. "转速{}转".format(speed * 10) if speed is not in [none, 0, 65535] else "",
  23. "漂洗{}次".format(spinTime) if spinTime not in [none, '', 65535 ] else "",
  24. "洗涤{}分钟".format(washTime) if washTime not in [none, '', 0, 65535] and washTime <= 255 else ""
  25. ] | reject("equalto", "") | join(",") }}
  26. {%- endif -%}
  27. {%- endmacro -%}
  28. """
  29. # 人气模板
  30. WASH_POPULAR_KEY="broadcast-template-jinja:multi_card:wash:time_popular"
  31. value_w_popular = """
  32. {% set program_id = program_id | string | trim %}
  33. {% set prog = program_name_map.get(program_id) %}
  34. {% if prog %}
  35. {{ [
  36. "{0}程序,是{1}当前人气最高的程序哦。{2}".format(
  37. program_name_map[program_id].name,
  38. city,
  39. "它"~program_name_map[program_id].desc
  40. ),
  41. "{0}程序,在{1}人气最高哦。{2}".format(
  42. program_name_map[program_id].name,
  43. city,
  44. "它"~program_name_map[program_id].desc
  45. ),
  46. "{0}程序,在{1}很受欢迎呢。{2}".format(
  47. program_name_map[program_id].name,
  48. city,
  49. "它"~program_name_map[program_id].desc
  50. ),
  51. "{0}程序,是全网人气最高的程序哦。{1}".format(
  52. program_name_map[program_id].name,
  53. "它"~program_name_map[program_id].desc
  54. ),
  55. "{0}程序,在全网都很受欢迎呢。{1}".format(
  56. program_name_map[program_id].name,
  57. "它"~program_name_map[program_id].desc
  58. )
  59. ] | random }}
  60. {% else %}
  61. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  62. {% endif %}
  63. """
  64. # 定制模板
  65. WASH_CUSTOM_KEY = "broadcast-template-jinja:multi_card:wash:time_custom"
  66. value_w_made ="""
  67. {% set program_id = program_id | string | trim %}
  68. {% set prog = program_name_map.get(program_id) %}
  69. {% if prog %}
  70. {% if feature_name != "" %}
  71. {% set commands_text = commands_params(changed_params) %}
  72. {% if commands_text != "" %}
  73. {{ [[
  74. "{0}程序,是你{1}的程序呢".format(
  75. program_name_map[program_id].name,
  76. feature_name
  77. ),
  78. "发现你{0}{1}程序呢".format(
  79. feature_name,
  80. program_name_map[program_id].name
  81. ),
  82. "这是你{0}的程序呢".format(
  83. feature_name
  84. )
  85. ] | random,
  86. [
  87. commands_text ~ "的习惯参数也帮你记着了。",
  88. commands_text ~ "的习惯参数也帮你准备好了。",
  89. "AI守护帮你设置了习惯的" ~ commands_text ~ "。"
  90. ] | random] | reject("equalto", "") | join(",") }}
  91. {% else %}
  92. {{ [
  93. "{0}程序,是你{1}的程序呢,{2}".format(
  94. program_name_map[program_id].name,
  95. feature_name,
  96. "它" ~ program_name_map[program_id].desc
  97. ),
  98. "发现你{0}{1}程序呢。{2}".format(
  99. feature_name,
  100. program_name_map[program_id].name,
  101. "它" ~ program_name_map[program_id].desc
  102. ),
  103. "这是你{0}的程序呢,{1}".format(
  104. feature_name,
  105. "它" ~ program_name_map[program_id].desc
  106. )
  107. ] | random }}
  108. {% endif %}
  109. {% else %}
  110. 帮你准备了{{program_name_map[program_id].name}}程序,它{{program_name_map[program_id].desc}}
  111. {% endif %}
  112. {% else %}
  113. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  114. {% endif %}
  115. """
  116. # 天气模板
  117. WASH_WEATHER_KEY = "broadcast-template-jinja:multi_card:wash:time_weather"
  118. value_w_weather = """
  119. {{ [
  120. [
  121. "今天阴天,晾晒衣物会比较慢,帮你打开洗烘联动啦。",
  122. "今天阴天,晾晒衣物会比较慢,洗烘联动更省心哦。"
  123. ] | random if weather == '阴' else
  124. [
  125. "今天预报有{},不适合室外晾晒,帮你打开洗烘联动啦。".format(weather),
  126. "今天预报有{},不适合室外晾晒,洗烘联动更省心哦。".format(weather)
  127. ] | random if weather in ['小雨','中雨','大雨','暴雨'] else
  128. [
  129. "今天预报有{},不适合室外晾晒,帮你打开洗烘联动啦。".format(weather),
  130. "今天预报有{},不适合室外晾晒,洗烘联动更省心哦。".format(weather)
  131. ] | random if weather in ['小雪','中雪','大雪','暴雪'] else
  132. [
  133. "今天有{},室外晾晒容易导致二次污染,帮你打开洗烘联动啦。".format(weather),
  134. "今天有{},室外晾晒容易导致二次污染,洗烘联动更省心哦。".format(weather)
  135. ] | random if weather in ['雾霾','中度雾霾','重度雾霾','沙尘暴'] else
  136. [
  137. "今天天气不太好,帮你打开洗烘联动啦。",
  138. "今天天气不太好,洗烘联动更省心哦。"
  139. ] |random
  140. ] | first }}
  141. """
  142. # 季节模板——当季推荐
  143. WASH_SEASON_IN_KEY = "broadcast-template-jinja:multi_card:wash:time_season_in"
  144. value_w_season_in = """
  145. {% set program_id = program_id | string | trim %}
  146. {% set prog = program_name_map.get(program_id) %}
  147. {% if prog %}
  148. {% set program_name = program_name_map[program_id].name %}
  149. {{ [
  150. "立春快乐,春风送暖,是时候准备好轻盈的春装了。{}".format(
  151. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  152. if program_name == '冲锋衣' else "")
  153. if time_term == '立春' else
  154. "立夏时节,暑气渐长。轻薄的夏日穿搭该拿出来洗洗啦。{}".format(
  155. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。"
  156. if program_name == '丝绸' else "")
  157. if time_term == '立夏' else
  158. "立秋已至,暑去凉来。是时候洗净压箱底的秋装,准备添衣了。{}".format(
  159. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  160. if program_name == '冲锋衣' else "")
  161. if time_term == '立秋' else
  162. "立冬安康,寒潮将至。保暖的冬装该登场了。{}".format(
  163. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。" if program_name == '羊毛' else
  164. "AI守护提醒您"~program_name~"衣物洗前记得拉好拉链,内外翻转后洗涤。" if program_name =="羽绒" else
  165. "")
  166. if time_term == '立冬'
  167. ]| first}}
  168. {% else %}
  169. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  170. {% endif %}
  171. """
  172. # 季节模板——收纳推荐
  173. WASH_SEASON_STORAGE_KEY = "broadcast-template-jinja:multi_card:wash:time_season_storage"
  174. value_w_season_storage = """
  175. {% set program_id = program_id | string | trim %}
  176. {% set prog = program_name_map.get(program_id) %}
  177. {% if prog %}
  178. {% set program_name = program_name_map[program_id].name %}
  179. {{ [
  180. "立春时节,是时候洗好厚重衣物收纳起来啦。{}".format(
  181. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。" if program_name == '羊毛' else
  182. "AI守护提醒您羽绒衣物洗前记得拉好拉链,内外翻转后洗涤。" if program_name =="羽绒" else
  183. "")
  184. if time_term == '立春' else
  185. "立夏潮闷,春装收纳正当时。{}".format(
  186. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  187. if program_name == '冲锋衣' else "")
  188. if time_term == '立夏' else
  189. "立秋换季,夏装可以功成身退啦。{}".format(
  190. "AI守护提醒您使用"~program_name~"专用洗剂,洗护效果更佳哦。"
  191. if program_name == '丝绸' else "")
  192. if time_term == '立秋' else
  193. "立冬时节,薄款秋装该收起来啦。{}".format(
  194. "AI守护提醒您记得拉好拉链,将"~program_name~"内外翻转后洗涤,不用使用柔顺剂哦。"
  195. if program_name == '冲锋衣' else "")
  196. if time_term == '立冬'
  197. ]| first}}
  198. {% else %}
  199. 抱歉,ID为'{{ program_id }}'的程序不存在或暂未收录。
  200. {% endif %}
  201. """
  202. # 关怀模板
  203. SEASON_CARE_KEY = "broadcast-template-jinja:multi_card:wash:time_care"
  204. value_w_care = """
  205. {% set name_wash = "夜间洗" %}
  206. {% set name_wind = "延取防皱" %}
  207. {% set night_wash = washNight if washNight !="0" else ""%}
  208. {% set wind_cruise = WFreeCn if WFreeCn !="0" else ""%}
  209. {{ [
  210. ["夜深了,AI守护已为您开启{0}和{1}啦,衣服就放心交给我吧。".format(name_wash, name_wind) ,
  211. "时间有点晚了,已为你开启{0}和{1},衣物久放也不闷。".format(name_wash, name_wind),
  212. "{0}已开启,静音洗衣,不扰眠。{1}为您守护衣物至天明。".format(name_wash, name_wind),
  213. "AI守护已开启{0}和{1},降噪洗护,防止衣物产生异味和褶皱。".format(name_wash, name_wind)
  214. ] |random if night_wash and wind_cruise else
  215. ["夜深了,AI守护已为您开启{}功能,静音洗衣不扰眠。".format(name_wash),
  216. "时间有点晚了,我会静悄悄的。",
  217. "夜间洗衣,AI守护已自动开启静音洗涤,守护您的安宁。",
  218. "夜洗功能已开启,洗衣机会低噪运行,让您静享安宁。"
  219. ] |random if night_wash else
  220. ["夜深了,AI守护已帮你打开{},智能保管衣物。".format(name_wind) ,
  221. "时间有点晚了,{}功能会帮你守护衣物到天明。".format(name_wind),
  222. "夜间洗衣,帮你开启{}了,衣物久放也不用怕。".format(name_wind),
  223. "{}准备好了,洗完会帮你智能保管衣物。".format(name_wind)
  224. ]|random if wind_cruise else
  225. ""
  226. ] | first }}
  227. """
  228. # 环保模板
  229. WASH_ENV_KEY = "broadcast-template-jinja:multi_card:wash:time_environmental"
  230. value_w_environmental = """
  231. AI守护提醒您,马上就到错峰用电时间段了,建议您预约洗护。
  232. """
  233. # 健康模板
  234. WASH_HEALTH_KEY = "broadcast-template-jinja:multi_card:wash:time_health"
  235. value_w_health = """
  236. {% set program_id = program_id | string | trim %}
  237. {% set prog = program_name_map.get(program_id) %}
  238. {% if prog %}
  239. {% set health_name = program_name_map[program_id].name %}
  240. {{
  241. "您的洗衣筒需要清洁了,请及时使用{}程序清洗。".format(health_name) if remainderNum |int <= 0 else
  242. ""
  243. }}
  244. {%- endif -%}
  245. """
  246. # 默认模板+筒自洁
  247. WASH_BASIC_KEY = "broadcast-template-jinja:multi_card:wash:time_basic"
  248. value_w_basic = """
  249. {% set program_id = program_id | string | trim %}
  250. {% set program_data = program_name_map.get(program_id)%}
  251. {% set program_desc = program_data.desc if program_data else '' %}
  252. {% set program_name = program_data.name if program_data else '' %}
  253. {%set commands_text = commands_params(changed_params)%}
  254. {% if program_name %}
  255. {% if program_id == "13" %}
  256. {% set remainderNum = remainderNum | int %}
  257. {{
  258. "您的洗衣筒还很干净,暂时不需要清洁。" if remainderNum|int > 3 else
  259. "洗衣机快到清洁时间啦,先囤好筒洗剂,再洗几次衣服就该给内筒做清洁啦" if remainderNum |int <=3 and remainderNum |int >= 1 else
  260. ""
  261. }}
  262. {% elif commands_text %}
  263. {{
  264. ["AI守护为你准备好了,{0}程序最常用的{1}哦。".format(program_name,commands_text),
  265. "发现你使用{0}程序时,喜欢调节{1}呢,帮你准备好了。".format(program_name,commands_text),
  266. "{0}程序,已按照你的习惯备好,{1}直接启动就可以啦。".format(program_name,commands_text),
  267. "AI守护为你贴心定制 {0}程序,{1}已就绪。".format(program_name,commands_text),
  268. "根据你的使用习惯,{0} 已调整为{1}".format(program_name,commands_text)
  269. ]|random
  270. }}
  271. {% elif program_desc %}
  272. {{ "{0}程序{1}".format(program_name, program_desc) }}
  273. {% endif %}
  274. {% else %}
  275. {{
  276. [
  277. "AI守护会持续守护您的衣物健康。",
  278. "AI守护会根据衣物情况,自动帮你匹配最优洗护方案哦。",
  279. "衣服交给我你就放心吧。"
  280. ]|random
  281. }}
  282. {% endif %}
  283. """
  284. #通用模板
  285. write_jinja(WASH_COMMON_KEY, value_w_common, notify=True)
  286. #通用人气模板
  287. write_jinja(WASH_POPULAR_KEY, value_w_popular, notify=True)
  288. #通用定制模板
  289. write_jinja(WASH_CUSTOM_KEY, value_w_made, notify=True)
  290. #通用天气模板
  291. write_jinja(WASH_WEATHER_KEY, value_w_weather, notify=True)
  292. #通用当季模板
  293. write_jinja(WASH_SEASON_IN_KEY, value_w_season_in, notify=True)
  294. #通用换季模板
  295. write_jinja(WASH_SEASON_STORAGE_KEY, value_w_season_storage, notify=True)
  296. #通用关怀模板
  297. write_jinja(SEASON_CARE_KEY, value_w_care, notify=True)
  298. #通用环保模板
  299. write_jinja(WASH_ENV_KEY, value_w_environmental, notify=True)
  300. #通用健康模板
  301. write_jinja(WASH_HEALTH_KEY, value_w_health, notify=True)
  302. #通用默认模板
  303. write_jinja(WASH_BASIC_KEY, value_w_basic, notify=True)