StrmAssistant插件架构与核心API设计
架构层次分析
StrmAssistant采用分层模块化设计,核心功能划分为五个独立单元,通过命名空间明确职责:
StrmAssistant/
├── Core/ # 基础API与工具集
├── Background/ # 后台任务调度
├── ApiService/ # Web接口服务
├── Config/ # 配置管理
└── IntroHandler/ # 片头处理模块
命名空间功能解析
- StrmAssistant.Core:基础服务(如MetadataAnalyzer、SegmentApi)
- StrmAssistant.Background:定时任务(元数据抓取、缓存生成)
- StrmAssistant.ApiService:HTTP端点(资源锁定、版本清理)
- StrmAssistant.Config:配置项管理(元数据抓取参数)
插件入口实现
通过继承Emby的BasePlugin实现核心入口:
public class MainPlugin : BasePluginSimpleUI<ConfigOptions>, IThumbProvider
{
protected override async Task OnActivated()
{
// 服务注册与初始化
}
}
核心API实现
1. 元数据处理组件
MetadataAnalyzer负责媒体信息解析:
public class MetadataAnalyzer
{
public async Task<MediaMetadata> FetchMetadata(string mediaPath)
{
// 异步获取元数据
}
}
2. 后台任务引擎
Background模块实现定时作业:
namespace StrmAssistant.Background
{
public class MetadataFetchJob : IBackgroundJob
{
public async Task Run(CancellationToken token, IProgress<double> status)
{
// 后台元数据抓取逻辑
}
}
}
3. Web服务端点
ApiService定义REST接口:
namespace StrmAssistant.ApiService
{
[Route("/api/assistant/lock")]
public class ResourceLocker : IRequestHandler
{
public async Task HandleAsync(HttpContext ctx)
{
// 资源锁定处理
}
}
}
开发环境配置
基础依赖与项目结构:
git clone https://gitcode.com/gh_mirrors/st/StrmAssistant
- 依赖项:.NET 5+ SDK, Emby SDK
- 关键文件:项目配置(StrmAssistant.csproj), 入口类(MainPlugin.cs)
开发准则
- API设计原则:
- 单一职责接口
- 异步非阻塞实现
- 任务调度规范:
- 耗时操作使用Background模块
- 支持进度反馈与中断
- 配置管理:
- 通过Config模块集中管理
- 配置验证工具集成
核心资源索引
- 基础API:Core/ 目录
- 任务实现:Background/ 模块
- Web接口:ApiService/ 端点