📁 项目结构
根目录
misaka_danmu_server/
├── config/ # 配置文件目录
│ ├── config.yml # 主配置文件
│ ├── logs/ # 日志目录
│ └── mysql.cnf # MySQL配置
├── migrations/ # 数据库迁移脚本
├── src/ # 后端源代码 (Python/FastAPI)
├── static/ # 静态资源
│ └── swagger-ui/ # Swagger UI资源
├── tools/ # 工具脚本
├── web/ # 前端源代码 (React/Vite)
├── Dockerfile # Docker构建文件
├── docker-compose.yml # Docker Compose配置
├── requirements.txt # Python依赖
├── run.sh # 启动脚本
└── README.md # 项目说明📂 src/ - 后端源代码
核心文件
src/
├── main.py # 应用入口
├── _version.py # 版本信息
├── security.py # 安全认证模块
└── sql.py # SQL工具API 路由层 (api/)
src/api/
├── control/ # 控制面板API
│ ├── danmaku_routes.py # 弹幕相关路由
│ ├── import_routes.py # 导入相关路由
│ ├── library_routes.py # 媒体库路由
│ ├── settings_routes.py # 设置路由
│ ├── task_routes.py # 任务路由
│ └── token_routes.py # Token路由
├── dandan/ # DandanPlay兼容API
│ ├── bangumi.py # 番剧API
│ ├── comments.py # 弹幕评论API
│ ├── match.py # 匹配API
│ ├── search.py # 搜索API
│ ├── danmaku_color.py # 弹幕颜色处理
│ ├── danmaku_filter.py # 弹幕过滤
│ └── danmaku_parser.py # 弹幕解析
├── ui/ # Web UI API
│ ├── anime.py # 番剧管理
│ ├── auth.py # 认证
│ ├── backup.py # 备份管理
│ ├── config.py # 配置管理
│ ├── danmaku_edit.py # 弹幕编辑
│ ├── episode.py # 分集管理
│ ├── import_api.py # 导入API
│ ├── local_danmaku.py # 本地弹幕
│ ├── media_server.py # 媒体服务器
│ ├── scraper.py # 爬虫管理
│ ├── search.py # 搜索
│ ├── source.py # 弹幕源管理
│ └── task.py # 任务管理
└── webhook_api.py # Webhook APIAI 匹配模块 (ai/)
src/ai/
├── ai_matcher.py # AI匹配器
├── ai_matcher_manager.py # AI匹配管理
├── ai_providers.py # AI提供商
├── ai_prompts.py # AI提示词
├── ai_cache.py # AI缓存
└── ai_metrics.py # AI指标数据库层 (db/)
src/db/
├── database.py # 数据库连接
├── orm_models.py # ORM模型定义
├── models.py # Pydantic模型
├── migrations.py # 迁移管理
├── cache_manager.py # 缓存管理
├── config_manager.py # 配置管理
├── db_maintainer.py # 数据库维护
└── crud/ # CRUD操作
├── anime.py # 番剧CRUD
├── episode.py # 分集CRUD
├── danmaku.py # 弹幕CRUD
├── source.py # 源CRUD
├── user.py # 用户CRUD
├── config.py # 配置CRUD
└── task.py # 任务CRUD弹幕爬取 (scrapers/)
src/scrapers/
├── base.py # 爬取基类
└── XXXX.py # XXX爬取元数据源 (metadata_sources/)
src/metadata_sources/
├── base.py # 元数据源基类
├── tmdb.py # TMDB元数据
├── tvdb.py # TVDB元数据
├── bangumi.py # Bangumi元数据
├── douban.py # 豆瓣元数据
├── imdb.py # IMDB元数据
└── 360.py # 360影视元数据媒体服务器集成 (media_servers/)
src/media_servers/
├── base.py # 媒体服务器基类
├── emby.py # Emby集成
├── jellyfin.py # Jellyfin集成
└── plex.py # Plex集成业务服务层 (services/)
src/services/
├── scraper_manager.py # 爬取管理器
├── metadata_manager.py # 元数据管理器
├── media_server_manager.py # 媒体服务器管理器
├── task_manager.py # 任务管理器
├── download_task_manager.py # 下载任务管理器
├── scheduler.py # 调度器
├── search.py # 搜索服务
├── name_converter.py # 名称转换器
├── title_recognition.py # 标题识别
├── log_manager.py # 日志管理器
└── webhook_manager.py # Webhook管理器📂 web/ - 前端源代码
web/
├── index.html # HTML入口
├── package.json # NPM配置
├── vite.config.js # Vite配置
├── dist/ # 构建输出
├── public/ # 公共资源
└── src/ # 源代码
├── main.jsx # React入口
├── App.jsx # 根组件
├── index.css # 全局样式 (Tailwind)
├── ThemeProvider.jsx # 主题提供者 (Ant Design)
├── MessageContext.jsx # 消息上下文
├── ModalContext.jsx # 弹窗上下文
│
├── apis/ # API调用
│ ├── fetch.js # 请求封装
│ └── index.js # API导出
│
├── components/ # 通用组件
│ ├── AddSourceModal.jsx # 添加源弹窗
│ ├── BatchImportModal.jsx # 批量导入弹窗
│ ├── CreateAnimeModal.jsx # 创建番剧弹窗
│ ├── DanmakuEditModal.jsx # 弹幕编辑弹窗
│ ├── DarkModeToggle.jsx # 深色模式切换
│ ├── ResponsiveModal.jsx # 响应式弹窗
│ ├── ResponsiveTable.jsx # 响应式表格
│ ├── SortablePriorityList.jsx # 可拖拽优先级列表
│ └── VersionModal.jsx # 版本弹窗
│
├── general/ # 布局组件
│ ├── Layout.jsx # 主布局
│ ├── Header.jsx # 头部
│ ├── Router.jsx # 路由配置
│ └── NotFound.jsx # 404页面
│
├── pages/ # 页面组件
│ ├── home/ # 首页
│ ├── anime/ # 番剧详情页
│ ├── episode/ # 分集详情页
│ ├── source/ # 弹幕源管理
│ ├── bullet/ # 弹幕管理
│ ├── task/ # 任务管理
│ ├── media-fetch/ # 媒体获取
│ ├── library/ # 媒体库
│ ├── setting/ # 设置页
│ ├── control/ # 控制面板
│ └── login/ # 登录页
│
├── hooks/ # 自定义Hooks
│ ├── useDebounce.js # 防抖Hook
│ └── useScroll.js # 滚动Hook
│
└── utils/ # 工具函数
├── data.js # 数据处理
└── localstroage.js # 本地存储📝 关键文件说明
| 文件 | 说明 |
|---|---|
src/main.py | FastAPI应用入口,注册所有路由和中间件 |
src/db/orm_models.py | SQLAlchemy ORM模型定义 |
src/db/models.py | Pydantic数据模型 |
src/scrapers/base.py | 弹幕基类,定义爬取接口 |
src/services/scraper_manager.py | 爬取管理器,统一管理所有弹幕源 |
web/src/ThemeProvider.jsx | Ant Design主题配置(亮色/深色) |
web/src/index.css | Tailwind CSS全局样式和CSS变量 |
🎨 主题配色
CSS变量定义 (web/src/index.css)
| 变量 | 亮色模式 | 深色模式 | 说明 |
|---|---|---|---|
--color-bg | #fff9fb | #0f172a | 页面背景 |
--color-card | #ffffff | #1e293b | 卡片背景 |
--color-hover | #fff0f5 | #273449 | 悬停/高亮背景 |
--color-primary | #ff6b9b | #ff6b9b | 主题色(粉色) |
--color-border | #ffd9e5 | #334155 | 边框颜色 |
--color-text | #333333 | #f8fafc | 主文字颜色 |
提示
如需添加新的弹幕源,请参考 src/scrapers/base.py 中的基类定义,并在 src/services/scraper_manager.py 中注册新的爬虫。
