[AI] fix: 修复短剧剧集重复显示
两处原因,分别处理: 1. contentsync 只按 _id 水位线插新增,源库事后打上的 isDelete 传不过来, 源站删掉的重复集在目标库一直留着。每轮同步后补扫一次 media / media_content / video_info,把源库的软删除标记同步过去,并按 web/service/mediacontentser 的同一口径重算父级 currentEpisode / freeEpisode。只做「源库删了→目标也删」一个方向,不与本地下架保护冲突。 2. 各站 skd 的媒资库同步会为同一集(mediaId+hashId 相同)另插一条自己的 _id, 与 contentsync 带过来的源库那条并存。媒资库那条在 SaleCoin=0 时 listenPermission=2,本该收费的集可以白看。插入时若发现本地已有同一集, 把本地那条 isActive:false 下架;并新增 skd 配置开关 switch.mediaSyncDisabled,非源站可直接关掉这条同步链。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
+12
-8
@@ -93,14 +93,18 @@ func start() {
|
||||
RunPendingSyncIMUsers()
|
||||
})
|
||||
// 同步acg订阅的动漫
|
||||
_, _ = statCron.AddFunc("0 0/30 * * * ?", func() { //每30分钟执行一次
|
||||
ms := mediaService.NewMediaSync(skdg.Redis, mediaCenter.NewMediaCenterService(mediaCenter.Config{
|
||||
Url: skdg.Conf.MediaResourcesCfg.UploadMediaUrl,
|
||||
ProId: skdg.Conf.MediaResourcesCfg.ProId,
|
||||
Secret: skdg.Conf.MediaResourcesCfg.AppSecret,
|
||||
}))
|
||||
ms.SyncAll("系统")
|
||||
})
|
||||
if skdg.Conf.Switch.MediaSyncDisabled {
|
||||
log.Info("【ACG同步任务】已按配置关闭(switch.mediaSyncDisabled),内容改由 contentsync 从源站同步")
|
||||
} else {
|
||||
_, _ = statCron.AddFunc("0 0/30 * * * ?", func() { //每30分钟执行一次
|
||||
ms := mediaService.NewMediaSync(skdg.Redis, mediaCenter.NewMediaCenterService(mediaCenter.Config{
|
||||
Url: skdg.Conf.MediaResourcesCfg.UploadMediaUrl,
|
||||
ProId: skdg.Conf.MediaResourcesCfg.ProId,
|
||||
Secret: skdg.Conf.MediaResourcesCfg.AppSecret,
|
||||
}))
|
||||
ms.SyncAll("系统")
|
||||
})
|
||||
}
|
||||
common.Go(func() {
|
||||
err := aiService.NewAiService(
|
||||
aiService.AppId(int(commod.KFK_APPID)),
|
||||
|
||||
@@ -79,6 +79,15 @@ type GlobalConfig struct {
|
||||
} `json:"url"`
|
||||
Switch struct {
|
||||
NotifyExpire bool `json:"notifyExpire"`
|
||||
// MediaSyncDisabled 关掉 skd 每 30 分钟的媒资库同步。
|
||||
//
|
||||
// 本站内容由 scripts/contentsync 从源站整体同步过来,源站自己会跑媒资库
|
||||
// 同步;本站再跑一遍会为同一集(mediaId+hashId 相同)另插一条自己的 _id,
|
||||
// 剧集列表就出现「1 1 2 2」,而且媒资库那条在 SaleCoin=0 时
|
||||
// listenPermission=2(免费),等于本该收费的集可以白看。
|
||||
//
|
||||
// 留空/false 表示照旧开启——源站必须保持开启,否则新剧集无从进库。
|
||||
MediaSyncDisabled bool `json:"mediaSyncDisabled"`
|
||||
} `json:"switch"`
|
||||
StartDate string `json:"startDate"`
|
||||
MediaResourcesCfg struct {
|
||||
|
||||
Reference in New Issue
Block a user