feat: update readme

This commit is contained in:
shinya
2025-07-14 21:02:59 +08:00
parent c2ebf5758e
commit 7e6f4bcadc
2 changed files with 76 additions and 66 deletions

View File

@@ -1,75 +1,75 @@
```sql ```sql
CREATE TABLE IF NOT EXISTS users ( CREATE TABLE IF NOT EXISTS users (
username TEXT PRIMARY KEY, username TEXT PRIMARY KEY,
password TEXT NOT NULL, password TEXT NOT NULL,
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
); );
CREATE TABLE IF NOT EXISTS play_records ( CREATE TABLE IF NOT EXISTS play_records (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL, username TEXT NOT NULL,
key TEXT NOT NULL, key TEXT NOT NULL,
title TEXT NOT NULL, title TEXT NOT NULL,
source_name TEXT NOT NULL, source_name TEXT NOT NULL,
cover TEXT NOT NULL, cover TEXT NOT NULL,
year TEXT NOT NULL, year TEXT NOT NULL,
index_episode INTEGER NOT NULL, index_episode INTEGER NOT NULL,
total_episodes INTEGER NOT NULL, total_episodes INTEGER NOT NULL,
play_time INTEGER NOT NULL, play_time INTEGER NOT NULL,
total_time INTEGER NOT NULL, total_time INTEGER NOT NULL,
save_time INTEGER NOT NULL, save_time INTEGER NOT NULL,
search_title TEXT, search_title TEXT,
UNIQUE(username, key) UNIQUE(username, key)
); );
CREATE TABLE IF NOT EXISTS favorites ( CREATE TABLE IF NOT EXISTS favorites (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL, username TEXT NOT NULL,
key TEXT NOT NULL, key TEXT NOT NULL,
title TEXT NOT NULL, title TEXT NOT NULL,
source_name TEXT NOT NULL, source_name TEXT NOT NULL,
cover TEXT NOT NULL, cover TEXT NOT NULL,
year TEXT NOT NULL, year TEXT NOT NULL,
total_episodes INTEGER NOT NULL, total_episodes INTEGER NOT NULL,
save_time INTEGER NOT NULL, save_time INTEGER NOT NULL,
UNIQUE(username, key) UNIQUE(username, key)
); );
CREATE TABLE IF NOT EXISTS search_history ( CREATE TABLE IF NOT EXISTS search_history (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL, username TEXT NOT NULL,
keyword TEXT NOT NULL, keyword TEXT NOT NULL,
created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
UNIQUE(username, keyword) UNIQUE(username, keyword)
); );
CREATE TABLE IF NOT EXISTS admin_config ( CREATE TABLE IF NOT EXISTS admin_config (
id INTEGER PRIMARY KEY DEFAULT 1, id INTEGER PRIMARY KEY DEFAULT 1,
config TEXT NOT NULL, config TEXT NOT NULL,
updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
); );
-- 基本索引 -- 基本索引
CREATE INDEX IF NOT EXISTS idx_play_records_username ON play_records(username); CREATE INDEX IF NOT EXISTS idx_play_records_username ON play_records(username);
CREATE INDEX IF NOT EXISTS idx_favorites_username ON favorites(username); CREATE INDEX IF NOT EXISTS idx_favorites_username ON favorites(username);
CREATE INDEX IF NOT EXISTS idx_search_history_username ON search_history(username); CREATE INDEX IF NOT EXISTS idx_search_history_username ON search_history(username);
-- 复合索引优化查询性能 -- 复合索引优化查询性能
-- 播放记录:用户名+键值的复合索引,用于快速查找特定记录 -- 播放记录:用户名+键值的复合索引,用于快速查找特定记录
CREATE INDEX IF NOT EXISTS idx_play_records_username_key ON play_records(username, key); CREATE INDEX IF NOT EXISTS idx_play_records_username_key ON play_records(username, key);
-- 播放记录:用户名+保存时间的复合索引,用于按时间排序的查询 -- 播放记录:用户名+保存时间的复合索引,用于按时间排序的查询
CREATE INDEX IF NOT EXISTS idx_play_records_username_save_time ON play_records(username, save_time DESC); CREATE INDEX IF NOT EXISTS idx_play_records_username_save_time ON play_records(username, save_time DESC);
-- 收藏:用户名+键值的复合索引,用于快速查找特定收藏 -- 收藏:用户名+键值的复合索引,用于快速查找特定收藏
CREATE INDEX IF NOT EXISTS idx_favorites_username_key ON favorites(username, key); CREATE INDEX IF NOT EXISTS idx_favorites_username_key ON favorites(username, key);
-- 收藏:用户名+保存时间的复合索引,用于按时间排序的查询 -- 收藏:用户名+保存时间的复合索引,用于按时间排序的查询
CREATE INDEX IF NOT EXISTS idx_favorites_username_save_time ON favorites(username, save_time DESC); CREATE INDEX IF NOT EXISTS idx_favorites_username_save_time ON favorites(username, save_time DESC);
-- 搜索历史:用户名+关键词的复合索引,用于快速查找/删除特定搜索记录 -- 搜索历史:用户名+关键词的复合索引,用于快速查找/删除特定搜索记录
CREATE INDEX IF NOT EXISTS idx_search_history_username_keyword ON search_history(username, keyword); CREATE INDEX IF NOT EXISTS idx_search_history_username_keyword ON search_history(username, keyword);
-- 搜索历史:用户名+创建时间的复合索引,用于按时间排序的查询 -- 搜索历史:用户名+创建时间的复合索引,用于按时间排序的查询
CREATE INDEX IF NOT EXISTS idx_search_history_username_created_at ON search_history(username, created_at DESC); CREATE INDEX IF NOT EXISTS idx_search_history_username_created_at ON search_history(username, created_at DESC);
-- 搜索历史清理查询的优化索引 -- 搜索历史清理查询的优化索引
CREATE INDEX IF NOT EXISTS idx_search_history_username_id_created_at ON search_history(username, id, created_at DESC); CREATE INDEX IF NOT EXISTS idx_search_history_username_id_created_at ON search_history(username, id, created_at DESC);
``` ```

View File

@@ -23,10 +23,10 @@
- 🔍 **多源聚合搜索**:内置数十个免费资源站点,一次搜索立刻返回全源结果。 - 🔍 **多源聚合搜索**:内置数十个免费资源站点,一次搜索立刻返回全源结果。
- 📄 **丰富详情页**:支持剧集列表、演员、年份、简介等完整信息展示。 - 📄 **丰富详情页**:支持剧集列表、演员、年份、简介等完整信息展示。
- ▶️ **流畅在线播放**:集成 HLS.js & ArtPlayer。 - ▶️ **流畅在线播放**:集成 HLS.js & ArtPlayer。
- ❤️ **收藏 + 继续观看**Docker 部署支持 Redis 存储,多端同步进度。 - ❤️ **收藏 + 继续观看**:支持 Redis/D1 存储,多端同步进度。
- 📱 **PWA**:离线缓存、安装到桌面/主屏,移动端原生体验。 - 📱 **PWA**:离线缓存、安装到桌面/主屏,移动端原生体验。
- 🌗 **响应式布局**:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。 - 🌗 **响应式布局**:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。
- 🚀 **极简部署**:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel。 - 🚀 **极简部署**:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel 和 Cloudflare
- 👿 **智能去广告**:自动跳过视频中的切片广告(实验性) - 👿 **智能去广告**:自动跳过视频中的切片广告(实验性)
<details> <details>
@@ -78,6 +78,8 @@
### Cloudflare 部署 ### Cloudflare 部署
#### 普通部署localstorage
1. **Fork** 本仓库到你的 GitHub 账户。 1. **Fork** 本仓库到你的 GitHub 账户。
2. 登陆 [Cloudflare](https://cloudflare.com),点击 **计算Workers-> Workers 和 Pages**,点击创建 2. 登陆 [Cloudflare](https://cloudflare.com),点击 **计算Workers-> Workers 和 Pages**,点击创建
3. 选择 Pages导入现有的 Git 存储库,选择 Fork 后的仓库 3. 选择 Pages导入现有的 Git 存储库,选择 Fork 后的仓库
@@ -87,6 +89,14 @@
7. 如需自定义 `config.json`,请直接修改 Fork 后仓库中该文件。 7. 如需自定义 `config.json`,请直接修改 Fork 后仓库中该文件。
8. 每次 Push 到 `main` 分支将自动触发重新构建。 8. 每次 Push 到 `main` 分支将自动触发重新构建。
#### D1 支持
1. 点击 **存储和数据库 -> D1 SQL 数据库**,创建一个新的数据库,名称随意
2. 进入刚创建的数据库,点击左上角的 Explore Data将[D1 初始化](D1初始化.md) 中的内容粘贴到 Query 窗口后点击 Run All等待运行完成
3. 返回你的 pages 项目,进入 **设置 -> 绑定**,添加绑定 D1 数据库,选择你刚创建的数据库,变量名称填 **DB**
4. 设置环境变量 NEXT_PUBLIC_STORAGE_TYPE值为 d1设置 USERNAME 和 PASSWORD 作为站长账号
5. 重试部署
### Docker 部署 ### Docker 部署
> 适用于自建服务器 / NAS / 群晖等场景。 > 适用于自建服务器 / NAS / 群晖等场景。
@@ -213,7 +223,7 @@ MoonTV 支持标准的苹果 CMS V10 API 格式。
## 管理员配置 ## 管理员配置
**该特性目前仅支持通过 Docker Redis 的部署方式使用** **该特性目前仅支持通过 Docker+Redis 或 Cloudflare+D1 的部署方式使用**
支持在运行时动态变更服务配置 支持在运行时动态变更服务配置