video_list_helper.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package video_list_helper
  2. import (
  3. "sync"
  4. "github.com/allanpk716/ChineseSubFinder/pkg/settings"
  5. vsh "github.com/allanpk716/ChineseSubFinder/pkg/video_scan_and_refresh_helper"
  6. seriesHelper "github.com/allanpk716/ChineseSubFinder/pkg/logic/series_helper"
  7. "github.com/allanpk716/ChineseSubFinder/pkg/my_util"
  8. "github.com/sirupsen/logrus"
  9. )
  10. type VideoListHelper struct {
  11. settings *settings.Settings // 设置的实例
  12. log *logrus.Logger // 日志实例
  13. }
  14. func NewVideoListHelper(log *logrus.Logger, settings *settings.Settings) *VideoListHelper {
  15. return &VideoListHelper{
  16. settings: settings,
  17. log: log,
  18. }
  19. }
  20. // RefreshMainList 获取到电影、连续剧一级目录信息,不包含 Season 及其以下信息
  21. // 只给出 Movie 的FullPath,Series 的 RootDirPath
  22. func (v *VideoListHelper) RefreshMainList() (*vsh.NormalScanVideoResult, error) {
  23. defer func() {
  24. v.log.Infoln("ScanNormalMovieAndSeries End")
  25. }()
  26. v.log.Infoln("ScanNormalMovieAndSeries Start...")
  27. // ------------------------------------------------------------------------------
  28. // 由于需要进行视频信息的缓存,用于后续的逻辑,那么本地视频的扫描默认都会进行
  29. normalScanResult := vsh.NormalScanVideoResult{}
  30. // 直接由本程序自己去扫描视频视频有哪些
  31. // 全扫描
  32. wg := sync.WaitGroup{}
  33. var errMovie, errSeries error
  34. wg.Add(1)
  35. go func() {
  36. defer func() {
  37. wg.Done()
  38. }()
  39. // --------------------------------------------------
  40. // 电影
  41. normalScanResult.MoviesDirMap, errMovie = my_util.SearchMatchedVideoFileFromDirs(v.log, v.settings.CommonSettings.MoviePaths)
  42. }()
  43. wg.Add(1)
  44. go func() {
  45. defer func() {
  46. wg.Done()
  47. }()
  48. // --------------------------------------------------
  49. // 连续剧
  50. // 遍历连续剧总目录下的第一层目录
  51. normalScanResult.SeriesDirMap, errSeries = seriesHelper.GetSeriesListFromDirs(v.log, v.settings.CommonSettings.SeriesPaths)
  52. // ------------------------------------------------------------------------------
  53. // 输出调试信息,有那些连续剧文件夹名称
  54. if normalScanResult.SeriesDirMap == nil {
  55. return
  56. }
  57. normalScanResult.SeriesDirMap.Each(func(key interface{}, value interface{}) {
  58. for i, s := range value.([]string) {
  59. v.log.Debugln("embyHelper == nil GetSeriesList", i, s)
  60. }
  61. })
  62. }()
  63. wg.Wait()
  64. if errMovie != nil {
  65. return nil, errMovie
  66. }
  67. if errSeries != nil {
  68. return nil, errSeries
  69. }
  70. return &normalScanResult, nil
  71. }