movie-web:5分钟本地搭好电影聚合平台
【免费下载链接】movie-webmovie-web 是一款用于轻松观看电影的网络应用程序。该服务的工作原理是在直观且美观的用户界面中显示来自第三方提供商的视频文件。项目地址: https://gitcode.com/GitHub_Trending/mo/movie-web
movie-web 是一个开源电影聚合平台:在浏览器里搜片,自动从第三方提供商拉取资源并原地播放,省去你自己满网找链接的工夫。
⚡ 5分钟本地跑通
环境要 Node.js 20 和 pnpm(项目 preinstall 会强制只允许 pnpm 安装):
git clone https://gitcode.com/GitHub_Trending/mo/movie-web cd movie-web pnpm install pnpm dev启动后打开 http://localhost:5173 。首次运行前配一下环境变量:
cp example.env .env只需填三个值:VITE_TMDB_READ_API_KEY(TMDB 元数据密钥)、VITE_CORS_PROXY_URL(CORS 代理地址,末尾不要带斜杠)、VITE_APP_DOMAIN(服务域名)。生产构建用pnpm build,产物在dist/,丢给任意静态服务器即可——项目里的 Dockerfile 就是 node:20-alpine 构建、nginx:stable-alpine 托管这个流程。
🎬 它能做什么
搜片到播放一条线走完:搜到一部作品后,先由元数据模块从 TMDB 拿到海报、简介;播放时从多个第三方源取流,某个源挂了可以在源选择面板里直接换一条。清晰度、字幕语言与样式、倍速、画中画都收在设置菜单里,不占屏幕。
换设备接着看:观看历史和收藏默认存本地,注册账号后进度会同步——手机看到一半,电脑上继续,各看各的互不干扰。
多端都有对应布局:手机竖屏、平板分屏、桌面键盘快捷键各有一套适配,还支持 Chromecast 投屏。
🧩 它是怎么搭的:前后端职责拆解
技术栈是 React 18 + TypeScript + Vite,状态管理统一用 Zustand 放在 src/stores/。播放器拆在 src/components/player/:atoms 是控件 UI(进度条、清晰度选择),base 是容器,display 是"内容到底往哪里播"的抽象(video 元素或 Chromecast),目录内 README 写清了每块的分工边界。
所谓后端其实全是"前端侧"逻辑:src/backend/metadata/ 负责 TMDB 等元数据抓取;src/backend/providers/ 处理视频资源获取与解析,fetchers.ts 里能看到请求可走代理、浏览器扩展等多条通道并在其间做负载均衡;src/backend/accounts/ 管登录、书签与进度同步。
🎛️ 怎么改它:主题、多语言与二次开发入口
- 加主题:照 themes/list/ 里现成的 blue/gray/red/teal 写一个新主题文件,再登记进 themes/all.ts。
- 加语言:往 src/assets/locales/ 放语言 JSON,已内置 45 种。
- 改播放器:动手前先读 src/components/player/ 的 README,internals 和 hooks 不对外导出,外部控制入口只有 usePlayer。
- 换资源通道:代理地址在 .env,通道逻辑在 src/backend/providers/。
🧭 适合谁,什么时候别用
适合想自己托管界面、只需接上资源后端的场景,也适合照它的播放器结构做二次开发,display 抽象层值得抄。不适合两类人:不想自己维护 provider 后端服务的人(片源全在外部 provider,前端不含一个视频字节);需要把资源下载到本地的人——它只支持流式播放,不做下载。
整个应用最后就是一套纯静态产物,只要你能跑起 nginx,就能把这套电影聚合平台用起来。
【免费下载链接】movie-webmovie-web 是一款用于轻松观看电影的网络应用程序。该服务的工作原理是在直观且美观的用户界面中显示来自第三方提供商的视频文件。项目地址: https://gitcode.com/GitHub_Trending/mo/movie-web
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考