video_list_helper.go 2.3 KB

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