pro_job.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. package pre_job
  2. import (
  3. "errors"
  4. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/settings"
  5. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types"
  6. common2 "github.com/ChineseSubFinder/ChineseSubFinder/pkg/types/common"
  7. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/hot_fix"
  8. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/sub_formatter"
  9. "github.com/ChineseSubFinder/ChineseSubFinder/pkg/sub_formatter/common"
  10. "github.com/sirupsen/logrus"
  11. )
  12. type PreJob struct {
  13. stageName string
  14. gError error
  15. isDone bool
  16. log *logrus.Logger
  17. renameResults sub_formatter.RenameResults
  18. }
  19. func NewPreJob(log *logrus.Logger) *PreJob {
  20. return &PreJob{log: log, isDone: false}
  21. }
  22. func (p *PreJob) HotFix() *PreJob {
  23. if p.gError != nil {
  24. p.log.Infoln("Skip PreJob.Check()")
  25. return p
  26. }
  27. p.stageName = stageNameCHotFix
  28. defer func() {
  29. p.log.Infoln("PreJob.HotFix() End")
  30. }()
  31. p.log.Infoln("PreJob.HotFix() Start...")
  32. // ------------------------------------------------------------------------
  33. // 开始修复
  34. p.log.Infoln(common2.NotifyStringTellUserWait)
  35. err := hot_fix.HotFixProcess(p.log, types.HotFixParam{
  36. MovieRootDirs: settings.Get().CommonSettings.MoviePaths,
  37. SeriesRootDirs: settings.Get().CommonSettings.SeriesPaths,
  38. })
  39. if err != nil {
  40. p.log.Errorln("hot_fix.HotFixProcess()", err)
  41. p.gError = err
  42. return p
  43. }
  44. return p
  45. }
  46. func (p *PreJob) ChangeSubNameFormat() *PreJob {
  47. if p.gError != nil {
  48. p.log.Infoln("Skip PreJob.ChangeSubNameFormat()")
  49. return p
  50. }
  51. p.stageName = stageNameChangeSubNameFormat
  52. defer func() {
  53. p.log.Infoln("PreJob.ChangeSubNameFormat() End")
  54. }()
  55. p.log.Infoln("PreJob.ChangeSubNameFormat() Start...")
  56. // ------------------------------------------------------------------------
  57. /*
  58. 字幕命名格式转换,需要数据库支持
  59. 如果数据库没有记录经过转换,那么默认从 Emby 的格式作为检测的起点,转换到目标的格式
  60. 然后需要在数据库中记录本次的转换结果
  61. */
  62. p.log.Infoln(common2.NotifyStringTellUserWait)
  63. var err error
  64. p.renameResults, err = sub_formatter.SubFormatChangerProcess(p.log,
  65. settings.Get().CommonSettings.MoviePaths,
  66. settings.Get().CommonSettings.SeriesPaths,
  67. common.FormatterName(settings.Get().AdvancedSettings.SubNameFormatter))
  68. // 出错的文件有哪一些
  69. for s, i := range p.renameResults.ErrFiles {
  70. p.log.Errorln("reformat ErrFile:"+s, i)
  71. }
  72. if err != nil {
  73. p.log.Errorln("SubFormatChangerProcess() Error", err)
  74. p.gError = err
  75. return p
  76. }
  77. return p
  78. }
  79. func (p *PreJob) Wait() error {
  80. defer func() {
  81. p.isDone = true
  82. p.log.Infoln("PreJob.Wait() Done.")
  83. }()
  84. if p.gError != nil {
  85. outErrString := "PreJob.Wait() Get Error, " + "stageName:" + p.stageName + " -- " + p.gError.Error()
  86. p.log.Errorln(outErrString)
  87. return errors.New(outErrString)
  88. } else {
  89. return nil
  90. }
  91. }
  92. func (p *PreJob) GetStageName() string {
  93. return p.stageName
  94. }
  95. func (p *PreJob) IsDone() bool {
  96. return p.isDone
  97. }
  98. func (p *PreJob) GetRenameResults() sub_formatter.RenameResults {
  99. return p.renameResults
  100. }
  101. func (p *PreJob) GetGError() error {
  102. return p.gError
  103. }
  104. const (
  105. stageNameCHotFix = "HotFix"
  106. stageNameChangeSubNameFormat = "ChangeSubNameFormat"
  107. stageNameReloadBrowser = "ReloadBrowser"
  108. )