From c2425392a64de970a49894cf30f145f05c8922cc Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Tue, 20 May 2025 02:01:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B5=84=E6=BA=90=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E5=92=8C=E8=B0=B7=E6=AD=8C=E6=90=9C=E7=B4=A2=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=99=BA=E8=83=BD=E5=A1=AB=E5=85=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AF=B9=E4=B8=AD=E6=96=87=E5=AD=A3=E6=95=B0?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 使用去除季数的任务名称进行搜索,获取更完整的搜索结果 2. 支持解析中文季序号,用于在智能填充时自动识别季序号 --- app/run.py | 53 ++++++++++++-- app/templates/index.html | 144 ++++++++++++++++++++++++++++++++++----- 2 files changed, 175 insertions(+), 22 deletions(-) diff --git a/app/run.py b/app/run.py index 0de4a43..64791a0 100644 --- a/app/run.py +++ b/app/run.py @@ -263,6 +263,40 @@ def get_task_suggestions(): return jsonify({"success": False, "message": "未登录"}) query = request.args.get("q", "").lower() deep = request.args.get("d", "").lower() + + # 提取剧名,去除季数信息 + def extract_show_name(task_name): + # 清理任务名称中的连续空格和特殊符号 + clean_name = task_name.replace('\u3000', ' ').replace('\t', ' ') + clean_name = re.sub(r'\s+', ' ', clean_name).strip() + + # 匹配常见的季数格式 + # 例如:黑镜 - S07、人生若如初见 - S01、折腰.S01、音你而来-S02、快乐的大人 S02 + season_patterns = [ + r'^(.*?)[\s\.\-_]+S\d+$', # 黑镜 - S07、折腰.S01、音你而来-S02 + r'^(.*?)[\s\.\-_]+Season\s*\d+$', # 黑镜 - Season 1 + r'^(.*?)\s+S\d+$', # 快乐的大人 S02 + r'^(.*?)[\s\.\-_]+S\d+E\d+$', # 处理 S01E01 格式 + r'^(.*?)\s+第\s*\d+\s*季$', # 处理 第N季 格式 + r'^(.*?)[\s\.\-_]+第\s*\d+\s*季$', # 处理 - 第N季 格式 + r'^(.*?)\s+第[一二三四五六七八九十零]+季$', # 处理 第一季、第二季 格式 + r'^(.*?)[\s\.\-_]+第[一二三四五六七八九十零]+季$', # 处理 - 第一季、- 第二季 格式 + ] + + for pattern in season_patterns: + match = re.match(pattern, clean_name, re.IGNORECASE) + if match: + show_name = match.group(1).strip() + # 去除末尾可能残留的分隔符 + show_name = re.sub(r'[\s\.\-_]+$', '', show_name) + return show_name + + # 如果没有匹配到季数格式,返回原名称 + return clean_name + + # 处理搜索关键词,提取剧名 + search_query = extract_show_name(query) + try: cs_data = config_data.get("source", {}).get("cloudsaver", {}) if ( @@ -276,23 +310,34 @@ def get_task_suggestions(): cs_data.get("password", ""), cs_data.get("token", ""), ) - search = cs.auto_login_search(query) + # 使用处理后的搜索关键词 + search = cs.auto_login_search(search_query) if search.get("success"): if search.get("new_token"): cs_data["token"] = search.get("new_token") Config.write_json(CONFIG_PATH, config_data) search_results = cs.clean_search_results(search.get("data")) + # 在返回结果中添加实际使用的搜索关键词 return jsonify( - {"success": True, "source": "CloudSaver", "data": search_results} + { + "success": True, + "source": "CloudSaver", + "data": search_results + } ) else: return jsonify({"success": True, "message": search.get("message")}) else: base_url = base64.b64decode("aHR0cHM6Ly9zLjkxNzc4OC54eXo=").decode() - url = f"{base_url}/task_suggestions?q={query}&d={deep}" + # 使用处理后的搜索关键词 + url = f"{base_url}/task_suggestions?q={search_query}&d={deep}" response = requests.get(url) return jsonify( - {"success": True, "source": "网络公开", "data": response.json()} + { + "success": True, + "source": "网络公开", + "data": response.json() + } ) except Exception as e: return jsonify({"success": True, "message": f"error: {str(e)}"}) diff --git a/app/templates/index.html b/app/templates/index.html index 31c46bf..dc47931 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -483,7 +483,9 @@ 正在搜索中... - +