hot_fix_001.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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"
  7. "github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_helper"
  8. "os"
  9. )
  10. /*
  11. 本模块的目标是解决开发过程中遗留的功能缺陷需要升级的问题
  12. 之前字幕的命名不规范,现在需要进行一次批量的替换
  13. chs_en[shooter] -> Chinese(中英,shooter)
  14. */
  15. type HotFix001 struct {
  16. movieRootDir string
  17. seriesRootDir string
  18. }
  19. func NewHotFix001(movieRootDir string, seriesRootDir string) *HotFix001 {
  20. return &HotFix001{movieRootDir: movieRootDir, seriesRootDir: seriesRootDir}
  21. }
  22. func (h HotFix001) GetKey() string {
  23. return "001"
  24. }
  25. func (h HotFix001) Process() (renamedFiles, errFiles []string, err error) {
  26. renamedFiles = make([]string, 0)
  27. errFiles = make([]string, 0)
  28. if pkg.IsDir(h.movieRootDir) == false {
  29. return renamedFiles, errFiles, errors.New("movieRootDir path not exist: " + h.movieRootDir)
  30. }
  31. if pkg.IsDir(h.seriesRootDir) == false {
  32. return renamedFiles, errFiles, errors.New("seriesRootDir path not exist: " + h.seriesRootDir)
  33. }
  34. // 先找出有那些电影文件夹和连续剧文件夹
  35. var movieFullPathList = make([]string, 0)
  36. movieFullPathList, err = pkg.SearchMatchedVideoFile(h.movieRootDir)
  37. if err != nil {
  38. return
  39. }
  40. seriesDirList, err := seriesHelper.GetSeriesList(h.seriesRootDir)
  41. if err != nil {
  42. return
  43. }
  44. // 搜索所有的字幕,找到相关的字幕进行修改
  45. for _, one := range movieFullPathList {
  46. found := false
  47. var fitMovieNameSubList = make([]string, 0)
  48. found, _, fitMovieNameSubList, err = movieHelper.MovieHasChineseSub(one)
  49. if err != nil || found == false {
  50. continue
  51. }
  52. // 判断是否是符合要求
  53. for _, fitSubName := range fitMovieNameSubList {
  54. bFix, _, newSubFileName := sub_helper.IsOldVersionSubPrefixName(fitSubName)
  55. if bFix == false {
  56. continue
  57. }
  58. err = os.Rename(fitSubName, newSubFileName)
  59. if err != nil {
  60. errFiles = append(errFiles, fitSubName)
  61. continue
  62. }
  63. renamedFiles = append(renamedFiles, newSubFileName)
  64. }
  65. }
  66. // 连续剧
  67. var seriesSubFiles = make([]string, 0)
  68. for _, oneSeriesDir := range seriesDirList {
  69. seriesSubFiles, err = sub_helper.SearchMatchedSubFile(oneSeriesDir)
  70. if err != nil {
  71. return
  72. }
  73. // 判断是否是符合要求
  74. for _, fitSubName := range seriesSubFiles {
  75. bFix, _, newSubFileName := sub_helper.IsOldVersionSubPrefixName(fitSubName)
  76. if bFix == false {
  77. continue
  78. }
  79. err = os.Rename(fitSubName, newSubFileName)
  80. if err != nil {
  81. errFiles = append(errFiles, fitSubName)
  82. continue
  83. }
  84. renamedFiles = append(renamedFiles, newSubFileName)
  85. }
  86. }
  87. return
  88. }