feat: add app MoonTV

This commit is contained in:
arch3rPro
2025-07-26 10:36:14 +08:00
parent 64625105d1
commit b171254e61
9 changed files with 137 additions and 0 deletions

20
apps/moontv/README.md Normal file
View File

@@ -0,0 +1,20 @@
# MoonTV
> 🎬 **MoonTV** 是一个开箱即用的、跨平台的影视聚合播放器。它基于 **Next.js 14** + **Tailwind CSS** + **TypeScript** 构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。
![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/MoonTV.png)
![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white)
## ✨ 功能特性
- 🔍 **多源聚合搜索**:内置数十个免费资源站点,一次搜索立刻返回全源结果。
- 📄 **丰富详情页**:支持剧集列表、演员、年份、简介等完整信息展示。
- ▶️ **流畅在线播放**:集成 HLS.js & VidStack。
- ❤️ **收藏 + 继续观看**LocalStorage 存储,后续扩展 DB 存储。
- 📱 **PWA**:离线缓存、安装到桌面/主屏,移动端原生体验。
- 🌗 **响应式布局**:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。
- 🚀 **极简部署**:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel。
- 👿 **智能去广告**:自动跳过视频中的切片广告(实验性)

18
apps/moontv/README_EN.md Normal file
View File

@@ -0,0 +1,18 @@
# MoonTV
> 🎬 **MoonTV** is an out-of-the-box, cross-platform video aggregation player. Built with **Next.js 14** + **Tailwind CSS** + **TypeScript**, it supports multi-source search, online playback, favorites synchronization, viewing history, local/cloud storage, allowing you to enjoy massive free video content anytime, anywhere.
![](https://cdn.jsdelivr.net/gh/xiaoY233/PicList@main/public/assets/MoonTV.png)
![](https://img.shields.io/badge/Copyright-arch3rPro-ff9800?style=flat&logo=github&logoColor=white)
## ✨ Features
- 🔍 **Multi-source Aggregated Search**: Built-in dozens of free resource sites, returning results from all sources with a single search.
- 📄 **Rich Detail Pages**: Support for episode lists, actors, year, synopsis, and other complete information display.
- ▶️ **Smooth Online Playback**: Integrated with HLS.js & VidStack.
- ❤️ **Favorites + Continue Watching**: LocalStorage storage, with future expansion to DB storage.
- 📱 **PWA**: Offline caching, install to desktop/home screen, native mobile experience.
- 🌗 **Responsive Layout**: Desktop sidebar + mobile bottom navigation, adapting to various screen sizes.
- 🚀 **Minimal Deployment**: A single Docker command can run the complete service, or deploy for free to Vercel.
- 👿 **Smart Ad Blocking**: Automatically skip video segment ads (experimental).

22
apps/moontv/data.yml Normal file
View File

@@ -0,0 +1,22 @@
name: MoonTV
tags:
- 多媒体
title: MoonTV 一个开箱即用的、跨平台的影视聚合播放站
description: 🎬 MoonTV 是一个开箱即用的、跨平台的影视聚合播放器。它基于 Next.js 14 + Tailwind CSS + TypeScript 构建,支持多资源搜索、在线播放、收藏同步、播放记录、本地/云端存储,让你可以随时随地畅享海量免费影视内容。
additionalProperties:
key: moontv
name: MoonTV
tags:
- Media
shortDescZh: moontv - 免费在线视频搜索与观看平台
shortDescEn: moontv - Free Online Video Search and Viewing Platform
type: website
crossVersionUpdate: true
limit: 0
recommend: 0
website: https://github.com/senshinya/MoonTV
github: https://github.com/senshinya/MoonTV
document: https://github.com/senshinya/MoonTV/blob/main/README.md
architectures:
- amd64
- arm64

View File

@@ -0,0 +1,17 @@
additionalProperties:
formFields:
- default: 40249
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: ""
edit: true
envKey: PASSWORD
labelEn: Password
labelZh: 密码
required: true
type: text

View File

@@ -0,0 +1,17 @@
services:
moontv:
image: ghcr.io/senshinya/moontv:latest
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
environment:
- PASSWORD=${PASSWORD}
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true

BIN
apps/moontv/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

View File

@@ -0,0 +1,17 @@
additionalProperties:
formFields:
- default: 40249
edit: true
envKey: PANEL_APP_PORT_HTTP
labelEn: Port
labelZh: 端口
required: true
rule: paramPort
type: number
- default: ""
edit: true
envKey: PASSWORD
labelEn: Password
labelZh: 密码
required: true
type: text

View File

@@ -0,0 +1,17 @@
services:
moontv:
image: ghcr.io/senshinya/moontv:sha-27ae84b
container_name: ${CONTAINER_NAME}
restart: always
networks:
- 1panel-network
ports:
- "${PANEL_APP_PORT_HTTP}:3000"
environment:
- PASSWORD=${PASSWORD}
labels:
createdBy: "Apps"
networks:
1panel-network:
external: true