# mutengapp_new **Repository Path**: mrbytes/mutengapp_new ## Basic Information - **Project Name**: mutengapp_new - **Description**: 新版木藤影视APP - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-20 - **Last Updated**: 2026-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 木藤影视 (Muteng App) AI 驱动的影视聚合应用,基于 **uni-app + Vue 3** 开发,支持 App 端嵌入 uni 小程序。聚合多源影视内容,提供搜索、播放、观看历史、收藏等核心功能。 提供 **两个前端工程**: - `mutengapp_uniapp` — 竖屏手机版 - `mutengapp_uniapp_hd` — 横屏 Pad 版(16:9 全屏锁定) ## 功能特性 - **首页** — Banner 3D 轮播(`kong-swiper`)、分类导航(一级 Tab + 二级子分类 + 排序)、影视卡片网格(上图下文布局) - **搜索** — 关键词搜索,片类型 Tab(全部/正片/短剧/影视解说)、数据源 Tab、热门推荐、搜索历史 - **观看历史** — 按时间分组(今天/昨天/近 7 天/近 30 天),进度条 + 已播放/总时长展示(`totalSeconds` / `playedSeconds`) - **我的收藏** — 收藏查看页,卡片布局,支持取消收藏并跳转播放 - **个人中心** — 快捷功能栏(收藏/历史/缓存,收藏带角标)、"其他入口"小程序嵌入区、退出登录 - **播放器** — `yb-video` 组件播放(HLS/FLV),分集选择(Tab 分页 50 集/页)、剧情简介(`rich-text` 渲染 HTML)、动态导航栏标题、收藏 - **小程序宿主** — App 端通过 `uniMP` 插件安装 / 打开 wgt 小程序包 - **横屏 Pad 版** — 全页面 16:9 锁定、状态栏占位、左右分栏布局(左视频 + 右面板可滚动) ## 目录结构 ``` muteng_app/ ├── mutengapp_uniapp/ # uni-app 前端工程(竖屏手机版) │ ├── pages.json # 路由 & TabBar 配置 │ ├── manifest.json # App 配置(UniMP / VideoPlayer) │ ├── App.vue # 根组件 & 全局样式 │ ├── main.js # Vue 入口(VUE3 条件编译) │ ├── utils/request.js # 统一请求封装(http.get / http.post) │ ├── static/ # 静态资源(图片、图标、tab 图标) │ └── pages/ │ ├── index/ # 首页 │ ├── search/ # 搜索页(navigateTo 二级页) │ ├── history/ # 观看历史(tabBar) │ ├── collect/ # 我的收藏 │ ├── mine/ # 个人中心(tabBar,小程序入口) │ ├── player/ # 视频播放器(custom 导航) │ └── auth/ # 登录 / 注册 │ ├── mutengapp_uniapp_hd/ # uni-app 前端工程(横屏 Pad 版 16:9) │ ├── pages.json # 路由 & TabBar 配置(全页 landscape) │ ├── manifest.json # App 配置(横屏锁定 landscape-primary/secondary) │ ├── App.vue # 根组件 & 全局样式(状态栏占位注入) │ ├── main.js # Vue 入口(VUE3 条件编译) │ ├── utils/request.js # 统一请求封装(http.get / http.post) │ ├── components/sn-swiper/ # esc-swiper 轮播组件(3D 模式) │ ├── uni_modules/ │ │ ├── yingbing-video/ # yb-video 播放器组件(HLS/FLV) │ │ └── kong-swiper/ # kong-swiper 原生 swiper 封装(3D 缩放) │ └── pages/ │ ├── index/ # 首页(kong-swiper Banner + 一级/二级 Tab + 影片网格) │ ├── search/ # 搜索页 │ ├── history/ # 观看历史(tabBar) │ ├── collect/ # 我的收藏 │ ├── mine/ # 个人中心(tabBar,小程序入口) │ ├── player/ # 视频播放器(左右分栏:左视频 + 右分集/信息面板) │ └── auth/ # 登录 / 注册 │ ├── server_new/ # 后端服务(Node.js / LibreTV) │ ├── index.mjs # 入口 │ ├── config.mjs # 配置 │ ├── routes/ # 路由(搜索、详情、代理、豆瓣、mp 等) │ └── data/mp_list.json # 小程序列表静态数据 │ ├── imgs/ # 页面截图(pad / phone) ├── demo/ # LibreTV 参考实现(不纳入版本管理) ├── AGENT.md # 项目规格说明(设计系统 / 存储 key / 接口) └── LICENSE ``` ## 技术栈 | 层级 | 技术选型 | |------|----------| | 前端框架 | uni-app (Vue 3, `createSSRApp`) | | 构建工具 | HBuilderX / Vite | | 样式方案 | CSS (scoped) + Rpx 响应式单位 | | 视频播放 | 第三方组件 `yb-video`(支持 HLS/FLV) | | 轮播组件 | `kong-swiper`(原生 swiper 封装,3D 缩放) | | 小程序宿主 | `uni.requireNativePlugin('uniMP')`(仅 App 端) | | 状态管理 | 本地 Storage(`uni.setStorageSync`) | | 网络请求 | `utils/request.js` 封装 `http` | | 后端 | Node.js + Express(`server_new`) | ## 本地存储 Key | Key | 类型 | 说明 | |-----|------|------| | `histList` | 字符串数组 | 搜索历史(关键词名字) | | `watchHistList` | 对象数组 | 观看历史(`id` / `title`(片名+集数)/ `poster` / `sub` / `sourceKey` / `time` / `totalSeconds` / `playedSeconds` / `progress`) | | `collectList` | 字符串数组 | 收藏 id(`sourceCode_vodId`) | | `collectDetails` | 对象 | 收藏详情(`key -> 影片对象`) | > 搜索历史与观看历史使用**不同的 storage key**,避免互相覆盖。 ## 快速开始 ### 环境要求 - Node.js 18+ - HBuilderX 或 VS Code + uni-app 插件 ### 前端 ```bash # 竖屏手机版 cd mutengapp_uniapp npm run dev:h5 # H5 预览 npm run dev:app-plus # App 端 # 横屏 Pad 版 cd mutengapp_uniapp_hd npm run dev:h5 # H5 预览 npm run dev:app-plus # App 端 ``` ### 后端 ```bash cd server_new npm install npm run dev # node --watch index.mjs ``` > 前端默认请求 `https://film.mutengyy.site`,本地调试可修改 `utils/request.js` 中的 `BASE_URL`。 ### 构建发布 ```bash # 竖屏手机版 cd mutengapp_uniapp npm run build:h5 # 构建 H5 npm run build:app # 构建 App # 横屏 Pad 版 cd mutengapp_uniapp_hd npm run build:h5 # 构建 H5 npm run build:app # 构建 App ``` ## 设计系统 - 页面背景 `#f8fafc`,卡片 `#ffffff` - 主色天蓝 `#0ea5e9`(不使用蓝紫色系) - 主要文字 `#0f172a` / 次要 `#64748b` / 辅助 `#94a3b8` - 评分/收藏金色 `#f59e0b`,危险操作红色 `#ef4444` - 圆角:按钮/胶囊 `40rpx`,卡片 `16rpx`,图标容器 `18rpx` 详细规格见 [AGENT.md](./AGENT.md)。 ## 小程序宿主(uniMP) 仅 App 端可用(`// #ifdef APP-PLUS`)。流程: 1. `loadMPList` 请求 `GET /mp` 获取小程序列表(`app_id / app_name / app_type / app_desc / app_icon / app_version / app_download_url`) 2. `checkInstalled(appId)` 通过 `mp.getUniMPVersion` 检测是否已安装 3. `openMP(item)`:已安装直接 `mp.openUniMP`;未安装先 `uni.downloadFile` 下载 wgt,再 `mp.installUniMP` 安装后打开 UI:item 上下布局(上 icon 下名字),未安装灰色、已安装原色;区域带 `min-height`,上方标题"其他入口"。 ## API 集成 后端接口封装在 `utils/request.js`: | 接口 | 方法 | 说明 | |------|------|------| | `/api/search` | GET | 搜索(`wd` 关键词,`source: aggregated`) | | `/api/detail` | GET | 影片详情/分集(`id`, `source`) | | `/mp` | GET/POST/DELETE | 小程序列表(静态 JSON 管理) | ## 页面截图 ### 横屏版(Pad) pad-screenshot-1 pad-screenshot-2 pad-screenshot-3 pad-screenshot-4 pad-screenshot-5 pad-screenshot-6 ### 竖屏版(手机) phone-screenshot-1 phone-screenshot-2 phone-screenshot-3 phone-screenshot-4 phone-screenshot-5 phone-screenshot-6 ## 版本 v1.0.0 ## TODO - [ ] 播放历史数据本地→云端同步 - [ ] 收藏列表云端同步 - [ ] 搜索页支持语音输入 - [ ] 播放器支持倍速播放 - [ ] 多语言支持(i18n) - [ ] 性能优化:首页列表虚拟滚动 - [ ] 完善单元测试