pro_job.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package pre_job
  2. import (
  3. "errors"
  4. "github.com/allanpk716/ChineseSubFinder/internal/pkg/hot_fix"
  5. "github.com/allanpk716/ChineseSubFinder/internal/pkg/rod_helper"
  6. "github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
  7. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter"
  8. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter/common"
  9. "github.com/allanpk716/ChineseSubFinder/internal/types"
  10. common2 "github.com/allanpk716/ChineseSubFinder/internal/types/common"
  11. "github.com/sirupsen/logrus"
  12. )
  13. type PreJob struct {
  14. stageName string
  15. gError error
  16. sets *settings.Settings
  17. log *logrus.Logger
  18. }
  19. func NewPreJob(sets *settings.Settings, log *logrus.Logger) *PreJob {
  20. return &PreJob{sets: sets, log: log}
  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: p.sets.CommonSettings.MoviePaths,
  37. SeriesRootDirs: p.sets.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. renameResults, err := sub_formatter.SubFormatChangerProcess(p.log,
  64. p.sets.CommonSettings.MoviePaths,
  65. p.sets.CommonSettings.SeriesPaths,
  66. common.FormatterName(p.sets.AdvancedSettings.SubNameFormatter))
  67. // 出错的文件有哪一些
  68. for s, i := range renameResults.ErrFiles {
  69. p.log.Errorln("reformat ErrFile:"+s, i)
  70. }
  71. if err != nil {
  72. p.log.Errorln("SubFormatChangerProcess() Error", err)
  73. p.gError = err
  74. return p
  75. }
  76. return p
  77. }
  78. func (p *PreJob) ReloadBrowser() *PreJob {
  79. if p.gError != nil {
  80. p.log.Infoln("Skip PreJob.ReloadBrowser()")
  81. return p
  82. }
  83. defer func() {
  84. p.log.Infoln("PreJob.ReloadBrowser() End")
  85. }()
  86. p.log.Infoln("PreJob.ReloadBrowser() Start...")
  87. // ------------------------------------------------------------------------
  88. // ReloadBrowser 提前把浏览器下载好
  89. rod_helper.ReloadBrowser(p.log)
  90. return p
  91. }
  92. func (p *PreJob) Wait() error {
  93. defer func() {
  94. p.log.Infoln("PreJob.Wait() Done.")
  95. }()
  96. if p.gError != nil {
  97. outErrString := "PreJob.Wait() Get Error, " + "stageName:" + p.stageName + " -- " + p.gError.Error()
  98. p.log.Errorln(outErrString)
  99. return errors.New(outErrString)
  100. } else {
  101. return nil
  102. }
  103. }
  104. const (
  105. stageNameCHotFix = "HotFix"
  106. stageNameChangeSubNameFormat = "ChangeSubNameFormat"
  107. stageNameReloadBrowser = "ReloadBrowser"
  108. )