浏览代码

DVR: Prefer HD channels then earliest showing when handling duplicate showings. (#8768)

Co-authored-by: Bond-009 <bond.009@outlook.com>
SenorSmartyPants 2 年之前
父节点
当前提交
75c96e6e76

+ 2 - 3
Emby.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -2192,10 +2192,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
 
         private void HandleDuplicateShowIds(List<TimerInfo> timers)
         private void HandleDuplicateShowIds(List<TimerInfo> timers)
         {
         {
-            foreach (var timer in timers.Skip(1))
+            // sort showings by HD channels first, then by startDate, record earliest showing possible
+            foreach (var timer in timers.OrderByDescending(t => _liveTvManager.GetLiveTvChannel(t, this).IsHD).ThenBy(t => t.StartDate).Skip(1))
             {
             {
-                // TODO: Get smarter, prefer HD, etc
-
                 timer.Status = RecordingStatus.Cancelled;
                 timer.Status = RecordingStatus.Cancelled;
                 _timerProvider.Update(timer);
                 _timerProvider.Update(timer);
             }
             }

+ 20 - 3
Emby.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs

@@ -122,11 +122,28 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
 
             if (_timers.TryAdd(item.Id, timer))
             if (_timers.TryAdd(item.Id, timer))
             {
             {
-                Logger.LogInformation(
-                    "Creating recording timer for {Id}, {Name}. Timer will fire in {Minutes} minutes",
+                if (item.IsSeries)
+                {
+                    Logger.LogInformation(
+                    "Creating recording timer for {Id}, {Name} {SeasonNumber}x{EpisodeNumber:D2} on channel {ChannelId}. Timer will fire in {Minutes} minutes at {StartDate}",
                     item.Id,
                     item.Id,
                     item.Name,
                     item.Name,
-                    dueTime.TotalMinutes.ToString(CultureInfo.InvariantCulture));
+                    item.SeasonNumber,
+                    item.EpisodeNumber,
+                    item.ChannelId,
+                    dueTime.TotalMinutes.ToString(CultureInfo.InvariantCulture),
+                    item.StartDate);
+                }
+                else
+                {
+                    Logger.LogInformation(
+                    "Creating recording timer for {Id}, {Name} on channel {ChannelId}. Timer will fire in {Minutes} minutes at {StartDate}",
+                    item.Id,
+                    item.Name,
+                    item.ChannelId,
+                    dueTime.TotalMinutes.ToString(CultureInfo.InvariantCulture),
+                    item.StartDate);
+                }
             }
             }
             else
             else
             {
             {