11using System ;
22using System . Collections . Generic ;
3+ using System . Linq ;
34using System . Threading ;
45using System . Threading . Tasks ;
6+ using MediaBrowser . Controller . Entities ;
7+ using MediaBrowser . Controller . Entities . TV ;
58using MediaBrowser . Controller . Library ;
9+ using MediaBrowser . Model . Entities ;
610using MediaBrowser . Model . Logging ;
11+ using MediaBrowser . Model . Querying ;
712using MediaBrowser . Model . Tasks ;
8- using MediaInfoKeeper . Services ;
913
1014namespace MediaInfoKeeper . ScheduledTask
1115{
1216 public class ScanRecentIntroTask : IScheduledTask
1317 {
1418 private readonly ILogger logger ;
19+ private readonly ILibraryManager libraryManager ;
1520 public ScanRecentIntroTask ( ILogManager logManager , ILibraryManager libraryManager )
1621 {
1722 this . logger = logManager . GetLogger ( Plugin . PluginName ) ;
18- _ = libraryManager ;
23+ this . libraryManager = libraryManager ;
1924 }
2025
2126 public string Key => "MediaInfoKeeperScanRecentIntroTask" ;
2227
23- public string Name => "3 .扫描片头" ;
28+ public string Name => "2 .扫描片头" ;
2429
25- public string Description => "全局媒体库范围内,按“最近入库时间窗口(天)”筛选(0=不限制 )的剧集执行片头检测。" ;
30+ public string Description => "全局媒体库范围内,按入库时间倒序取最近 N 条(“最近入库媒体筛选数量” )的剧集执行片头检测。" ;
2631
2732 public string Category => Plugin . TaskCategoryName ;
2833
@@ -34,10 +39,31 @@ public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
3439 public async Task Execute ( CancellationToken cancellationToken , IProgress < double > progress )
3540 {
3641 this . logger . Info ( "最近入库片头扫描计划任务开始" ) ;
42+ var episodes = FetchRecentEpisodes ( ) ;
3743 await Plugin . IntroScanService
38- . ScanRecentIntroAsync ( cancellationToken , progress )
44+ . ScanEpisodesAsync ( episodes , cancellationToken , progress )
3945 . ConfigureAwait ( false ) ;
4046 this . logger . Info ( "最近入库片头扫描计划任务完成" ) ;
4147 }
48+
49+ private List < Episode > FetchRecentEpisodes ( )
50+ {
51+ var query = new InternalItemsQuery
52+ {
53+ Recursive = true ,
54+ HasPath = true ,
55+ MediaTypes = new [ ] { MediaType . Video }
56+ } ;
57+
58+ var episodes = this . libraryManager . GetItemList ( query )
59+ . OfType < Episode > ( )
60+ . Where ( i => i . ExtraType is null )
61+ . OrderByDescending ( i => i . DateCreated )
62+ . Take ( Math . Max ( 1 , Plugin . Instance . Options . MainPage . RecentItemsLimit ) )
63+ . ToList ( ) ;
64+
65+ this . logger . Info ( $ "扫描条目数 { episodes . Count } ") ;
66+ return episodes ;
67+ }
4268 }
4369}
0 commit comments