前言
今天给大家介绍的是基于之前分享的冬瓜TV项目二次开发的E视界,相对于冬瓜TV这个功能上会稍微丰富点,比如有用户隔离,密码验证,广告过滤等等
项目简介
这是一个经过全面重构和升级的现代流媒体聚合播放器,基于 Node.js 和 Vue 3 构建。相比原版 本作添加了许多功能。
✨ 核心特性 (Core Features)
1. 🎬 双引擎数据驱动
- TMDb (The Movie Database):提供高质量的电影/剧集元数据(海报、背景图、评分、简介、演职员表)。
- CMS 聚合源 (Maccms):可集成多个自定义第三方资源站 API,自动进行全网测速,智能过滤失效源,确保播放流畅。
2. 🔍 智能搜索与聚合
- 实时流式搜索 (SSE):采用 Server-Sent Events 技术,搜索结果边搜边显,即时反馈,无需等待所有源响应。
- 智能关键词匹配:自动生成搜索变体(去除副标题、季数后缀等),同时搜索中英文名,大幅提高命中率。
- 自动英中翻译:检测到英文搜索词时,自动通过 TMDB 获取中文译名并一起搜索(如搜索 “Stranger Things” 会自动添加 “怪奇物语”),无需外部翻译 API。
- 自动分组与实时合并:同一影片的不同线路自动聚合,新搜索到的源实时合并到已有卡片,右上角源数量实时跳动。
- SQLite 永久缓存:内置高性能 SQLite 数据库缓存,支持无限存储,读写速度极快,热搜词秒级响应。
3. 📺 沉浸式播放体验
- 影院模式:全新设计的播放详情页,采用暗色系沉浸布局,支持剧集网格选择。
- 智能线路测速:支持用户端直连测速和服务器代理测速,真实反映视频可用性。
- 自动故障转移:播放失败时自动切换到下一个可用线路,无需手动操作。
- 投屏支持:集成 DLNA/AirPlay 本地投屏功能(需浏览器支持)。
- 🛡️ 智能广告过滤:自动检测并过滤 M3U8 流中的广告分段,支持百度、腾讯、阿里、字节等国内主流广告平台。
4. 🌏 大陆用户优化
- 智能 IP 双重检测:采用 Cloudflare Trace + ipapi.co 双重检测机制,准确率高且无 API 速率限制,自动切换到 TMDB 反代模式。
- 本地资源优先:核心依赖库(Vue, Bootstrap, DPlayer 等)均本地化部署,彻底解决 CDN 劫持或加载缓慢问题,秒开无压力。
- 一键安装脚本:支持交互式配置 API Key、反代地址、运行端口。
5. 📱 多端支持
- Android App:基于现代 Web 技术封装,支持沉浸式状态栏 (Immersive Status Bar),顶部无黑边,内容自动适配刘海屏,体验原生级流畅。
- PWA 支持:支持添加到主屏幕,即点即用。
- 电视/盒子:推荐使用电视浏览器(如当贝浏览器)直接访问网页版,兼容性最佳。
- 📺 TV 模式切换:页面底部提供隐蔽的 TV 模式切换入口,一键开启遥控器导航模式,适配智能电视/盒子。
6. 🔒 安全与访问控制
- 全局访问密码:支持设置全局访问密码,且支持记住登录状态长达 1 年,既安全又便捷。
- 远程配置加载:支持从远程 URL 加载
db.json配置文件,方便多站点统一管理。
有关截图
主界面

观影界面

部署方法
使用Docker安装
本教程主要演示使用docker的方式安装部署,简单便捷

准备条件
1)一台服务器
我们使用莱卡云服务器来演示
由于涉及到链接TMDB最好使用境外云服务器比如日本,韩国美国或者香港
需要vps的可以看以下信息,配置可以参考以下资源占用情况
莱卡云
本期docker容器占用资源情况如下仅供参考,内存占用大约50M

2)本项目使用到的项目
本教程使用的官方github地址
https://github.com/EdNovas/dongguaTV
目前有472 stars

3)TMDB的API
这个API个人使用是免费的
首先注册TMDB的账号

正常验证邮件


然后登录好之后打开账户设置


然后点击API填入个人信息,地址信息等

点击即可获取

这个就是我们需要的API

4)域名
尽量绑定,不然不安全
VPS部署
一、Docker环境部署
在vps安装docker和docker-compose
Docker官方安装文档(英文)
https://duan.yyzq.eu.org/docker-001
Docker-Compose官方安装文档(英文)
https://duan.yyzq.eu.org/docker-002
Centos安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//03
Ubuntu安装Docker和Docker-compose(中文)
https://duan.yyzq.eu.org//04
推荐直接用一键脚本
docker安装脚本
bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrors@main/DockerInstallation.sh)
执行以下命令查看docker版本
docker --version
Docker version 29.1.3, build f52814d
docker-compose安装脚本
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
执行以下命令查看docker-compose版本
docker-compose --version
Docker Compose version v5.0.1
二、部署命令
登录服务器使用root账户执行以下步骤
docker-compose命令
创建一个目录,并进入此目录
mkdir etv ;cd etv
首先新建缓存数据库文件
touch cache.db
在新建接口文件
vim db.json
{
"sites": [
{ "key": "dyttzy", "name": "电影天堂", "type": 1, "api": "http://caiji.dyttzyapi.com/api.php/provide/vod" },
{ "key": "bfzy", "name": "暴风资源", "type": 1, "api": "https://bfzyapi.com/api.php/provide/vod" },
{ "key": "tyyszy", "name": "天涯资源", "type": 1, "api": "https://tyyszy.com/api.php/provide/vod" },
{ "key": "ffzy", "name": "非凡影视", "type": 1, "api": "https://api.ffzyapi.com/api.php/provide/vod" },
{ "key": "zy360", "name": "360资源", "type": 1, "api": "https://360zy.com/api.php/provide/vod" },
{ "key": "maotaizy", "name": "茅台资源", "type": 1, "api": "https://caiji.maotaizy.cc/api.php/provide/vod" },
{ "key": "wolong", "name": "卧龙资源", "type": 1, "api": "https://wolongzyw.com/api.php/provide/vod" },
{ "key": "jisu", "name": "极速资源", "type": 1, "api": "https://jszyapi.com/api.php/provide/vod" },
{ "key": "dbzy", "name": "豆瓣资源", "type": 1, "api": "https://dbzy.tv/api.php/provide/vod" },
{ "key": "mozhua", "name": "魔爪资源", "type": 1, "api": "https://mozhuazy.com/api.php/provide/vod" },
{ "key": "mdzy", "name": "魔都资源", "type": 1, "api": "https://www.mdzyapi.com/api.php/provide/vod" },
{ "key": "zuid", "name": "最大资源", "type": 1, "api": "https://api.zuidapi.com/api.php/provide/vod" },
{ "key": "yinghua", "name": "樱花资源", "type": 1, "api": "https://m3u8.apiyhzy.com/api.php/provide/vod" },
{ "key": "wujin", "name": "无尽资源", "type": 1, "api": "https://api.wujinapi.me/api.php/provide/vod" },
{ "key": "wwzy", "name": "旺旺短剧", "type": 1, "api": "https://wwzy.tv/api.php/provide/vod" },
{ "key": "ikun", "name": "iKun资源", "type": 1, "api": "https://ikunzyapi.com/api.php/provide/vod" },
{ "key": "lzi", "name": "量子资源", "type": 1, "api": "https://cj.lziapi.com/api.php/provide/vod" },
{ "key": "bdzy", "name": "百度资源", "type": 1, "api": "https://api.apibdzy.com/api.php/provide/vod" },
{ "key": "hongniuzy", "name": "红牛资源", "type": 1, "api": "https://www.hongniuzy2.com/api.php/provide/vod" },
{ "key": "xinlangaa", "name": "新浪资源", "type": 1, "api": "https://api.xinlangapi.com/xinlangapi.php/provide/vod" },
{ "key": "ckzy", "name": "CK资源", "type": 1, "api": "https://ckzy.me/api.php/provide/vod" },
{ "key": "ukuapi", "name": "U酷资源", "type": 1, "api": "https://api.ukuapi.com/api.php/provide/vod" },
{ "key": "1080zyk", "name": "1080资源", "type": 1, "api": "https://api.1080zyku.com/inc/apijson.php/" },
{ "key": "hhzyapi", "name": "豪华资源", "type": 1, "api": "https://hhzyapi.com/api.php/provide/vod" },
{ "key": "subocaiji", "name": "速博资源", "type": 1, "api": "https://subocaiji.com/api.php/provide/vod" },
{ "key": "p2100", "name": "飘零资源", "type": 1, "api": "https://p2100.net/api.php/provide/vod" },
{ "key": "aqyzy", "name": "爱奇艺", "type": 1, "api": "https://iqiyizyapi.com/api.php/provide/vod" },
{ "key": "yzzy", "name": "优质资源", "type": 1, "api": "https://api.yzzy-api.com/inc/apijson.php" },
{ "key": "myzy", "name": "猫眼资源", "type": 1, "api": "https://api.maoyanapi.top/api.php/provide/vod" },
{ "key": "rycj", "name": "如意资源", "type": 1, "api": "https://cj.rycjapi.com/api.php/provide/vod" },
{ "key": "jinyingzy", "name": "金鹰点播", "type": 1, "api": "https://jinyingzy.com/api.php/provide/vod" },
{ "key": "guangsuapi", "name": "光速资源", "type": 1, "api": "https://api.guangsuapi.com/api.php/provide/vod" }
],
"lives": [
{
"name": "YanG",
"type": 0,
"url": "https://tv.iill.top/m3u/Gather",
"playerType": 1
}
]
}
然后再新建docker-compose.yml
vim docker-compose.yml
services:
donggua-tv: # 服务名称为 donggua-tv
image: ghcr.io/ednovas/dongguatv:latest # 使用的镜像是 ghcr.io/ednovas/dongguatv:latest
container_name: donggua-tv # 容器名称为 donggua-tv
ports:
- "3000:3000" # 将容器的 3000 端口映射到主机的 3000 端口
environment:
- TMDB_API_KEY=e3509125c41f4a223e54a6c038bf61ac # TMDB API 密钥
- ACCESS_PASSWORD=123456,1122334 # 设置两个访问密码,多个密码使用逗号分隔
volumes:
- ./db.json:/app/db.json # 将本地的 db.json 文件挂载到容器的 /app/db.json
- ./cache.db:/app/cache.db # 将本地的 cache.db 文件挂载到容器的 /app/cache.db
restart: always # 容器崩溃后自动重启
📢注意这个TMDB_API_KEY如果不填或者填错无法正常使用
三、执行容器运行命令
docker-compose up -d #运行容器
docker-compose ps #查看是否启动成功
正常启动如下所示
docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
donggua-tv ghcr.io/ednovas/dongguatv:latest "docker-entrypoint.s…" donggua-tv 20 hours ago Up 20 hours 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp
四、web界面
打开web页面使用
成功以后需要打开自己相应的端口3000)防火墙就可以web端访问了
主界面
http://ip:3000
输入自定义的密码即可使用

都是自动检测资源延迟的

其他功能自行探索
绑定域名
VPS上的建议绑定下域名,方便公网使用
绑定域名的教程参考以下内容
绑定域名视频教程
B站
YouTube
绑定域名可以参考
NginxProxyManager
https://duan.yyzq.eu.org//npm-ch
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
有任何问题可以直接留言或者问我
欢迎关注我们的微信公众号!


评论区