diff --git a/D1初始化.md b/D1初始化.md index f6dc790..5c80853 100644 --- a/D1初始化.md +++ b/D1初始化.md @@ -1,75 +1,75 @@ ```sql CREATE TABLE IF NOT EXISTS users ( - username TEXT PRIMARY KEY, - password TEXT NOT NULL, - created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) - ); + username TEXT PRIMARY KEY, + password TEXT NOT NULL, + created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) +); - CREATE TABLE IF NOT EXISTS play_records ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - username TEXT NOT NULL, - key TEXT NOT NULL, - title TEXT NOT NULL, - source_name TEXT NOT NULL, - cover TEXT NOT NULL, - year TEXT NOT NULL, - index_episode INTEGER NOT NULL, - total_episodes INTEGER NOT NULL, - play_time INTEGER NOT NULL, - total_time INTEGER NOT NULL, - save_time INTEGER NOT NULL, - search_title TEXT, - UNIQUE(username, key) - ); +CREATE TABLE IF NOT EXISTS play_records ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL, + key TEXT NOT NULL, + title TEXT NOT NULL, + source_name TEXT NOT NULL, + cover TEXT NOT NULL, + year TEXT NOT NULL, + index_episode INTEGER NOT NULL, + total_episodes INTEGER NOT NULL, + play_time INTEGER NOT NULL, + total_time INTEGER NOT NULL, + save_time INTEGER NOT NULL, + search_title TEXT, + UNIQUE(username, key) +); - CREATE TABLE IF NOT EXISTS favorites ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - username TEXT NOT NULL, - key TEXT NOT NULL, - title TEXT NOT NULL, - source_name TEXT NOT NULL, - cover TEXT NOT NULL, - year TEXT NOT NULL, - total_episodes INTEGER NOT NULL, - save_time INTEGER NOT NULL, - UNIQUE(username, key) - ); +CREATE TABLE IF NOT EXISTS favorites ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL, + key TEXT NOT NULL, + title TEXT NOT NULL, + source_name TEXT NOT NULL, + cover TEXT NOT NULL, + year TEXT NOT NULL, + total_episodes INTEGER NOT NULL, + save_time INTEGER NOT NULL, + UNIQUE(username, key) +); - CREATE TABLE IF NOT EXISTS search_history ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - username TEXT NOT NULL, - keyword TEXT NOT NULL, - created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), - UNIQUE(username, keyword) - ); +CREATE TABLE IF NOT EXISTS search_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + username TEXT NOT NULL, + keyword TEXT NOT NULL, + created_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')), + UNIQUE(username, keyword) +); - CREATE TABLE IF NOT EXISTS admin_config ( - id INTEGER PRIMARY KEY DEFAULT 1, - config TEXT NOT NULL, - updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now')) - ); +CREATE TABLE IF NOT EXISTS admin_config ( + id INTEGER PRIMARY KEY DEFAULT 1, + config TEXT NOT NULL, + 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_favorites_username ON favorites(username); - CREATE INDEX IF NOT EXISTS idx_search_history_username ON search_history(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_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_save_time ON play_records(username, save_time DESC); +-- 复合索引优化查询性能 +-- 播放记录:用户名+键值的复合索引,用于快速查找特定记录 +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_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_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_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_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_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); ``` diff --git a/README.md b/README.md index 640163e..6b98cac 100644 --- a/README.md +++ b/README.md @@ -23,10 +23,10 @@ - 🔍 **多源聚合搜索**:内置数十个免费资源站点,一次搜索立刻返回全源结果。 - 📄 **丰富详情页**:支持剧集列表、演员、年份、简介等完整信息展示。 - ▶️ **流畅在线播放**:集成 HLS.js & ArtPlayer。 -- ❤️ **收藏 + 继续观看**:Docker 部署支持 Redis 存储,多端同步进度。 +- ❤️ **收藏 + 继续观看**:支持 Redis/D1 存储,多端同步进度。 - 📱 **PWA**:离线缓存、安装到桌面/主屏,移动端原生体验。 - 🌗 **响应式布局**:桌面侧边栏 + 移动底部导航,自适应各种屏幕尺寸。 -- 🚀 **极简部署**:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel。 +- 🚀 **极简部署**:一条 Docker 命令即可将完整服务跑起来,或免费部署到 Vercel 和 Cloudflare。 - 👿 **智能去广告**:自动跳过视频中的切片广告(实验性)
@@ -78,6 +78,8 @@ ### Cloudflare 部署 +#### 普通部署(localstorage) + 1. **Fork** 本仓库到你的 GitHub 账户。 2. 登陆 [Cloudflare](https://cloudflare.com),点击 **计算(Workers)-> Workers 和 Pages**,点击创建 3. 选择 Pages,导入现有的 Git 存储库,选择 Fork 后的仓库 @@ -87,6 +89,14 @@ 7. 如需自定义 `config.json`,请直接修改 Fork 后仓库中该文件。 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 部署 > 适用于自建服务器 / NAS / 群晖等场景。 @@ -213,7 +223,7 @@ MoonTV 支持标准的苹果 CMS V10 API 格式。 ## 管理员配置 -**该特性目前仅支持通过 Docker Redis 的部署方式使用** +**该特性目前仅支持通过 Docker+Redis 或 Cloudflare+D1 的部署方式使用** 支持在运行时动态变更服务配置