hot_fix_001.go 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package hot_fix
  2. import (
  3. "errors"
  4. movieHelper "github.com/allanpk716/ChineseSubFinder/internal/logic/movie_helper"
  5. seriesHelper "github.com/allanpk716/ChineseSubFinder/internal/logic/series_helper"
  6. "github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
  7. "github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
  8. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter/old"
  9. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_helper"
  10. "os"
  11. )
  12. /*
  13. 本模块的目标是解决开发过程中遗留的功能缺陷需要升级的问题
  14. 之前字幕的命名不规范,现在需要进行一次批量的替换
  15. chs_en[shooter] -> Chinese(中英,shooter)
  16. */
  17. type HotFix001 struct {
  18. movieRootDirs []string
  19. seriesRootDirs []string
  20. }
  21. func NewHotFix001(movieRootDirs []string, seriesRootDirs []string) *HotFix001 {
  22. return &HotFix001{movieRootDirs: movieRootDirs, seriesRootDirs: seriesRootDirs}
  23. }
  24. func (h HotFix001) GetKey() string {
  25. return "001"
  26. }
  27. func (h HotFix001) Process() (interface{}, error) {
  28. defer func() {
  29. log_helper.GetLogger().Infoln("Hotfix", h.GetKey(), "End")
  30. }()
  31. log_helper.GetLogger().Infoln("Hotfix", h.GetKey(), "Start...")
  32. return h.process()
  33. }
  34. func (h HotFix001) process() (OutStruct001, error) {
  35. outStruct := OutStruct001{}
  36. outStruct.RenamedFiles = make([]string, 0)
  37. outStruct.ErrFiles = make([]string, 0)
  38. for i, dir := range h.movieRootDirs {
  39. log_helper.GetLogger().Infoln("Fix Movie Dir Index", i, dir, "Start...")
  40. fixMovie, err := h.fixMovie(dir)
  41. if err != nil {
  42. log_helper.GetLogger().Errorln("Fix Movie Dir Index", i, dir, "End With Error", err)
  43. return outStruct, err
  44. }
  45. outStruct.RenamedFiles = append(outStruct.RenamedFiles, fixMovie.RenamedFiles...)
  46. outStruct.ErrFiles = append(outStruct.ErrFiles, fixMovie.ErrFiles...)
  47. log_helper.GetLogger().Infoln("Fix Movie Dir Index", i, dir, "End...")
  48. }
  49. for i, dir := range h.seriesRootDirs {
  50. log_helper.GetLogger().Infoln("Fix Series Dir Index", i, dir, "Start...")
  51. fixSeries, err := h.fixSeries(dir)
  52. if err != nil {
  53. log_helper.GetLogger().Errorln("Fix Series Dir Index", i, dir, "End With Error", err)
  54. return outStruct, err
  55. }
  56. outStruct.RenamedFiles = append(outStruct.RenamedFiles, fixSeries.RenamedFiles...)
  57. outStruct.ErrFiles = append(outStruct.ErrFiles, fixSeries.ErrFiles...)
  58. log_helper.GetLogger().Infoln("Fix Series Dir Index", i, dir, "End...")
  59. }
  60. return outStruct, nil
  61. }
  62. func (h HotFix001) fixMovie(movieRootDir string) (OutStruct001, error) {
  63. var err error
  64. outStruct := OutStruct001{}
  65. outStruct.RenamedFiles = make([]string, 0)
  66. outStruct.ErrFiles = make([]string, 0)
  67. if my_util.IsDir(movieRootDir) == false {
  68. return outStruct, errors.New("movieRootDir path not exist: " + movieRootDir)
  69. }
  70. // 先找出有那些电影文件夹和连续剧文件夹
  71. var movieFullPathList = make([]string, 0)
  72. movieFullPathList, err = my_util.SearchMatchedVideoFile(log_helper.GetLogger(), movieRootDir)
  73. if err != nil {
  74. return outStruct, err
  75. }
  76. // 搜索所有的字幕,找到相关的字幕进行修改
  77. for _, one := range movieFullPathList {
  78. found := false
  79. var fitMovieNameSubList = make([]string, 0)
  80. found, _, fitMovieNameSubList, err = movieHelper.MovieHasChineseSub(one)
  81. if err != nil || found == false {
  82. continue
  83. }
  84. // 判断是否是符合要求
  85. for _, fitSubName := range fitMovieNameSubList {
  86. bFix, _, newSubFileName := old.IsOldVersionSubPrefixName(fitSubName)
  87. if bFix == false {
  88. continue
  89. }
  90. err = os.Rename(fitSubName, newSubFileName)
  91. if err != nil {
  92. outStruct.ErrFiles = append(outStruct.ErrFiles, fitSubName)
  93. continue
  94. }
  95. outStruct.RenamedFiles = append(outStruct.RenamedFiles, newSubFileName)
  96. }
  97. }
  98. return outStruct, nil
  99. }
  100. func (h HotFix001) fixSeries(seriesRootDir string) (OutStruct001, error) {
  101. var err error
  102. outStruct := OutStruct001{}
  103. outStruct.RenamedFiles = make([]string, 0)
  104. outStruct.ErrFiles = make([]string, 0)
  105. if my_util.IsDir(seriesRootDir) == false {
  106. return outStruct, errors.New("seriesRootDir path not exist: " + seriesRootDir)
  107. }
  108. // 先找出有那些电影文件夹和连续剧文件夹
  109. seriesDirList, err := seriesHelper.GetSeriesList(seriesRootDir)
  110. if err != nil {
  111. return outStruct, err
  112. }
  113. // 连续剧
  114. var seriesSubFiles = make([]string, 0)
  115. for _, oneSeriesDir := range seriesDirList {
  116. seriesSubFiles, err = sub_helper.SearchMatchedSubFileByDir(oneSeriesDir)
  117. if err != nil {
  118. return outStruct, err
  119. }
  120. // 判断是否是符合要求
  121. for _, fitSubName := range seriesSubFiles {
  122. bFix, _, newSubFileName := old.IsOldVersionSubPrefixName(fitSubName)
  123. if bFix == false {
  124. continue
  125. }
  126. err = os.Rename(fitSubName, newSubFileName)
  127. if err != nil {
  128. outStruct.ErrFiles = append(outStruct.ErrFiles, fitSubName)
  129. continue
  130. }
  131. outStruct.RenamedFiles = append(outStruct.RenamedFiles, newSubFileName)
  132. }
  133. }
  134. return outStruct, nil
  135. }
  136. type OutStruct001 struct {
  137. RenamedFiles []string
  138. ErrFiles []string
  139. }