| 
					
				 | 
			
			
				@@ -41,6 +41,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public class LiveTvManager : ILiveTvManager, IDisposable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private const int MaxGuideDays = 14; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private const string ExternalServiceTag = "ExternalServiceId"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private const string EtagKey = "ProgramEtag"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -560,7 +561,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.Audio = info.Audio; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.ChannelId = channel.Id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item.CommunityRating = item.CommunityRating ?? info.CommunityRating; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.CommunityRating ??= info.CommunityRating; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if ((item.CommunityRating ?? 0).Equals(0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 item.CommunityRating = null; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -645,8 +646,8 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.IsSeries = isSeries; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.Name = info.Name; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item.OfficialRating = item.OfficialRating ?? info.OfficialRating; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            item.Overview = item.Overview ?? info.Overview; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.OfficialRating ??= info.OfficialRating; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.Overview ??= info.Overview; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.RunTimeTicks = (info.EndDate - info.StartDate).Ticks; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             item.ProviderIds = info.ProviderIds; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -683,19 +684,23 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!string.IsNullOrWhiteSpace(info.ImagePath)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    item.SetImage(new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Path = info.ImagePath, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = ImageType.Primary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    item.SetImage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = info.ImagePath, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Type = ImageType.Primary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 else if (!string.IsNullOrWhiteSpace(info.ImageUrl)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    item.SetImage(new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Path = info.ImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = ImageType.Primary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    item.SetImage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = info.ImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Type = ImageType.Primary 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -703,11 +708,13 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!string.IsNullOrWhiteSpace(info.ThumbImageUrl)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    item.SetImage(new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Path = info.ThumbImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = ImageType.Thumb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    item.SetImage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = info.ThumbImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Type = ImageType.Thumb 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -715,11 +722,13 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!string.IsNullOrWhiteSpace(info.LogoImageUrl)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    item.SetImage(new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Path = info.LogoImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = ImageType.Logo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    item.SetImage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = info.LogoImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Type = ImageType.Logo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -727,11 +736,13 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (!string.IsNullOrWhiteSpace(info.BackdropImageUrl)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    item.SetImage(new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Path = info.BackdropImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        Type = ImageType.Backdrop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    item.SetImage( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        new ItemImageInfo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Path = info.BackdropImageUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            Type = ImageType.Backdrop 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -786,7 +797,6 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (query.OrderBy.Count == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // Unless something else was specified, order by start date to take advantage of a specialized index 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 query.OrderBy = new[] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -824,7 +834,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!string.IsNullOrWhiteSpace(query.SeriesTimerId)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                var seriesTimers = await GetSeriesTimersInternal(new SeriesTimerQuery { }, cancellationToken).ConfigureAwait(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                var seriesTimers = await GetSeriesTimersInternal(new SeriesTimerQuery(), cancellationToken).ConfigureAwait(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 var seriesTimer = seriesTimers.Items.FirstOrDefault(i => string.Equals(_tvDtoService.GetInternalSeriesTimerId(i.Id).ToString("N", CultureInfo.InvariantCulture), query.SeriesTimerId, StringComparison.OrdinalIgnoreCase)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (seriesTimer != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -847,13 +857,11 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var returnArray = _dtoService.GetBaseItemDtos(queryResult.Items, options, user); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var result = new QueryResult<BaseItemDto> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return new QueryResult<BaseItemDto> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Items = returnArray, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 TotalRecordCount = queryResult.TotalRecordCount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return result; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public QueryResult<BaseItem> GetRecommendedProgramsInternal(InternalItemsQuery query, DtoOptions options, CancellationToken cancellationToken) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1173,7 +1181,6 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     var existingPrograms = _libraryManager.GetItemList(new InternalItemsQuery 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         IncludeItemTypes = new string[] { typeof(LiveTvProgram).Name }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         ChannelIds = new Guid[] { currentChannel.Id }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         DtoOptions = new DtoOptions(true) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1298,8 +1305,6 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private const int MaxGuideDays = 14; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private double GetGuideDays() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var config = GetConfiguration(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1712,7 +1717,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (timer == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new ResourceNotFoundException(string.Format("Timer with Id {0} not found", id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ResourceNotFoundException(string.Format(CultureInfo.InvariantCulture, "Timer with Id {0} not found", id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var service = GetService(timer.ServiceName); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1731,7 +1736,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (timer == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                throw new ResourceNotFoundException(string.Format("SeriesTimer with Id {0} not found", id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new ResourceNotFoundException(string.Format(CultureInfo.InvariantCulture, "SeriesTimer with Id {0} not found", id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var service = GetService(timer.ServiceName); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1743,10 +1748,12 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<TimerInfoDto> GetTimer(string id, CancellationToken cancellationToken) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var results = await GetTimers(new TimerQuery 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Id = id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            }, cancellationToken).ConfigureAwait(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            var results = await GetTimers( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                new TimerQuery 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Id = id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                cancellationToken).ConfigureAwait(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return results.Items.FirstOrDefault(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1794,10 +1801,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var returnArray = timers 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .Select(i => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    return i.Item1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Select(i => i.Item1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .ToArray(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return new QueryResult<SeriesTimerInfo> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1968,7 +1972,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (service == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                service = _services.First(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                service = _services[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var info = await service.GetNewTimerDefaultsAsync(cancellationToken, programInfo).ConfigureAwait(false); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1994,9 +1998,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var info = await GetNewTimerDefaultsInternal(cancellationToken).ConfigureAwait(false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            var obj = _tvDtoService.GetSeriesTimerInfoDto(info.Item1, info.Item2, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            return obj; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return _tvDtoService.GetSeriesTimerInfoDto(info.Item1, info.Item2, null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public async Task<SeriesTimerInfoDto> GetNewTimerDefaults(string programId, CancellationToken cancellationToken) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2125,6 +2127,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public void Dispose() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Dispose(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            GC.SuppressFinalize(this); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private bool _disposed = false; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2447,8 +2450,7 @@ namespace Emby.Server.Implementations.LiveTv 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .SelectMany(i => i.Locations) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Distinct(StringComparer.OrdinalIgnoreCase) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Select(i => _libraryManager.FindByPath(i, true)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .Where(i => i != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .Where(i => i.IsVisibleStandalone(user)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .Where(i => i != null && i.IsVisibleStandalone(user)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .SelectMany(i => _libraryManager.GetCollectionFolders(i)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .GroupBy(x => x.Id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .Select(x => x.First()) 
			 |