Decentralization? We're still early!

Stremio WP:把 Stremio 流媒体管理整合到 WordPress

  • Stremio WP:把 Stremio 流媒体管理整合到 WordPress

    發布人 Brave 2026-03-19 04:09

    Stremio WP 是一款专为 自托管 Stremio 用户 打造的 WordPress 插件。它在你的 WordPress 站点与 Stremio Server(EngineFS)之间架起一座桥梁,让你无需离开浏览器,就能实时监控所有活跃的种子下载任务,一键在 VLC / IINA 中播放,甚至把文件直接推送到你的 Nextcloud 私有云。

    想象这样一个场景:你在 Stremio Web 上选好了一部电影,切回 WordPress 站点,下载进度、速度、Peers 数量一目了然 —— 下载完成后点一下,VLC 立即开始播放;或者点一下推送按钮,文件就安静地躺在了你的 Nextcloud 里,随时可以在任何设备上观看。

    Stremio WP 不是一个「又一个下载管理器」。它是一个以 WordPress 为操作中枢、以 EngineFS 为数据引擎、以 Nextcloud 为存储后端的 流媒体管理工作台,让你的自托管 Stremio 体验从命令行跃升到精致的 Web 界面。


    🏗️ 产品全景:一个插件,三层能力

    Stremio WP 的架构设计围绕三个核心层次展开,每一层都可以独立使用,也可以组合释放更强大的能力:

    ┌───────────────────────────────────────────────────────────┐
    │                      WordPress 站点                        │
    │                                                            │
    │   ┌────────────────────────────────────────────────────┐  │
    │   │              Stremio WP 插件 (v2.7.0)              │  │
    │   │                                                    │  │
    │   │   📊 实时监控层          ▶️ 播放控制层               │  │
    │   │   ├─ 下载速度/上传速度   ├─ VLC 一键启动            │  │
    │   │   ├─ Peers / Swarm 状态  ├─ IINA 一键启动 (macOS)  │  │
    │   │   ├─ 文件列表与大小      ├─ 复制流媒体 URL          │  │
    │   │   ├─ 下载进度条          └─ Stremio Web 快捷入口    │  │
    │   │   └─ 在线/离线状态指示                              │  │
    │   │                                                    │  │
    │   │   ☁️ 存储推送层          🔒 安全与权限层             │  │
    │   │   ├─ Nextcloud 一键推送  ├─ 登录用户/公开访问控制   │  │
    │   │   ├─ 零磁盘占用流式传输  ├─ SSRF 防护验证           │  │
    │   │   ├─ 推送状态实时追踪    ├─ REST API Nonce 认证     │  │
    │   │   └─ 原子锁防重复推送    └─ 输入过滤与清理          │  │
    │   └────────────────────────────────────────────────────┘  │
    │                           │                                │
    │                           ▼                                │
    │   ┌────────────────────────────────────────────────────┐  │
    │   │  Stremio Server (EngineFS)  ·  VLC / IINA 播放器   │  │
    │   │  Nextcloud (via Nextcloud WP)               │  │
    │   └────────────────────────────────────────────────────┘  │
    └───────────────────────────────────────────────────────────┘

    实时监控层 是基础 —— 一个 Shortcode 就能在任何页面嵌入下载监控面板。播放控制层 让监控不只是"看" —— 你可以直接操作。存储推送层 则打通了最后一公里 —— 下载完的内容自动进入你的私有云,在任何设备上随时取用。


    📊 实时下载监控 —— 你的 Stremio 仪表盘

    Stremio WP 的核心是一个功能丰富的实时下载监控面板。通过一个简单的 WordPress Shortcode [stremio_downloads],你可以在站点的任何页面或文章中嵌入这个面板。

    ⚡ 实时轮询,毫不延迟

    面板以可配置的间隔(默认 5 秒)持续轮询 EngineFS 的 /stats.json 接口,所有数据都在后台静默刷新 —— 无需手动点击刷新按钮,你看到的始终是最新状态。

    每个活跃的种子任务会以卡片形式展示,包含以下关键信息:

    • 📥 下载速度 / 上传速度 —— 实时带宽数据,数值自动换算为 KB/s、MB/s、GB/s 等人类可读格式
    • 👥 Peers / Swarm 状态 —— 当前连接的 Peers 数量与 Swarm 总大小,帮你判断资源健康度
    • 📦 文件列表与大小 —— 展开即可查看种子内的每一个文件,附带精确的文件大小
    • 📊 下载进度条 —— 直观的渐变色进度条(蓝色渐变),让你一眼看到完成百分比
    • 🟢 在线/离线状态 —— 顶部徽章实时指示 EngineFS 服务器连接状态,离线时自动标红

    🧠 智能元数据补全

    EngineFS 的 /stats.json 接口有一个已知的不足:它返回的种子数据经常缺少名称和文件列表。面对这种不完整的数据,大多数工具选择显示一串难以辨认的 Hash 值。

    Stremio WP 选择了一条更智能的路:自动补全。当检测到某个种子缺少名称或文件信息时,插件会自动请求该种子的独立 /{hash}/stats.json 端点,获取完整的元数据并合并到总览中。这个过程对用户完全透明 —— 你看到的始终是有意义的文件名,而不是一堆 40 位的十六进制字符串。

    普通工具看到的:
      ├─ 7a3f8c1b2d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a  ← 这是什么?
      └─ (无文件列表)
    
    Stremio WP 看到的:
      ├─ The.Matrix.1999.Remastered.2160p.UHD.BluRay  ← 自动补全
      └─ 📂 2 个文件 (12.8 GB)                         ← 自动获取

    这种「无感智能」的设计理念贯穿了整个插件 —— 技术细节被优雅地隐藏,用户只需要关注内容本身。

    🗑️ 种子管理:不只是看,还能操作

    监控面板不只是一个只读的仪表盘。每张种子卡片右上角都有一个删除按钮,点击即可直接向 EngineFS 发送销毁指令,释放资源。删除动画采用平滑的透明度和高度过渡,卡片会优雅地淡出消失。

    在后台,销毁操作采用了双端点容错策略:优先尝试更可靠的 /remove 接口,失败时自动回退到 /destroy 接口 —— 最大限度确保操作成功。


    ▶️ 一键播放 —— 从监控到观看,零摩擦

    下载的目的是观看,而 Stremio WP 把「从发现内容到开始播放」的路径压缩到了极致 —— 一次点击。

    🎬 VLC:自定义协议的巧妙设计

    浏览器有一个天然限制:它无法直接打开 http:// 链接到 VLC。Stremio WP 用一套精巧的协议桥接方案解决了这个问题:

    浏览器点击 ──► vlc-stream://your-site/sm-play/{hash}/{idx}/video.mkv
                            │
                            ▼
                   WordPress 路由拦截
                            │
                            ▼
                   302 重定向到 EngineFS
                            │
                            ▼
                http://stremio:11470/{hash}/{idx}
                            │
                            ▼
                       VLC 开始播放 🎬

    工作原理:插件注册了一个自定义的 vlc-stream:// 协议。当你点击「▶ VLC」按钮时,浏览器会将链接交给预注册的协议处理器,处理器将 vlc-stream:// 替换为 http://,然后调用 VLC 打开这个 HTTP 流。WordPress 端的 /sm-play/ 路由负责将请求 302 重定向到实际的 EngineFS 流地址。

    一次设置,永久有效。插件的后台设置页面内置了完整的安装指南,分别为 macOS 和 Linux 提供了一键复制的终端命令:

    • 🍎 macOS —— 自动编译一个 AppleScript 应用 VLCHandler.app,注册为 vlc-stream:// 协议的系统处理器
    • 🐧 Linux —— 自动创建一个 XDG .desktop 文件并通过 xdg-mime 注册协议关联

    🍎 IINA:macOS 用户的开箱即用体验

    如果你在 macOS 上使用 IINA 播放器,体验更为流畅 —— IINA 在安装时自动注册了 iina:// 协议,完全不需要任何额外配置。点击「▶ IINA」按钮,IINA 立即开始播放,就这么简单。

    📋 复制流 URL:给高级用户的灵活选择

    如果你使用的播放器既不是 VLC 也不是 IINA,或者你有其他用途(比如在智能电视上播放),「📋」按钮可以将 EngineFS 的原始 HTTP 流地址复制到剪贴板。按钮会短暂显示「✓」确认复制成功 —— 一个微小但贴心的交互细节。


    ☁️ Nextcloud 集成 —— 打通存储的最后一公里

    这是 Stremio WP 最具特色的能力之一:将下载完成的种子文件直接推送到你的 Nextcloud 私有云。这意味着你可以在任何设备上 —— 手机、平板、智能电视、另一台电脑 —— 随时访问你的媒体内容。

    🔗 与 Nextcloud WP 深度协作

    Nextcloud 推送功能通过 Nextcloud WP 插件实现。当检测到该插件处于激活状态且已正确配置时,Stremio WP 会自动在每个文件旁边显示「☁️ → NC」推送按钮。整个集成过程无需额外配置 —— 安装、启用、开始推送。

    💨 零磁盘占用的流式传输

    传统的文件中转方案通常是:从源下载到本地磁盘 → 从本地磁盘上传到目标。这意味着你的 WordPress 服务器需要有足够的磁盘空间来暂存这些可能高达数十 GB 的媒体文件。

    Stremio WP 采用了完全不同的策略:直接流式传输。文件从 EngineFS 的 HTTP 端点以 10 MB 分块直接流向 Nextcloud 的 WebDAV 接口,WordPress 服务器只是一个「管道」—— 数据流过但不停留,磁盘占用为零。

    EngineFS ──── 10MB 分块 ────► WordPress ──── WebDAV ────► Nextcloud
      (源)         HTTP 流          (管道)        直传           (目标)
                                  磁盘占用: 0

    🔒 原子锁与状态追踪

    推送大文件可能需要几分钟甚至更长时间。在这段时间内,Stremio WP 需要解决两个关键问题:

    防重复推送 —— 如果用户不小心点了两次按钮,或者多个浏览器标签页同时操作怎么办?插件使用了基于数据库的原子锁机制INSERT IGNORE),确保即使两个请求在毫秒级别同时到达,也只有一个能获得锁并开始推送。锁还内置了 30 分钟的自动过期机制(Safety Net),防止因崩溃导致的死锁。

    实时状态反馈 —— 推送过程中按钮会变为「⏳ Pushing…」状态(带旋转动画),成功后变为「✅ NC」并锁定。如果推送卡住,用户可以点击强制取消。所有状态信息搭载在已有的前端轮询响应中返回 —— 巧妙地做到了零额外 HTTP 请求


    🎨 精致的前端体验

    Stremio WP 的前端面板不是一个粗糙的功能性 Demo,而是一个经过精心设计的 UI 组件。

    🌓 深色模式自动适配

    插件通过 CSS @media (prefers-color-scheme: dark) 媒体查询自动适配系统主题,无需用户手动切换:

    • ☀️ 亮色主题 —— 干净的白色背景配合柔和的灰色边框,进度条采用蓝色渐变
    • 🌙 深色主题 —— 采用 Catppuccin Mocha 配色方案(#1e1e2e 背景 + #cdd6f4 文字),高对比度且护眼

    每一个按钮状态(VLC 橙色、IINA 绿色、复制蓝色、Stremio 紫色、Nextcloud 蓝色)在两种主题下都经过了独立配色,确保在任何环境下都清晰可辨。

    📱 响应式布局

    面板采用 Flexbox 布局,最大宽度 780px 并自动居中。文件操作按钮在窄屏上会自然换行,保证在手机浏览器上也能舒适使用。

    🔄 多实例不冲突

    你可以在同一个 WordPress 站点的不同页面上放置多个 [stremio_downloads] Shortcode。每个实例拥有独立的 DOM ID(sm-fe-1sm-fe-2、…)和独立的 JavaScript 作用域,CSS 也只会输出一次 —— 完全不会冲突。


    ⚙️ Shortcode 参数:灵活定制

    [stremio_downloads] Shortcode 支持多个可选参数,让你根据不同页面的需求灵活调整行为:

    参数默认值说明
    poll设置页面值(默认 5 秒)轮询间隔,较低的值实时性更好但增加服务器负载
    show_vlc1是否显示 VLC 播放按钮
    show_iina跟随设置页面是否显示 IINA 播放按钮(仅 macOS 有意义)
    show_copy1是否显示复制 URL 按钮

    使用示例:

    <!-- 默认配置 -->
    [stremio_downloads]
    
    <!-- 高刷新率,隐藏 IINA(非 macOS 环境) -->
    [stremio_downloads poll="3" show_iina="0"]
    
    <!-- 嵌入到仅供移动端访问的页面,只保留复制功能 -->
    [stremio_downloads show_vlc="0" show_iina="0" show_copy="1"]

    🛡️ 安全设计:多层防护

    作为一个涉及内网服务代理的插件,Stremio WP 在安全性方面做了深思熟虑的设计:

    • 🔐 SSRF 防护 —— 服务器地址配置经过严格验证:拦截 AWS/阿里云元数据地址(169.254.x.x100.100.100.200)、屏蔽 IPv6、拒绝包含协议头或路径的输入、阻止云元数据主机名(metadata.google.internal 等)。你的 WordPress 服务器不会被利用作为 SSRF 跳板
    • 🔑 REST API 认证 —— 所有 API 端点均使用 WordPress Nonce 机制验证请求合法性。管理类接口(设置、调试)要求 manage_options 权限;前端接口遵循可配置的访问控制策略
    • 🛡️ 输入清理 —— 所有用户输入经过 sanitize_text_field() 处理,Info Hash 严格匹配 40 位十六进制格式正则验证
    • 🔒 访问控制 —— 前端面板默认仅对登录用户可见。你也可以选择开放给所有访客,但这是一个需要明确开启的选项,而非默认行为

    🔧 后台管理面板

    Stremio WP 在 WordPress 后台提供了一个功能完备的设置页面,分为四大区域:

    🖥️ 服务器配置

    在这里配置你的 Stremio Server(EngineFS)连接信息:

    • Server Host —— EngineFS 的 IP 或主机名(默认 127.0.0.1,适合同机部署的 Docker 环境)
    • EngineFS Port —— EngineFS 的 HTTP 端口(默认 11470
    • Stremio Web Port —— Stremio Web UI 端口(默认 9080),用于前端面板的「🎬 Stremio Web」快捷按钮
    • Poll Interval —— 前端轮询间隔(1-60 秒),平衡实时性与服务器负载

    🎮 播放器配置

    • VLC —— 显示 vlc-stream:// 协议说明,提醒用户需要一次性注册协议处理器
    • IINA —— 一个复选框即可控制是否在前端显示 IINA 按钮(非 macOS 环境可关闭)

    ☁️ Nextcloud 集成配置

    设置页面会智能检测 Nextcloud WP 的安装和配置状态,显示三种不同的状态:

    • ⚠️ 未安装 —— 提示安装并激活 Nextcloud WP
    • ⚠️ 已安装未配置 —— 提供直接跳转到配置页面的链接
    • 已就绪 —— 显示启用开关、已连接的 Nextcloud URL 和目标文件夹配置

    🔍 连接测试与调试

    这是一个对运维人员非常友好的功能区:

    • Test Stremio Connection —— 一键测试 EngineFS 连接,成功时显示返回的设置项数量
    • Debug: Show Raw API —— 显示 EngineFS /stats.json 的原始 JSON 响应
    • Debug: Show Enriched API —— 显示经过 Stremio WP 智能补全后的数据

    调试输出采用深色终端风格(#1d2327 背景 + #50fa7b 绿色文字),JSON 自动格式化 —— 如同在终端中使用 jq 一样直观。


    🌐 REST API:可扩展的数据接口

    Stremio WP 通过 WordPress REST API 暴露了一组完整的端点,所有端点位于 /wp-json/stremio-wp/v1/ 命名空间下:

    方法端点权限说明
    GET/settings管理员代理 EngineFS /settings
    POST/options管理员保存插件选项
    GET/frontend-stats前端*获取智能补全后的种子统计数据
    DELETE/torrent?hash={hash}前端*销毁指定种子
    POST/nc-push管理员推送文件到 Nextcloud
    DELETE/nc-push?key={key}管理员取消卡住的推送
    GET/debug-stats管理员原始 EngineFS 数据(调试用)
    GET/debug-enriched管理员补全后的数据(调试用)

    * 前端权限取决于访问控制设置(登录用户或公开)

    这意味着你可以基于这些 API 构建自己的自定义前端、移动应用,或者与其他自动化工具集成 —— Stremio WP 不仅是一个界面,更是一个数据中间层


    📐 技术架构:优雅的 PHP 面向对象设计

    Stremio WP 采用清晰的面向对象架构,代码分层明确:

    stremio-wp/
    ├── stremio-wp.php               # 引导文件:常量、激活钩子、Shortcode、REST 路由
    ├── includes/
    │   ├── class-stremio-api.php    # EngineFS API 封装:请求、错误处理、URL 构建
    │   └── class-sm-nc-push.php     # Nextcloud 推送:锁机制、状态管理、流式传输
    └── admin/
        └── class-admin-page.php     # 后台设置页面:表单、验证、播放器安装指南
    • SM_Stremio_API —— 封装了与 EngineFS 的所有通信,包括请求发送、错误处理、JSON 解析、URL 构建。所有 HTTP 请求都使用 WordPress 原生的 wp_remote_get(),自带超时控制和错误包装
    • SM_NC_Push —— 完整的 Nextcloud 推送生命周期管理:原子锁获取/释放、活跃状态追踪、流式传输执行、推送日志记录。REST 路由注册也在此类内部完成
    • SM_Admin_Page —— WordPress 后台管理页面的完整实现:菜单注册、表单渲染、设置保存、连接测试 UI、播放器安装指南

    整个插件不依赖任何前端框架,前端使用原生 JavaScript(IIFE 模式),CSS 全部内联输出且只渲染一次 —— 保持轻量的同时追求极致的功能体验。


    🚀 快速上手

    只需简单几步,即可为你的 WordPress 站点添加 Stremio 下载管理能力:

    📋 你需要准备

    • ✅ WordPress 5.6 或更高版本
    • ✅ PHP 7.4 或更高版本
    • ✅ 一个运行中的 Stremio Server (Docker),EngineFS 端口需对 WordPress 服务器可访问

    如果你还想使用 Nextcloud 推送能力:

    • Nextcloud WP 插件(已安装并配置好 Nextcloud 连接)

    📥 三步安装

    1️⃣ 上传并激活 —— 将 stremio-wp 文件夹上传到 wp-content/plugins/ 目录,然后在 WordPress 插件页面激活 Stremio WP

    2️⃣ 配置连接 —— 进入 Stremio → Settings,填入你的 EngineFS 服务器地址和端口。点击「Test Stremio Connection」验证连接是否正常 —— 看到绿色的「✅ Connected!」就表示一切就绪。

    3️⃣ 嵌入页面 —— 在任意页面或文章中插入 [stremio_downloads] Shortcode,保存发布 —— 下载监控面板立即上线,开箱即用。

    如果你需要使用 VLC 播放功能,别忘了在 Settings → Player Setup Guides 区域复制对应平台的安装命令,在终端运行一次即可永久注册 vlc-stream:// 协议。


    📊 功能一览

    能力维度说明
    📊 实时下载监控✅ 可配置轮询间隔,自动刷新
    🧠 智能元数据补全✅ 自动获取种子名称和文件列表
    ▶️ VLC 一键播放✅ 自定义协议桥接,macOS + Linux
    🍎 IINA 一键播放✅ macOS 开箱即用
    📋 复制流 URL✅ 兼容任何播放器
    🎬 Stremio Web 快捷入口✅ 一键跳转 Web UI
    🗑️ 种子删除/销毁✅ 双端点容错策略
    ☁️ Nextcloud 推送✅ 零磁盘占用流式传输
    🔒 推送原子锁✅ 数据库级别防重复
    🛡️ SSRF 防护✅ 多层地址验证
    🔑 权限控制✅ 登录用户 / 公开访问可配置
    🌓 深色模式✅ 自动跟随系统主题
    📱 响应式设计✅ 桌面 + 移动端自适应
    🔄 多实例支持✅ 同一站点多个 Shortcode 不冲突
    🔧 调试工具✅ 连接测试 + Raw/Enriched JSON 查看
    🌐 REST API✅ 8 个标准端点,可集成第三方系统
    🎮 播放器安装指南✅ 内置 macOS / Linux 一键安装命令

    🔮 面向未来:自托管流媒体的更多可能

    在流媒体版权管控日趋严格的今天,越来越多的用户转向自托管方案 —— 自己的服务器、自己的内容、自己的规则。Stremio Server + Docker 的组合已经为这种趋势提供了坚实的基础,而 Stremio WP 正是在这个基础上更进一步。

    🏠 WordPress 作为个人数字中枢

    我们选择 WordPress 作为 Stremio 管理界面的载体,不是因为它是一个「博客平台」,而是因为它正在成为越来越多人的个人数字中枢。你的知识管理工具在这里(Trilium AI),你的云存储桥接在这里(Nextcloud WP),现在你的流媒体管理也在这里(Stremio WP)。

    一个统一的入口,一套统一的认证,一种统一的操作习惯 —— 这是 WordPress 作为自托管生态中心的独特价值。

    🧩 插件间的化学反应

    Stremio WP 的设计天然适配 WordPress 的插件生态。它已经与 Nextcloud WP 实现了深度集成,而未来还可以与更多插件产生化学反应:

    • 📊 与统计插件协作 —— 追踪下载历史、观看频率、存储用量趋势
    • 🔔 与通知插件协作 —— 下载完成时通过 Telegram / Email / Webhook 推送提醒
    • 👥 与用户管理插件协作 —— 为不同用户角色配置不同的访问权限和功能集

    这不是遥远的规划 —— WordPress 的 Hook 机制让这些集成随时可以发生。


    💡 为什么选择 Stremio WP?

    在自托管 Stremio 的方案中,Stremio WP 的独特之处在于它不是一个替代方案,而是一个增强方案

    🎯 不替代 Stremio Web,而是补充它 —— Stremio Web 是内容发现和选择的入口,Stremio WP 是下载管理和播放控制的操作台。两者各司其职,通过一个快捷按钮无缝连接。

    🏠 不脱离已有生态,而是融入它 —— 如果你已经在使用 WordPress 作为个人门户,Stremio WP 让 Stremio 成为这个门户的自然延伸,而非又一个需要单独登录的独立系统。

    ☁️ 不止于监控,而是打通闭环 —— 从 Stremio Web 选择内容 → 在 WordPress 监控下载 → 一键推送到 Nextcloud → 在任何设备上观看。整个工作流在一个浏览器标签页中完成。

    🔒 不牺牲安全换便利 —— SSRF 防护、原子锁、Nonce 认证、输入清理 —— 每一个与安全相关的细节都经过了审慎设计,让你放心地把它部署在面向互联网的 WordPress 站点上。


    🧑‍💻 关于项目

    Stremio WP 采用 GPL-2.0-or-later 开源协议发布。代码完全开放,不依赖任何前端框架,纯原生 PHP + JavaScript 实现,保持轻量的同时追求功能的完整性。


    💡 Stremio WP —— 你的种子不应该只存在于命令行的某个 Docker 日志里。它们值得拥有一个优雅的界面、一键播放的便捷、和直通私有云的通道。让自托管的流媒体体验从「能用」进化到「好用」,让 WordPress 成为你数字生活的真正中枢 —— 这不需要什么复杂的部署流程,一个 Shortcode 就够了。

    Brave 回复 2 days, 19 hours ago 1 成員 · 0 回复
  • 0 回复

歡迎留言回复交流。

Log in to reply.

讨论開始
00 回复 2018 年 6 月
現在