# Core-Meidakit **Repository Path**: HSCTTT/core-meidakit ## Basic Information - **Project Name**: Core-Meidakit - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-26 - **Last Updated**: 2025-08-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MediaKit 一个基于 .NET 9.0 的现代化媒体处理平台,支持多种媒体格式的转换、处理和管理。 ## 🚀 特性 - **多格式支持**: 支持视频、音频、图片等多种媒体格式 - **插件化架构**: 基于 Docker 容器的插件系统,支持 FFmpeg、ImageMagick 等工具 - **异步处理**: 基于队列的异步任务处理系统 - **RESTful API**: 完整的 REST API 接口,支持 Swagger 文档 - **现代化架构**: 采用 Clean Architecture 和 DDD 设计模式 - **容器化部署**: 完整的 Docker 和 Docker Compose 支持 - **多数据库支持**: 支持 PostgreSQL 和 SQLite 数据库 ## 🏗️ 项目架构 ``` MediaKit/ ├── .dockerignore ├── .editorconfig ├── .gitignore ├── Dockerfile ├── MediaKit.sln ├── README.md ├── docker-compose.dev.yml ├── docker-compose.yml ├── docker/ # Docker 相关脚本 │ ├── build.bat │ ├── build.sh │ ├── deploy.bat │ └── deploy.sh ├── docs/ # 项目文档 │ ├── API.md │ ├── ARCHITECTURE.md │ ├── DEPLOYMENT.md │ ├── DEVELOPMENT.md │ └── KIMI AI提供的落地与阶段方案.txt └── src/ ├── MediaKit.Core/ # Web API 和 Worker 宿主 │ ├── Caching/ # 缓存相关功能 │ ├── Controllers/ # Web API 控制器 │ ├── Extensions/ # 扩展方法 │ ├── HealthChecks/ # 健康检查 │ ├── Logging/ # 日志配置 │ ├── Middleware/ # 中间件 │ ├── Models/ # 模型类 │ ├── Properties/ # 项目属性 │ ├── Services/ # 应用服务 │ ├── Validation/ # 验证相关 │ ├── Workers/ # 后台服务 │ ├── Program.cs # 程序入口 │ ├── MediaKit.Core.csproj │ ├── MediaKit.Core.http │ ├── appsettings.json │ ├── appsettings.Development.json │ └── mediakit.db # SQLite 数据库文件 ├── MediaKit.Domain/ # 领域模型和实体 │ ├── Entities/ # 实体类 │ └── MediaKit.Domain.csproj ├── MediaKit.Infrastructure/ # 数据访问和基础设施 │ ├── Configurations/ # EF Core 配置 │ ├── Data/ # 数据上下文 │ ├── Migrations/ # 数据库迁移 │ ├── Repositories/ # 仓储实现 │ └── MediaKit.Infrastructure.csproj └── MediaKit.SharedKernel/ # 共享内核和工具 ├── Constants/ # 常量定义 ├── DTOs/ # 数据传输对象 ├── Extensions/ # 扩展方法 ├── Utilities/ # 工具类 └── MediaKit.SharedKernel.csproj ``` ### 技术栈 - **框架**: .NET 9.0, ASP.NET Core - **数据库**: PostgreSQL / SQLite - **ORM**: Entity Framework Core - **缓存**: Redis - **容器化**: Docker, Docker Compose - **API 文档**: Swagger/OpenAPI - **架构模式**: Clean Architecture, Repository Pattern, Unit of Work ## 🛠️ 快速开始 ### 前置要求 - .NET 9.0 SDK - Docker 和 Docker Compose - Git ### 本地开发 1. **克隆项目** ```bash git clone https://gitee.com/HSCTTT/core-meidakit.git cd MediaKit ``` 2. **还原依赖** ```bash dotnet restore ``` 3. **运行数据库迁移** ```bash dotnet ef database update --project src/MediaKit.Infrastructure --startup-project src/MediaKit.Core ``` 4. **启动应用** ```bash dotnet run --project src/MediaKit.Core ``` 5. **访问应用** - API: http://localhost:5244 - Swagger 文档: http://localhost:5244/swagger ### Docker 部署 #### 生产环境部署 ```bash # Linux/macOS ./docker/deploy.sh # Windows .\docker\deploy.bat ``` #### 开发环境部署 ```bash docker-compose -f docker-compose.dev.yml up -d ``` #### 手动构建 ```bash # Linux/macOS ./docker/build.sh # Windows .\docker\build.bat ``` ## 📖 API 文档 ### 主要端点 #### 媒体项目管理 - `GET /api/mediaitems` - 获取媒体项目列表 - `GET /api/mediaitems/{id}` - 获取特定媒体项目 - `POST /api/mediaitems` - 创建新的媒体项目 - `PUT /api/mediaitems/{id}` - 更新媒体项目 - `DELETE /api/mediaitems/{id}` - 删除媒体项目 #### 任务管理 - `GET /api/jobs` - 获取任务列表 - `GET /api/jobs/{id}` - 获取特定任务 - `POST /api/jobs` - 创建新任务 - `PATCH /api/jobs/{id}/state` - 更新任务状态 - `DELETE /api/jobs/{id}` - 删除任务 - `GET /api/jobs/statistics` - 获取任务统计信息 ### 配置说明 #### appsettings.json ```json { "DatabaseProvider": "Sqlite", // 或 "PostgreSQL" "ConnectionStrings": { "DefaultConnection": "Data Source=mediakit.db" }, "MediaKit": { "StoragePath": "./storage", "TempPath": "./temp", "MaxFileSize": 104857600, "SupportedFormats": [ "mp4", "avi", "mov", "mkv", "mp3", "wav", "flac", "jpg", "jpeg", "png", "gif", "webp" ] } } ``` ## 🔧 开发指南 ### 项目结构说明 #### MediaKit.Core 主应用程序,包含: - **Caching**: 缓存相关功能和扩展方法 - **Controllers**: Web API 控制器 - **Extensions**: 依赖注入和服务扩展 - **HealthChecks**: 健康检查服务 - **Logging**: 日志配置和结构化日志 - **Middleware**: 全局异常处理等中间件 - **Models**: 应用模型和响应类 - **Services**: 应用服务(扫描服务、遥测服务等) - **Validation**: 输入验证和数据验证 - **Workers**: 后台服务和任务处理器 #### MediaKit.Domain 领域层,包含: - **Entities**: 实体类(MediaItem, Job, DeadLetter 等) - 业务逻辑和领域规则 #### MediaKit.Infrastructure 基础设施层,包含: - **Data**: EF Core DbContext 和配置 - **Repositories**: 仓储模式实现 - **Configurations**: 实体配置 #### MediaKit.SharedKernel 共享内核,包含: - **Constants**: 常量定义 - **DTOs**: 数据传输对象 - **Extensions**: 扩展方法 - **Utilities**: 工具类 ### 添加新功能 1. **添加新实体** - 在 `MediaKit.Domain/Entities` 中创建实体类 - 在 `MediaKit.Infrastructure/Configurations` 中添加 EF 配置 - 创建并应用数据库迁移 2. **添加新 API 端点** - 在 `MediaKit.Core/Controllers` 中创建控制器 - 实现相应的业务逻辑 - 更新 API 文档 3. **添加新的后台任务** - 在 `MediaKit.Core/Workers` 中创建 Worker 类 - 在 `ServiceCollectionExtensions` 中注册服务 ## 🐳 Docker 配置 ### 环境变量 - `ASPNETCORE_ENVIRONMENT`: 运行环境(Development/Production) - `ConnectionStrings__DefaultConnection`: 数据库连接字符串 - `DatabaseProvider`: 数据库提供程序(Sqlite/PostgreSQL) - `MediaKit__StoragePath`: 存储路径 - `MediaKit__TempPath`: 临时文件路径 ### 数据卷 - `mediakit-storage`: 媒体文件存储 - `mediakit-temp`: 临时文件存储 - `postgres-data`: PostgreSQL 数据 - `redis-data`: Redis 数据 ## 🧪 测试 ```bash # 运行所有测试 dotnet test # 运行特定项目的测试 dotnet test tests/MediaKit.Tests ``` ## 📝 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。 ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📞 支持 如有问题,请通过以下方式联系: - 提交 GitHub Issue - 发送邮件至项目维护者 --- **MediaKit** - 让媒体处理变得简单高效!