diff --git a/apps/moontv/README.md b/apps/moontv/README.md new file mode 100644 index 000000000..842be565b --- /dev/null +++ b/apps/moontv/README.md @@ -0,0 +1,34 @@ +# MoonTV + +跨平台的影视聚合播放站 + +![MoonTV](https://file.lifebus.top/imgs/moontv_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 简介 + +MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript +构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。 + +## 特性 + +🔍 多源聚合搜索:内置数十个免费资源站点,一次搜索立刻返回全源结果。 + +📄 丰富详情页:支持剧集列表、演员、年份、简介等完整信息展示。 + +▶️ 流畅在线播放:集成 HLS.js & ArtPlayer。 + +❤️ 收藏 + 继续观看:支持 Redis/D1 存储,多端同步进度。 + +📱 PWA:离线缓存、安装到桌面/主屏,移动端原生体验。 + +🌗 响应式布局:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。 + +🚀 极简部署:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel 和 Cloudflare。 + +👿 智能去广告:自动跳过视频中的切片广告(实验性) + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/moontv/data.yml b/apps/moontv/data.yml new file mode 100644 index 000000000..ee4debc43 --- /dev/null +++ b/apps/moontv/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: moontv + name: MoonTV + tags: + - WebSite + - Local + shortDescZh: 跨平台的影视聚合播放站 + shortDescEn: Cross-platform video aggregation station + type: website + crossVersionUpdate: true + limit: 0 + website: https://github.com/senshinya/MoonTV/ + github: https://github.com/senshinya/MoonTV/ + document: https://github.com/senshinya/MoonTV/ diff --git a/apps/moontv/latest/data.yml b/apps/moontv/latest/data.yml new file mode 100644 index 000000000..9fee910ae --- /dev/null +++ b/apps/moontv/latest/data.yml @@ -0,0 +1,97 @@ +additionalProperties: + formFields: + - child: + default: "" + envKey: PANEL_REDIS_SERVICE + required: false + type: service + default: redis + envKey: PANEL_REDIS_TYPE + labelZh: Redis 服务 (前置检查) + labelEn: Redis Service (Pre-check) + required: false + type: apps + values: + - label: Redis + value: redis + - default: "/home/moontv" + edit: true + envKey: MOONTV_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "MoonTV" + edit: true + envKey: SITE_NAME + labelZh: 网站名称 + labelEn: Site Name + required: true + type: text + - default: "本网站仅提供影视信息搜索服务,所有内容均来自第三方网站。本站不存储任何视频资源,不对任何内容的准确性、合法性、完整性负责。" + edit: true + envKey: ANNOUNCEMENT + labelZh: 站点公告 + labelEn: Site Announcement + required: true + type: text + - default: 5 + edit: true + envKey: NEXT_PUBLIC_SEARCH_MAX_PAGE + labelZh: 搜索结果最大页数 + labelEn: Search result maximum number of pages + required: true + type: number + - default: "localstorage" + edit: true + envKey: NEXT_PUBLIC_STORAGE_TYPE + labelZh: 数据存储类型 + labelEn: Storage Type + required: true + type: select + values: + - label: 本地浏览器存储 + value: "localstorage" + - label: Redis + value: "redis" + - default: "redis://127.0.0.1:6379" + edit: true + envKey: REDIS_URL + labelZh: Redis 地址 (Redis 存储) + labelEn: Redis Address (Redis Storage) + required: false + type: text + - default: "" + edit: true + envKey: USERNAME + labelZh: Redis 用户 (Redis 存储) + labelEn: Redis User (Redis Storage) + required: false + type: text + - default: "" + edit: true + envKey: PASSWORD + labelZh: Redis 密码 (Redis 存储) + labelEn: Redis Password (Redis Storage) + required: false + type: password + - default: "false" + edit: true + envKey: NEXT_PUBLIC_ENABLE_REGISTER + labelZh: 是否允许注册 + labelEn: Enable Register + required: true + type: select + values: + - label: 允许注册 + value: "true" + - label: 禁用注册 + value: "false" diff --git a/apps/moontv/latest/docker-compose.yml b/apps/moontv/latest/docker-compose.yml new file mode 100644 index 000000000..5eb45d3a5 --- /dev/null +++ b/apps/moontv/latest/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true + +services: + moontv: + image: ghcr.io/senshinya/moontv:latest + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${MOONTV_ROOT_PATH}/data:/data + environment: + - TZ=Asia/Shanghai diff --git a/apps/moontv/latest/envs/default.env b/apps/moontv/latest/envs/default.env new file mode 100644 index 000000000..cd05f46e6 --- /dev/null +++ b/apps/moontv/latest/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/moontv/latest/envs/global.env b/apps/moontv/latest/envs/global.env new file mode 100644 index 000000000..e10989fe4 --- /dev/null +++ b/apps/moontv/latest/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/moontv/latest/scripts/init.sh b/apps/moontv/latest/scripts/init.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/moontv/latest/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/moontv/latest/scripts/uninstall.sh b/apps/moontv/latest/scripts/uninstall.sh new file mode 100644 index 000000000..c86c4fbca --- /dev/null +++ b/apps/moontv/latest/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/moontv/latest/scripts/upgrade.sh b/apps/moontv/latest/scripts/upgrade.sh new file mode 100644 index 000000000..07fb8c3fe --- /dev/null +++ b/apps/moontv/latest/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/moontv/logo.png b/apps/moontv/logo.png new file mode 100644 index 000000000..184fdaca3 Binary files /dev/null and b/apps/moontv/logo.png differ