瀏覽代碼

修复bug

Signed-off-by: allan716 <[email protected]>
allan716 3 年之前
父節點
當前提交
7efb0fa26a

+ 1 - 1
internal/backend/controllers/base/path_things.go

@@ -63,7 +63,7 @@ func (cb ControllerBase) CheckEmbyPathHandler(c *gin.Context) {
 		emSettings.SeriesPathsMapping[reqCheckPath.CFSMediaPath] = reqCheckPath.EmbyMediaPath
 	}
 
-	emHelper := emby_helper.NewEmbyHelper(emSettings)
+	emHelper := emby_helper.NewEmbyHelper(&emSettings)
 
 	outList, err := emHelper.CheckPath(reqCheckPath.PathType)
 	if err != nil {

+ 3 - 2
internal/logic/emby_helper/embyhelper.go

@@ -23,13 +23,13 @@ import (
 
 type EmbyHelper struct {
 	embyApi    *embyHelper.EmbyApi
-	EmbyConfig settings.EmbySettings
+	EmbyConfig *settings.EmbySettings
 	threads    int
 	timeOut    time.Duration
 	listLock   sync.Mutex
 }
 
-func NewEmbyHelper(embyConfig settings.EmbySettings) *EmbyHelper {
+func NewEmbyHelper(embyConfig *settings.EmbySettings) *EmbyHelper {
 	em := EmbyHelper{EmbyConfig: embyConfig}
 	em.embyApi = embyHelper.NewEmbyApi(embyConfig)
 	em.threads = 6
@@ -407,6 +407,7 @@ func (em *EmbyHelper) findMappingPathWithMixInfo(mixInfo *emby.EmbyMixInfo, isMo
 			// 说明没有找到连续剧文件夹的名称,那么就应该跳过
 			return false
 		}
+		mixInfo.PhysicalSeriesRootDir = strings.ReplaceAll(mixInfo.Ancestors[ancestorIndex].Path, pathSlices[0].Path, nowPhRootPath)
 		mixInfo.PhysicalVideoFileFullPath = strings.ReplaceAll(mixInfo.VideoInfo.Path, pathSlices[0].Path, nowPhRootPath)
 		mixInfo.PhysicalRootPath = strings.ReplaceAll(mixInfo.Ancestors[ancestorIndex+1].Path, pathSlices[0].Path, nowPhRootPath)
 		// 这个剧集的文件夹

+ 1 - 1
internal/logic/scan_played_video_subinfo/scan_played_video_subinfo.go

@@ -62,7 +62,7 @@ func NewScanPlayedVideoSubInfo(_settings settings.Settings) (*ScanPlayedVideoSub
 	scanPlayedVideoSubInfo.settings.Check()
 	// 初始化 Emby API 接口
 	if scanPlayedVideoSubInfo.settings.EmbySettings.Enable == true && scanPlayedVideoSubInfo.settings.EmbySettings.AddressUrl != "" && scanPlayedVideoSubInfo.settings.EmbySettings.APIKey != "" {
-		scanPlayedVideoSubInfo.embyHelper = embyHelper.NewEmbyHelper(*scanPlayedVideoSubInfo.settings.EmbySettings)
+		scanPlayedVideoSubInfo.embyHelper = embyHelper.NewEmbyHelper(scanPlayedVideoSubInfo.settings.EmbySettings)
 	}
 
 	// 初始化任务控制

+ 2 - 2
internal/pkg/emby_api/emby_api.go

@@ -14,13 +14,13 @@ import (
 )
 
 type EmbyApi struct {
-	embyConfig settings.EmbySettings
+	embyConfig *settings.EmbySettings
 	threads    int
 	timeOut    time.Duration
 	client     *resty.Client
 }
 
-func NewEmbyApi(embyConfig settings.EmbySettings) *EmbyApi {
+func NewEmbyApi(embyConfig *settings.EmbySettings) *EmbyApi {
 	em := EmbyApi{}
 	em.embyConfig = embyConfig
 	// 检查是否超过范围

+ 18 - 7
internal/pkg/video_scan_and_refresh_helper/video_scan_and_refresh_helper.go

@@ -60,6 +60,13 @@ func (v *VideoScanAndRefreshHelper) ReadSpeFile() error {
 // ScanMovieAndSeriesWait2DownloadSub 扫描出有那些电影、连续剧需要进行字幕下载的
 func (v *VideoScanAndRefreshHelper) ScanMovieAndSeriesWait2DownloadSub() (*ScanVideoResult, error) {
 
+	if v.settings.EmbySettings.Enable == false {
+		v.embyHelper = nil
+
+	} else {
+		v.embyHelper = embyHelper.NewEmbyHelper(v.settings.EmbySettings)
+	}
+
 	var err error
 	// -----------------------------------------------------
 	// 强制下载和常规模式(没有媒体服务器)
@@ -120,14 +127,18 @@ func (v *VideoScanAndRefreshHelper) ScanMovieAndSeriesWait2DownloadSub() (*ScanV
 // FilterMovieAndSeriesNeedDownload 过滤出需要下载字幕的视频,比如是否跳过中文的剧集,是否超过3个月的下载时间,丢入队列中
 func (v *VideoScanAndRefreshHelper) FilterMovieAndSeriesNeedDownload(scanVideoResult *ScanVideoResult) error {
 
-	err := v.filterMovieAndSeriesNeedDownloadNormal(scanVideoResult.Normal)
-	if err != nil {
-		return err
+	if scanVideoResult.Normal != nil {
+		err := v.filterMovieAndSeriesNeedDownloadNormal(scanVideoResult.Normal)
+		if err != nil {
+			return err
+		}
 	}
 
-	err = v.filterMovieAndSeriesNeedDownloadEmby(scanVideoResult.Emby)
-	if err != nil {
-		return err
+	if scanVideoResult.Emby != nil {
+		err := v.filterMovieAndSeriesNeedDownloadEmby(scanVideoResult.Emby)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil
@@ -219,7 +230,7 @@ func (v *VideoScanAndRefreshHelper) filterMovieAndSeriesNeedDownloadEmby(emby *E
 		for _, mixInfo := range embyMixInfos {
 
 			// 因为可能回去 Web 获取 IMDB 信息,所以这里的错误不返回
-			bNeedDlSub, seriesInfo, err := v.subSupplierHub.SeriesNeedDlSub(mixInfo.PhysicalRootPath, v.needForcedScanAndDownSub)
+			bNeedDlSub, seriesInfo, err := v.subSupplierHub.SeriesNeedDlSub(mixInfo.PhysicalSeriesRootDir, v.needForcedScanAndDownSub)
 			if err != nil {
 				v.log.Errorln("FilterMovieAndSeriesNeedDownload.SeriesNeedDlSub", err)
 				continue

+ 1 - 0
internal/types/emby/type.go

@@ -161,6 +161,7 @@ type EmbyMixInfo struct {
 	VideoFileName             string // 视频文件名
 	PhysicalVideoFileFullPath string // 视频的物理路径(这里指的物理路径是相对于本程序而言,如果是用 docker 使用的话,那么就是映射容器内的路径,如果是用物理机器比如 Windows 使用的话,那么就是相对于物理机器的路径)
 	PhysicalRootPath          string // 不是 Emby 扫描的情况,无需关注。视频在那个物理根目录中(这里指的物理路径是相对于本程序而言,如果是用 docker 使用的话,那么就是映射容器内的路径,如果是用物理机器比如 Windows 使用的话,那么就是相对于物理机器的路径)
+	PhysicalSeriesRootDir     string // 当前视频的连续剧文件夹根目录
 	Ancestors                 []EmbyItemsAncestors
 	VideoInfo                 EmbyVideoInfo
 }