pro_job.go 3.3 KB

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