Skill: patches429/films-search (version 0.1.0)

--- name: films-search version: "0.1.0" description: "搜索影视资源（电影、电视剧、动漫），从夸克网盘、百度网盘、阿里云盘、UC网盘获取资源链接。触发词：找电影、找剧、影视资源、下载链接、网盘资源、找片、电影下载、夸克资源。" official: false --- # Films Search Skill 搜索影视资源（电影、电视剧、动漫），通过实时爬虫深度抓取资源页面，从各网盘平台获取公开分享的资源链接。 ## 前置条件 - **web-search** skill（必需，用于搜索发现资源页面） - **Python 3**（必需，用于 cloudscraper 深度页面抓取。依赖首次运行时自动安装到 `.venv`） ## 命令 ### 搜索资源 ```bash bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" search "关键词" [选项] ``` **选项：** | 参数 | 说明 | 默认值 | | --------------- | ----------------------------------------------------- | ------ | | `--pan <type>` | 筛选网盘类型: `quark`, `baidu`, `aliyun`, `uc`, `all` | `all` | | `--quality <q>` | 筛选画质: `4k`, `1080p`, `720p`, `all` | `all` | | `--limit <n>` | 每个平台最大结果数 | `5` | | `--engine <e>` | 搜索引擎: `deep`, `web` | `deep` | **引擎说明：** - `deep`（默认，推荐）— web-search 搜索发现资源页面 + cloudscraper 深度抓取提取网盘链接和提取码，结果最准确 - `web` — 仅从 web-search 搜索引擎摘要中提取链接（速度快，但准确率较低，不做深度抓取） **示例：** ```bash # 搜索所有平台的资源（默认使用深度搜索） bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" search "流浪地球2" # 只搜夸克网盘 4K 资源 bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" search "流浪地球2" --pan quark --quality 4k # 限制结果数量 bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" search "流浪地球2" --limit 10 # 使用浅层搜索（不深度抓取页面） bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" search "流浪地球2" --engine web ``` Windows 系统使用 PowerShell 脚本： ```powershell powershell -File "$SKILLS_ROOT/films-search/scripts/film-search.ps1" search "流浪地球2" --pan quark ``` ### 热门推荐 ```bash bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" hot "2025年热门电影" ``` 本质上是以推荐类关键词调用搜索，返回相关网盘资源。 ### 解析跳转链接 ```bash bash "$SKILLS_ROOT/films-search/scripts/film-search.sh" resolve "https://example.com/goto/xxx" ``` 当搜索结果中的链接需要二次跳转时，用此命令解析出真实网盘地址。 ## Agent 使用流程 1. 用户说「帮我找 XXX 电影」→ 执行 `search "XXX"` 2. 解析返回的 JSON，提取网盘链接 3. 按网盘类型和画质分组呈现给用户 4. 如果结果中有提取码 (`extractCode`)，一并展示给用户 5. 如果结果中有 `pageUrl` 但没有直接 `url`，用 `resolve` 命令获取真实地址 **示例对话：** > 用户：帮我找一下流浪地球2的夸克网盘资源，要4K的 > > Agent： > > 1. 执行 `search "流浪地球2" --pan quark --quality 4k` > 2. 从 JSON 结果中取出匹配项 > 3. 返回：标题 + 画质 + 夸克网盘链接 + 提取码（如有） ## 输出格式 所有命令输出 JSON，结构如下： ```json { "success": true, "data": { "query": "流浪地球2", "total": 5, "results": [ { "title": "资源标题", "pan": "quark", "url": "https://pan.quark.cn/s/xxx", "quality": "4K", "extractCode": "ab12", "source": "deep-search", "pageUrl": "https://example.com/resource/123" } ] } } ``` **字段说明：** - `pan`: 网盘类型 — `quark`(夸克), `baidu`(百度), `aliyun`(阿里), `uc`(UC), `magnet`(磁力) - `quality`: 检测到的画质 — `4K`, `1080P`, `720P`, 空字符串表示未检测到 - `source`: 结果来源 — `deep-search`(深度抓取), `web-search`(搜索摘要) - `url`: 网盘分享链接（可直接访问） - `extractCode`: 提取码/密码（如果检测到） - `pageUrl`: 结果来源页面 URL ## 配置 编辑 `films-search/.env` 可自定义偏好： ```bash # 偏好的网盘类型（逗号分隔，排在前面的优先展示） FILM_SEARCH_PREFERRED_PAN=quark,aliyun,baidu,uc # 深度搜索开关（推荐开启） FILM_SEARCH_DEEP_ENABLED=true # 每次搜索最多访问的结果页面数 FILM_SEARCH_DEEP_MAX_PAGES=6 # 并发抓取页面数 FILM_SEARCH_DEEP_CONCURRENCY=4 ``` ## 注意事项 - 搜索建议使用**中文片名**，效果最好 - 深度搜索（`--engine deep`）比浅层搜索多 2-3 秒，但结果准确得多 - 首次使用时会自动安装 Python cloudscraper 到 `.venv`（需要 Python 3） - 深度搜索需要 web-search skill 启用，首次搜索可能需要等待浏览器启动 - 网盘分享链接可能随时失效，建议尽快使用 ## 免责声明 本工具仅供个人学习和研究使用。不托管、不分发、不提供任何版权内容，仅聚合搜索引擎上公开可访问的链接。请遵守所在地区的法律法规。

path: requirements.txt
content: cloudscraper>=1.2.71


path: scripts/film-search.sh
content: #!/usr/bin/env bash
# Films Search - 影视资源搜索 CLI 入口
# 支持 macOS / Linux / Windows (Git Bash / WSL)

set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILL_DIR="$(dirname "$SCRIPT_DIR")"

# ---- Resolve Node.js runtime ----
NODE_BIN=""
NODE_ENV_PREFIX=()

if command -v node > /dev/null 2>&1; then
  NODE_BIN="node"
elif [ -n "${LOBSTERAI_ELECTRON_PATH:-}" ] && [ -x "${LOBSTERAI_ELECTRON_PATH}" ]; then
  NODE_BIN="$LOBSTERAI_ELECTRON_PATH"
  NODE_ENV_PREFIX=("ELECTRON_RUN_AS_NODE=1")
else
  echo '{"success":false,"error":"未找到 Node.js 运行时。请安装 Node.js 或确保 LobsterAI Electron 可用。"}' >&2
  exit 1
fi

# ---- Load .env configuration ----
if [ -f "$SKILL_DIR/.env" ]; then
  set -a
  # shellcheck disable=SC1091
  source "$SKILL_DIR/.env" 2>/dev/null || true
  set +a
fi

# ---- Python env pre-check (for deep search engine) ----
if [ -d "$SKILL_DIR/.venv" ] && [ -f "$SKILL_DIR/.venv/bin/python3" ]; then
  export FILM_SEARCH_PYTHON_PATH="$SKILL_DIR/.venv/bin/python3"
elif command -v python3 > /dev/null 2>&1; then
  export FILM_SEARCH_PYTHON_PATH="python3"
fi

# ---- Handle @file syntax for non-ASCII keywords ----
args=()
if [ $# -gt 0 ]; then
  args=("$@")
  for i in "${!args[@]}"; do
    if [[ "${args[$i]}" == @* ]]; then
      filepath="${args[$i]:1}"
      if [ -f "$filepath" ]; then
        args[$i]="$(cat "$filepath")"
      fi
    fi
  done
fi

# ---- Execute core script ----
if [ ${#NODE_ENV_PREFIX[@]} -gt 0 ]; then
  exec env "${NODE_ENV_PREFIX[@]}" "$NODE_BIN" "$SCRIPT_DIR/film-search.js" "${args[@]+"${args[@]}"}"
else
  exec "$NODE_BIN" "$SCRIPT_DIR/film-search.js" "${args[@]+"${args[@]}"}"
fi


Security scan verdicts — ClawScan: suspicious | static analysis:  | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)