hot_fix_005.go 2.5 KB

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