From 0e311df69055001617814ec7d6d78138e0357550 Mon Sep 17 00:00:00 2001 From: hjdhnx Date: Sun, 27 Nov 2022 21:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=BA=90=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E7=9A=84=E7=AD=9B=E9=80=89=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/rules.db | Bin 155648 -> 155648 bytes controllers/admin.py | 7 ++++++- controllers/cms.py | 3 ++- controllers/vod.py | 15 ++++++++++++--- js/drpy.js | 2 +- js/version.txt | 2 +- utils/parser.py | 6 +++++- 7 files changed, 27 insertions(+), 8 deletions(-) diff --git a/base/rules.db b/base/rules.db index 16f9a4d012b56df0dd6a04f8ae252671ceeed4a3..0d6d2ac3941345fca16948cd310b63135222c099 100644 GIT binary patch delta 30 mcmZoTz}awsbAmLZ$V3@uMv;vP3%VH%ni+exGxjk4zYGAL$qMWM delta 30 mcmZoTz}awsbAmLZ@I)DBM&XSK3%VH%n;CnyGxjk4zYGALt_te_ diff --git a/controllers/admin.py b/controllers/admin.py index 45d42ae..0054512 100644 --- a/controllers/admin.py +++ b/controllers/admin.py @@ -89,7 +89,12 @@ def admin_view_rule(name): if burl != rurl: jscode = parser.getJs(name, 'js') # rjscode = render_template_string(jscode, env=env) - rjscode = render_template_string(jscode, **env) + rjscode = jscode + for k in env: + # print(f'${k}', f'{env[k]}') + if f'${k}' in rjscode: + rjscode = rjscode.replace(f'${k}', f'{env[k]}') + # rjscode = render_template_string(jscode, **env) if rjscode.strip() == jscode.strip(): # 无需渲染才代理 return redirect(rurl) else: diff --git a/controllers/cms.py b/controllers/cms.py index 47c0538..2544b07 100644 --- a/controllers/cms.py +++ b/controllers/cms.py @@ -710,6 +710,7 @@ class CMS: if fl is None: fl = {} + # print(f'fl:{fl}') if self.filter_def and isinstance(self.filter_def,dict): try: if self.filter_def.get(fyclass) and isinstance(self.filter_def[fyclass],dict): @@ -740,8 +741,8 @@ class CMS: url += self.filter_url else: # 第二种情况直接替换关键字为待拼接的结果后面渲染,适用于 ----fypage.html的情况 url = url.replace('fyfilter', self.filter_url) + # print(f'url渲染:{url}') url = render_template_string(url,fl=fl) - # fl_url = render_template_string(self.filter_url,fl=fl) # if not 'fyfilter' in url: # 第一种情况,默认不写fyfilter关键字,视为直接拼接在链接后面当参数 # if not url.endswith('&') and not fl_url.startswith('&'): diff --git a/controllers/vod.py b/controllers/vod.py index b590727..1ad67dd 100644 --- a/controllers/vod.py +++ b/controllers/vod.py @@ -60,7 +60,11 @@ def search_one(rule, wd, before: str = '',env:dict=None,app=None): if env: # 渲染字符串文本 render_template_string 必须带 flask的上下文 with app.app_context(): - jscode = render_template_string(jscode, **env) + for k in env: + # print(f'${k}', f'{env[k]}') + if f'${k}' in jscode: + jscode = jscode.replace(f'${k}', f'{env[k]}') + # jscode = render_template_string(jscode, **env) # if '007' in rule: # print(rule,jscode) jscode = before + jscode + end_code @@ -253,8 +257,13 @@ def vod_home(): with open(js_path,encoding='utf-8') as f2: jscode = f2.read() env = get_env() - if env: - jscode = render_template_string(jscode,**env) + for k in env: + # print(f'${k}',f'{env[k]}') + if f'${k}' in jscode: + jscode = jscode.replace(f'${k}',f'{env[k]}') + # print(env) + # if env: + # jscode = render_template_string(jscode,**env) # print(jscode) jscode = before + jscode + end_code # print(jscode) diff --git a/js/drpy.js b/js/drpy.js index 81b7fd3..df0c0f4 100644 --- a/js/drpy.js +++ b/js/drpy.js @@ -8,7 +8,7 @@ var rule = { quickSearch:1, filterable:1, // 分类链接fypage参数支持1个()表达式 - url:'/?pg=fypage&class=fyclass&douban={{douban}}', + url:'/?pg=fypage&class=fyclass&douban=$douban', filter_url:'fl={{fl}}', headers:{ "Host": "frodo.douban.com", diff --git a/js/version.txt b/js/version.txt index 3c9a22a..339c894 100644 --- a/js/version.txt +++ b/js/version.txt @@ -1 +1 @@ -3.9.25beta5 \ No newline at end of file +3.9.26 \ No newline at end of file diff --git a/utils/parser.py b/utils/parser.py index 8e0b33c..64e1b7f 100644 --- a/utils/parser.py +++ b/utils/parser.py @@ -87,7 +87,11 @@ def toJs(jsPath,jsRoot='cache',env=None): js = fp.read() if env: # js = render_template_string(js,env=env) - js = render_template_string(js,**env) + for k in env: + # print(f'${k}', f'{env[k]}') + if f'${k}' in js: + js = js.replace(f'${k}', f'{env[k]}') + # js = render_template_string(js,**env) response = make_response(js) response.headers['Content-Type'] = 'text/javascript; charset=utf-8' return response -- GitLab