downloader_helper.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package downloader_helper
  2. import (
  3. subSupplier "github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier"
  4. "github.com/allanpk716/ChineseSubFinder/internal/pkg/downloader"
  5. "github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
  6. "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
  7. "github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
  8. "github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
  9. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter"
  10. "github.com/sirupsen/logrus"
  11. )
  12. type DownloaderHelper struct {
  13. subSupplierHub *subSupplier.SubSupplierHub
  14. downloader *downloader.Downloader
  15. settings settings.Settings
  16. logger *logrus.Logger
  17. }
  18. func NewDownloaderHelper(settings settings.Settings, _subSupplierHub *subSupplier.SubSupplierHub) *DownloaderHelper {
  19. return &DownloaderHelper{
  20. subSupplierHub: _subSupplierHub,
  21. settings: settings,
  22. logger: log_helper.GetLogger(),
  23. }
  24. }
  25. // Start 开启任务
  26. func (d DownloaderHelper) Start() error {
  27. var err error
  28. // 下载实例
  29. d.downloader, err = downloader.NewDownloader(d.subSupplierHub, sub_formatter.GetSubFormatter(d.settings.AdvancedSettings.SubNameFormatter), d.settings)
  30. if err != nil {
  31. d.logger.Errorln("NewDownloader", err)
  32. }
  33. // 最后的清理和通知统计
  34. defer func() {
  35. d.logger.Infoln("Download One End...")
  36. notify_center.Notify.Send()
  37. my_util.CloseChrome()
  38. //rod_helper.Clear()
  39. }()
  40. d.logger.Infoln("Download One Started...")
  41. // 优先级最高。读取特殊文件,启用一些特殊的功能,比如 forced_scan_and_down_sub
  42. err = d.downloader.ReadSpeFile()
  43. if err != nil {
  44. d.logger.Errorln("ReadSpeFile", err)
  45. }
  46. // 从 csf-bk 文件还原时间轴修复前的字幕文件
  47. if d.downloader.NeedRestoreFixTimeLineBK == true {
  48. err = d.downloader.RestoreFixTimelineBK()
  49. if err != nil {
  50. d.logger.Errorln("RestoreFixTimelineBK", err)
  51. }
  52. }
  53. // 刷新 Emby 的字幕,如果下载了字幕倒是没有刷新,则先刷新一次,便于后续的 Emby api 统计逻辑
  54. err = d.downloader.RefreshEmbySubList()
  55. if err != nil {
  56. d.logger.Errorln("RefreshEmbySubList", err)
  57. return err
  58. }
  59. err = d.downloader.GetUpdateVideoListFromEmby()
  60. if err != nil {
  61. d.logger.Errorln("GetUpdateVideoListFromEmby", err)
  62. return err
  63. }
  64. // 开始下载,电影
  65. err = d.downloader.DownloadSub4Movie()
  66. if err != nil {
  67. d.logger.Errorln("DownloadSub4Movie", err)
  68. return err
  69. }
  70. // 开始下载,连续剧
  71. err = d.downloader.DownloadSub4Series()
  72. if err != nil {
  73. d.logger.Errorln("DownloadSub4Series", err)
  74. return err
  75. }
  76. // 刷新 Emby 的字幕,下载完毕字幕了,就统一刷新一下
  77. err = d.downloader.RefreshEmbySubList()
  78. if err != nil {
  79. d.logger.Errorln("RefreshEmbySubList", err)
  80. return err
  81. }
  82. return nil
  83. }
  84. // Cancel 提前取消任务的执行
  85. func (d DownloaderHelper) Cancel() {
  86. d.downloader.Cancel()
  87. }