hot_fix_005.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package hot_fix
  2. import (
  3. "os"
  4. "path/filepath"
  5. "github.com/allanpk716/ChineseSubFinder/pkg"
  6. "gorm.io/gorm"
  7. "github.com/allanpk716/ChineseSubFinder/internal/dao"
  8. "github.com/allanpk716/ChineseSubFinder/internal/models"
  9. "github.com/allanpk716/ChineseSubFinder/pkg/my_util"
  10. "github.com/sirupsen/logrus"
  11. )
  12. /*
  13. 嗯···之前对于连续剧的一集的解析 Season 和 Episode 的方式是从文件名得到的,最近看到由反馈到削刮之后,命名是 S01.E01,这样的方式
  14. 那么就可能解析不对,现在需要重新改为从 nfo 或者 xml 文件中得到这个信息,就需要删除之前缓存的数据,然后重新上传,不然之前的数据可能有部分是错误的
  15. */
  16. type HotFix005 struct {
  17. log *logrus.Logger
  18. }
  19. func NewHotFix005(log *logrus.Logger) *HotFix005 {
  20. return &HotFix005{log: log}
  21. }
  22. func (h HotFix005) GetKey() string {
  23. return "005"
  24. }
  25. func (h HotFix005) Process() (interface{}, error) {
  26. defer func() {
  27. h.log.Infoln("Hotfix", h.GetKey(), "End")
  28. }()
  29. h.log.Infoln("Hotfix", h.GetKey(), "Start...")
  30. return h.process()
  31. }
  32. func (h HotFix005) process() (bool, error) {
  33. shareRootDir, err := pkg.GetShareSubRootFolder()
  34. if err != nil {
  35. h.log.Errorln("GetShareSubRootFolder error:", err.Error())
  36. return false, err
  37. }
  38. // 高可信字幕
  39. var videoInfos []models.VideoSubInfo
  40. // 把嵌套关联的 has many 的信息都查询出来
  41. dao.GetDb().Find(&videoInfos)
  42. err = dao.GetDb().Transaction(func(tx *gorm.DB) error {
  43. for _, info := range videoInfos {
  44. tx.Delete(&info)
  45. }
  46. return nil
  47. })
  48. if err != nil {
  49. return false, err
  50. }
  51. for _, info := range videoInfos {
  52. delFileFPath := filepath.Join(shareRootDir, info.StoreRPath)
  53. if my_util.IsFile(delFileFPath) == true {
  54. err = os.Remove(delFileFPath)
  55. if err != nil {
  56. h.log.Errorln("Remove file:", delFileFPath, " error:", err.Error())
  57. continue
  58. }
  59. }
  60. }
  61. // 低可信字幕
  62. var lowTrustVideoInfos []models.LowVideoSubInfo
  63. // 把嵌套关联的 has many 的信息都查询出来
  64. dao.GetDb().Find(&lowTrustVideoInfos)
  65. err = dao.GetDb().Transaction(func(tx *gorm.DB) error {
  66. for _, info := range lowTrustVideoInfos {
  67. tx.Delete(&info)
  68. }
  69. return nil
  70. })
  71. if err != nil {
  72. return false, err
  73. }
  74. for _, info := range lowTrustVideoInfos {
  75. delFileFPath := filepath.Join(shareRootDir, info.StoreRPath)
  76. if my_util.IsFile(delFileFPath) == true {
  77. err = os.Remove(delFileFPath)
  78. if err != nil {
  79. h.log.Errorln("Remove file:", delFileFPath, " error:", err.Error())
  80. continue
  81. }
  82. }
  83. }
  84. return true, nil
  85. }