No description
Find a file
2026-02-22 18:00:48 +08:00
LICENSE Initial commit 2026-02-22 17:51:00 +08:00
README.md Update README.md 2026-02-22 18:00:48 +08:00
woker.js CMS 2026-02-22 17:56:56 +08:00

FilmCMS

基于 Cloudflare Workers + D1 + KV 构建的轻量级影视内容管理系统,无需服务器,免费部署。

功能特性

  • 🎬 影片管理(增删改查、关键词搜索)
  • 📡 采集源管理(支持苹果 CMS V10 接口格式)
  • 📋 采集任务记录
  • 🏷️ 分类管理
  • 🔐 管理员登录 / 修改密码
  • 全部运行在 Cloudflare Edge无需服务器

技术栈

  • 运行时Cloudflare Workers
  • 数据库Cloudflare D1SQLite
  • 缓存Cloudflare KV
  • 前端:原生 HTML + JS内嵌在 Worker
  • 认证JWTHMAC-SHA256

部署教程

1. 创建 D1 数据库

  1. 登录 dash.cloudflare.com
  2. 进入 Storage & Databases → D1 SQL Database
  3. 创建数据库,名称:filmcms-db
  4. Console 中逐条执行以下建表 SQL
CREATE TABLE IF NOT EXISTS admins (
  id TEXT PRIMARY KEY,
  username TEXT UNIQUE NOT NULL,
  password_hash TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS movies (
  id TEXT PRIMARY KEY,
  source_id TEXT,
  remote_id TEXT,
  title TEXT NOT NULL,
  poster_url TEXT,
  type TEXT,
  year TEXT,
  rating TEXT,
  description TEXT,
  play_sources TEXT,
  created_at INTEGER,
  updated_at INTEGER
);

CREATE TABLE IF NOT EXISTS collect_sources (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  api_url TEXT NOT NULL,
  auto_collect INTEGER DEFAULT 0,
  enabled INTEGER DEFAULT 1,
  last_collected_at INTEGER,
  created_at INTEGER
);

CREATE TABLE IF NOT EXISTS collect_tasks (
  id TEXT PRIMARY KEY,
  source_id TEXT,
  source_name TEXT,
  trigger TEXT,
  status TEXT,
  total INTEGER DEFAULT 0,
  inserted INTEGER DEFAULT 0,
  updated INTEGER DEFAULT 0,
  started_at INTEGER,
  finished_at INTEGER
);

CREATE TABLE IF NOT EXISTS categories (
  id TEXT PRIMARY KEY,
  name TEXT NOT NULL,
  slug TEXT UNIQUE NOT NULL
);

再单独执行插入默认管理员:

INSERT OR IGNORE INTO admins (id, username, password_hash) VALUES (
  'admin-001',
  'admin',
  '240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9'
);

2. 创建 KV 命名空间

  1. 进入 Storage & Databases → KV
  2. 创建命名空间,名称:filmcms-kv

3. 创建 Worker

  1. 进入 Workers & Pages → Create Worker
  2. 粘贴 worker.js 全部代码 → Deploy

4. 绑定环境变量

在 Worker Settings → Bindings 中添加:

Type Variable Name
D1 Database DB 选择 filmcms-db
KV Namespace KV 选择 filmcms-kv
Text JWT_SECRET 任意随机字符串

默认账号

字段
账号 admin
密码 admin123

⚠️ 首次登录后请立即在「设置 → 修改密码」中更改默认密码。

采集源格式

支持标准苹果 CMS V10 JSON API接口格式示例

https://example.com/api.php/provide/vod

License

MIT