Преглед изворни кода

新增,刷新媒体服务器字幕列表接口

Signed-off-by: allan716 <[email protected]>
allan716 пре 3 година
родитељ
комит
db8088bf5b

+ 1 - 0
internal/backend/base_router.go

@@ -93,6 +93,7 @@ func InitRouter(
 		GroupV1.POST("/video/list/one_series_subs", cbV1.OneSeriesSubs)
 		GroupV1.POST("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
 		GroupV1.PUT("/video/list/scan_skip_info", cbV1.ScanSkipInfo)
+		GroupV1.PUT("/video/list/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
 	}
 
 	GroupAPIV1 := router.Group("/api/v1")

+ 17 - 1
internal/backend/controllers/v1/video_list_v2.go

@@ -307,4 +307,20 @@ func (cb *ControllerBase) ScanSkipInfo(c *gin.Context) {
 	}
 }
 
-// v.refreshEmbySubList() 可以使用这个方案去刷新最近视频的字幕列表,最近的多少条可以 V 来设置
+// RefreshMediaServerSubList 刷新媒体服务器的字幕列表
+func (cb *ControllerBase) RefreshMediaServerSubList(c *gin.Context) {
+	var err error
+	defer func() {
+		// 统一的异常处理
+		cb.ErrorProcess(c, "RefreshMediaServerSubList", err)
+	}()
+
+	err = cb.videoScanAndRefreshHelper.RefreshMediaServerSubList()
+	if err != nil {
+		cb.log.Errorln("RefreshMediaServerSubList", err)
+		return
+	}
+
+	c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
+	return
+}

+ 31 - 0
pkg/video_scan_and_refresh_helper/video_scan_and_refresh_helper.go

@@ -327,6 +327,37 @@ func (v *VideoScanAndRefreshHelper) FilterMovieAndSeriesNeedDownload(scanVideoRe
 	return nil
 }
 
+// RefreshMediaServerSubList 刷新媒体服务器的字幕列表
+func (v *VideoScanAndRefreshHelper) RefreshMediaServerSubList() error {
+
+	if v.settings.EmbySettings.Enable == false {
+		return nil
+	}
+	v.log.Infoln("Refresh Media Server Sub List...")
+	defer func() {
+		v.log.Infoln("Refresh Media Server Sub List End")
+	}()
+
+	v.log.Infoln("tmpSetting.EmbySettings.MaxRequestVideoNumber = 1000000")
+	// 如果是强制,那么就临时修改 Setting 的 Emby MaxRequestVideoNumber 参数为 1000000
+	//tmpSetting := clone.Clone(v.settings).(*settings.Settings)
+	v.embyHelper = embyHelper.NewEmbyHelper(v.log, v.settings)
+	v.embyHelper.SetMaxRequestVideoNumber(common2.EmbyApiGetItemsLimitMax)
+	v.embyHelper.SetSkipWatched(false)
+	var err error
+	if v.embyHelper != nil {
+		// TODO 如果后续支持了 Jellyfin、Plex 那么这里需要额外正在对应的扫描逻辑
+		// Emby 情况,从 Emby 获取视频信息
+		err = v.refreshEmbySubList()
+		if err != nil {
+			v.log.Errorln("refreshEmbySubList", err)
+			return err
+		}
+	}
+
+	return nil
+}
+
 // scanLowVideoSubInfo 扫描低可信度的字幕信息
 func (v *VideoScanAndRefreshHelper) scanLowVideoSubInfo(scanVideoResult *ScanVideoResult) {