github jinlin-teck/StrmTool v2.1.1-emby

latest releases: v2.5.1-emby, v2.5.0-emby, v2.4.0-jellyfin...
3 months ago

常规更新

✨ Features

  • 支持纯音频文件:优化判断逻辑,现在可以正确处理纯音频 strm 文件(如音乐、电台等)
  • 完善媒体信息采集:新增文件大小、容器格式等信息的采集,使备份信息更加完整
  • 添加最大并发控制:新增 CommonConfiguration.MaxConcurrency 配置,默认值为 3
  • 改进提取任务并发处理:使用 SemaphoreSlim 控制提取任务的最大并发数,提升系统稳定性

🐛 Bug Fixes

  • 修复 STRM 文件读取异常处理:为 StrmMediaInfoService.ReadStrmSourcePath() 添加完整的异常处理,防止文件不存在、无权限等情况导致未捕获异常
  • 修复资源泄漏:为 ItemAddedEventHandler 实现 IDisposable 接口,正确释放 SemaphoreSlim 资源
  • 修复命名冲突:使用 using 别名解决与 Emby 内置 LogHelper 的命名冲突问题
  • 修复命名空间引用问题:在 ItemAddedEventHandler 中添加 _jsonSerializer 私有字段,使用构造函数注入的实例而非静态 Plugin.JsonSerializer
  • 修复并发控制问题:将 Task.Delay() 从获取 SemaphoreSlim 之后移到之前,确保事件按照添加顺序进入信号量
  • 修复空引用异常:在 MediaInfoHelper.HasJsonFile()ShouldRestoreFromJson() 中添加 mediaInfoManager 空值检查
  • 修复 LibraryOptions 空值问题:在 MediaInfoManager.ExportItemAsync() 中添加 libraryOptions 空值检查并记录警告日志

🛠 Improvements

  • 重构 MediaInfoManager:将 ExportItemAsync()RestoreItemAsync() 两个过长的方法拆分为多个职责单一的小方法,提升可维护性
    • 拆分为 PrepareMediaSourcesForExportAsync()SanitizeMediaSourceInfo()RestoreMediaStreams() 等 10+ 个小方法
  • 优化服务实例复用:在 ItemAddedEventHandler 中复用 StrmFileProcessor 实例,避免每次事件触发都创建新实例
  • 优化依赖注入链:在 Plugin 级别预先创建并传递依赖实例,提升性能
  • 统一日志记录:所有日志现在都通过 LogHelper 类,确保前缀一致
  • 移除冗余代码:移除多余的 null 检查,依赖注入保证参数非空
  • 代码质量优化:改进资源管理模式,防止内存泄漏
  • 性能优化:优化处理判断逻辑,提升整体处理效率
  • 代码重构:优化 MediaInfoHelperMediaInfoManagerStrmFileProcessor 等核心类的实现
  • 增强线程安全性:为 Plugin.InstancePlugin.JsonSerializer 添加线程安全的访问控制
  • 优化代码注释:统一代码注释格式,移除多余的全角空格
  • 改进任务执行:使用 _ 丢弃未使用的 Task 返回值,消除编译器警告

📝 Documentation

  • 从本次开始,使用三段式版本号:2.1.1

Don't miss a new StrmTool release

NewReleases is sending notifications on new releases.