收起左侧

NAS用户必看:3 分钟手把手教你把 NAS 打造成“私人 Netflix 影院”!

5
回复
1537
查看
[ 复制链接 ]

105

主题

11

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章社区上线纪念勋章

E 视界 (冬瓜 TV 的增强 / 重构版本):

一款基于 Node.js 和 Vue 3 构建的现代流媒体聚合播放器。经过全面重构和升级,引入了 Netflix 风格的沉浸式 UI、TMDb 数据驱动的动态榜单、以及智能的多源聚合搜索功能。

核心特性:

🎬 双引擎数据驱动

  • • TMDb (The Movie Database):提供高质量的电影/剧集元数据(海报、背景图、评分、简介、演职员表)。
  • • CMS 聚合源 (Maccms):集成 48+ 个第三方资源站 API,自动进行全网测速,智能过滤失效源,确保播放流畅。

🔍 智能搜索与聚合

  • • 实时流式搜索 (SSE):采用 Server-Sent Events 技术,搜索结果边搜边显,即时反馈,无需等待所有源响应。
  • • 自动分组与实时合并:同一影片的不同线路自动聚合,新搜索到的源实时合并到已有卡片,右上角源数量实时跳动。
  • • SQLite 永久缓存:内置高性能 SQLite 数据库缓存,支持无限存储,读写速度极快,热搜词秒级响应。

📺 沉浸式播放体验

  • • 影院模式:全新设计的播放详情页,采用暗色系沉浸布局,支持剧集网格选择。
  • • 智能线路测速:支持用户端直连测速和服务器代理测速,真实反映视频可用性。
  • • 自动故障转移:播放失败时自动切换到下一个可用线路,无需手动操作。
  • • 投屏支持:集成 DLNA/AirPlay 本地投屏功能(需浏览器支持)。

🌏 大陆用户优化

  • • 智能 IP 双重检测:采用 Cloudflare Trace + ipapi.co 双重检测机制,准确率高且无 API 速率限制,自动切换到 TMDB 反代模式。
  • • 本地资源优先:核心依赖库(Vue, Bootstrap, DPlayer 等)均本地化部署,彻底解决 CDN 劫持或加载缓慢问题,秒开无压力。
  • • 一键安装脚本:支持交互式配置 API Key、反代地址、运行端口。

📱 多端支持

  • • Android TV / 盒子:提供专属 APK 安装包,完美适配电视遥控器操作,支持 Android TV 桌面启动 (Leanback Launcher)。
  • • 移动端 App:基于现代 Web 技术封装,支持沉浸式状态栏 (Immersive Status Bar),顶部无黑边,内容自动适配刘海屏,体验原生级流畅。
  • • PWA 支持:支持添加到主屏幕,即点即用。

🔒 安全与访问控制

  • • 全局访问密码:支持设置全局访问密码,且支持记住登录状态长达 1 年,既安全又便捷。
  • • 远程配置加载:支持从远程 URL 加载 db.json 配置文件,方便多站点统一管理。

免责声明:

本教程仅作为学习交流使用,使用前请务必遵守相关法律法规及平台协议,请勿用于商业用途及非法领域。

准备

需要准备两样东西,分别是:db.json 和 TMDb API Key

配置采集源

所有的采集源配置均存储在 db.json 文件中,采集源越多可以检索的资源也就越多。提供采集源可能会构成侵权违法行为,我就不提供了,大家只能各凭本事了。

项目初次运行时会自动生成 db.json,如果未生成,可以手动创建或使用模板(也有可能自动生成的是文件夹,所以建议还是直接手动创建一个 db.json 文件作为映射)。

{
  "sites": [
    {
      "key": "unique_key1",       // 唯一标识符(英文字母,不可重复)
      "name": "站点名称1",         // 显示在界面的名称
      "api": "https://...",      // Maccms V10/JSON 接口地址
      "active": true             // 是否启用 (true/false)
    },
    {
      "key": "unique_key2",       // 唯一标识符(英文字母,不可重复)
      "name": "站点名称2",         // 显示在界面的名称
      "api": "https://...",      // Maccms V10/JSON 接口地址
      "active": true             // 是否启用 (true/false)
    }
  ]
}

获取 TMDb API Key

需要有 The Movie Database 提供的密钥,用于获取影视信息。具体详细的步骤之前也写过教程,可以看关联的“TMDB 获取 API”的文章,

来到 TMDB 官网,https://www.themoviedb.org/

可以先将语言设置为中文

没有账号的可以先注册

登录账号(注册比较简单这里就不说了)

点击“账户设置

请求 API 密钥

点击创建“新增

拉到最底部,点“接受

按要求填写一下

应用简介随便填写:As an ordinary user, I hope to obtain tmdb API for better configuration of some personal audio-visual software.

这个就是我们需要的了 API 了

部署 TMDB 反代

这个不是必须的,建议先部署容器,如果网络有问题再配置。因为需要用到 TMDB 获取海报和影视信息,但国内有些地方是无法直接访问,就需要配置反向代理才能正常显示。如果平时都是家里用,直接修改路由器 Hosts 配置会更加方便,可以看关联的“Hosts 自定义修改”的文章。

安装

创建 donggua-tv 的目录

创建一个 cache.db 空白文件

将前面准备的配置采集源 db.json 也放到里面

创建项目,根据实际情况修改 TMDB_API_KEY 和 ACCESS_PASSWORD 两个环境变量的值

Docker Compose

services:
  donggua-tv:
    image: ghcr.io/ednovas/dongguatv:latest
    container_name: donggua-tv
    ports:
      - 3000:3000
    environment:
      - TMDB_API_KEY=your_api_key_here
      - ACCESS_PASSWORD=your_password
      - CACHE_TYPE=sqlite
    volumes:
      - ./db.json:/app/db.json
      - ./cache.db:/app/cache.db
      - ./cache/images:/app/public/cache/images
    restart: unless-stopped

参数说明(更多参数建议去看文档)

:::

TMDB_API_KEY(环境变量):TMDb API 密钥,用于获取影视信息

TMDB_PROXY_URL(环境变量,可选):TMDB 反代地址

ACCESS_PASSWORD(环境变量,可选):访问密码

PORT(环境变量,可选):自定义端口

CACHE_TYPE(环境变量,可选):缓存类型 ('json', 'sqlite', 'memory', 'none') - 默认 json

/app/db.json(路径):存储所有的采集源配置信息

/app/cache.db(路径):存储搜索结果和详情的数据库文件

/app/public/cache/images(路径):存储图片信息

:::

TIP:项目启动会自动创建文件夹,并且 cache.db 文件大小也会有变化

使用

浏览器中输入 http://NAS的IP:3000 就能看到界面

输入密码进行登录

界面 UI 相当不错,有点像打开了 EMBY 影音媒体(如果没有海报那些,大概率是网络问题或者密钥错了)

支持影片搜索功能,想要看什么直接搜索就行

添加的源越多,可以搜索出来的资源也就越多

打开播放都是完全没有问题的

底下除了有剧情介绍,还可以切换不同的播放源,以及很方便的选集播放

如果不知道看什么,下面也有很多榜单可以选择

可以看的电影资源都比较新,不过画质基本都是 1080P,手机和平板观看也还行吧

手机网页端也有做适配,体验很好

项目地址(https://github.com/EdNovas/dongguaTV/releases) 也有打包好的 APK 文件,有需要的可以自行安装试试

总结

相比之前推荐的 LibreTV、MoonTV、KatelyaTV 等流媒体聚合工具,个人感觉 E 视界的观影体验是最好的。访问的界面就很好看,有海报和相关介绍,不过没有后台配置信息会有点不方便。有轻度影音需求的用户,非常推荐部署试试,不用繁琐的整理电影,直接访问就能观看,大大低萌新的入门门槛。

综合推荐:⭐⭐⭐⭐⭐(轻度影音需求的用户,非常推荐)

使用体验:⭐⭐⭐⭐(体验非常不错,除了画质低一点)

部署难易:⭐⭐(简单)︎

收藏
送赞 3
分享

0

主题

12

回帖

0

牛值

江湖小虾

国内部署可以添加代理 HTTP_PROXYHTTPS_PROXY,NO_PROXY 实现 TMDB 访问

0

主题

1

回帖

0

牛值

江湖小虾

缺的就是那个db.jsonlol

6

主题

16

回帖

0

牛值

江湖小虾

缺db.json吗?

送大家一批:

{
"sites": [
{
"id": "b61a1e9b-b42f-49cd-b23e-689742a4bc5b",
"key": "xiaomaomi",
"name": "小猫咪资源",
"api": "https://zy.xmm.hk/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.891900349+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "5abc1211-da75-43cd-9364-d63dff1adfb7",
"key": "lzi",
"name": "量子资源站",
"api": "https://cj.lziapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.885691793+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "4a310ba2-8925-46cf-b02b-e2ce263712d9",
"key": "ikun",
"name": "iKun资源",
"api": "https://ikunzyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.843082843+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "9f5b2134-bb24-4391-bf12-f03cd3eabce5",
"key": "wwzy",
"name": "旺旺短剧",
"api": "https://wwzy.tv/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.83268412+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "b110ca03-fdfe-4adc-b90a-8e7e7a7fc934",
"key": "wujin",
"name": "无尽资源",
"api": "https://api.wujinapi.me/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.829143606+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "b18b729e-fba9-47de-94c4-19720d47d580",
"key": "yinghua",
"name": "樱花资源",
"api": "https://m3u8.apiyhzy.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.822155548+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "e9568b3a-04a3-4277-8218-09a6675aef7a",
"key": "zuid",
"name": "最大资源",
"api": "https://api.zuidapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.815844906+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "fd572320-27ae-4183-8c9d-96304b7f9ae7",
"key": "mdzy",
"name": "魔都资源",
"api": "https://www.mdzyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.803932237+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "da94971f-2e23-4515-a570-c4227d3bd96a",
"key": "mozhua",
"name": "魔爪资源",
"api": "https://mozhuazy.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.761773841+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "aee37634-a4fe-4230-9a7d-f7ff5de16040",
"key": "dbzy",
"name": "豆瓣资源",
"api": "https://dbzy.tv/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.75310582+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "feaf2d3c-187b-4008-ba32-bda73b27d214",
"key": "jisu",
"name": "极速资源",
"api": "https://jszyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.75063335+08:00",
"isDefault": 0,
"remark": "https://jszyapi.com",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "ba3d58f1-f9bc-4a3f-8571-1ab020882c83",
"key": "wolong",
"name": "卧龙资源",
"api": "https://wolongzyw.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.747691836+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "0084757d-a14a-4569-9af8-76fee89eae3f",
"key": "maotaizy",
"name": "茅台资源",
"api": "https://caiji.maotaizy.cc/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.741089353+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "f9c4583b-6e5f-46e6-8219-93b200b2bc99",
"key": "zy360",
"name": "360资源",
"api": "https://360zy.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.725711586+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "62e9eb4b-f56e-49a5-b3e5-d8772fbb3713",
"key": "ffzy",
"name": "非凡影视",
"api": "http://ffzy5.tv/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.681691555+08:00",
"isDefault": 0,
"remark": "http://ffzy5.tv",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "b6f282b2-c7a5-4474-8204-c8b5b50dd77e",
"key": "ruyi",
"name": "如意资源",
"api": "http://cj.rycjapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.674111402+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "9b8089e8-1981-487d-8e25-b7537e9bda7e",
"key": "heimuer",
"name": "黑木耳",
"api": "https://json.heimuer.xyz/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.672389025+08:00",
"isDefault": 0,
"remark": "https://heimuer.tv",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "0a609452-fb00-4898-aeb6-0632bea83497",
"key": "bfzy",
"name": "暴风资源",
"api": "https://bfzyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.671641234+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "c51c1b8c-c2b8-4637-82c2-081a4dca7b9f",
"key": "tyyszy",
"name": "天涯资源",
"api": "https://tyyszy.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.665923643+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "a0d714cd-faec-4766-b081-b8d35f5c8f9a",
"key": "dyttzy",
"name": "电影天堂资源",
"api": "http://caiji.dyttzyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T14:55:06.64529486+08:00",
"isDefault": 0,
"remark": "http://caiji.dyttzyapi.com",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "17a21c41-51ce-4a4d-8994-ce645ab32af5",
"key": "360",
"name": "360",
"api": "https://360zyzz.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T09:57:39.021145589+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 2,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "0bf0b30b-4190-4074-b2a0-976766e38f9d",
"key": "baofeng",
"name": "baofeng",
"api": "http://by.bfzyapi.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T10:02:12.36489+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 1,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "4885bdd1-658f-4fae-b386-06018c9438c9",
"key": "jindan",
"name": "jindan",
"api": "https://zy.jinchancaiji.com/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T10:15:05.623439799+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 0,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "84851095-2576-451b-b54f-6d110b682ebd",
"key": "aidan",
"name": "aidan",
"api": "https://lovedan.net/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T10:14:45.812765328+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 0,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "100c92fc-876e-41b0-8674-1d3845d1e83a",
"key": "jianpian",
"name": "jianpian",
"api": "http://zhangqun1818.serv00.net/jianpian1.php",
"type": 2,
"isActive": 1,
"time": "2025-11-26T10:14:14.449390245+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 0,
"proxyMode": "none",
"customProxy": ""
},
{
"id": "45a51142-6627-4aa2-9548-05b762722abd",
"key": "maoyao",
"name": "maoyao",
"api": "https://api.maoyanapi.top/api.php/provide/vod",
"type": 2,
"isActive": 1,
"time": "2025-11-26T10:02:45.10810191+08:00",
"isDefault": 0,
"remark": "",
"tags": [],
"priority": 0,
"proxyMode": "none",
"customProxy": ""
}
],
"exportTime": "2025-11-26T06:58:53.062Z",
"total": 26,
"filters": {
"search": null,
"tags": null,
"status": null
}
}

0

主题

1

回帖

0

牛值

江湖小虾

tmdb怎么反代

3

主题

5

回帖

0

牛值

江湖小虾

fnOS1.0上线纪念勋章飞牛百度网盘玩家

对适配电视遥控器操作做的不好,不建议在电视上使用

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则