浏览代码

stub out channel mapping

Luke Pulverenti 9 年之前
父节点
当前提交
e2ffb0ba25

+ 19 - 35
MediaBrowser.Controller/Entities/TV/Series.cs

@@ -402,47 +402,31 @@ namespace MediaBrowser.Controller.Entities.TV
         public static IEnumerable<Episode> FilterEpisodesBySeason(IEnumerable<Episode> episodes, Season parentSeason, bool includeSpecials)
         {
             var seasonNumber = parentSeason.IndexNumber;
-            if (!includeSpecials || (seasonNumber.HasValue && seasonNumber.Value == 0))
-            {
-                var seasonPresentationKey = parentSeason.PresentationUniqueKey;
+            var seasonPresentationKey = parentSeason.PresentationUniqueKey;
 
-                return episodes.Where(i =>
-                {
-                    if ((i.ParentIndexNumber ?? -1) == seasonNumber)
-                    {
-                        return true;
-                    }
-                    if (!i.ParentIndexNumber.HasValue)
-                    {
-                        var season = i.Season;
-                        return season != null && string.Equals(season.PresentationUniqueKey, seasonPresentationKey, StringComparison.OrdinalIgnoreCase);
-                    }
-
-                    return false;
-                });
-            }
-            else
-            {
-                var seasonPresentationKey = parentSeason.PresentationUniqueKey;
+            var supportSpecialsInSeason = includeSpecials && seasonNumber.HasValue && seasonNumber.Value != 0;
 
-                return episodes.Where(episode =>
+            return episodes.Where(episode =>
+            {
+                var currentSeasonNumber = supportSpecialsInSeason ? episode.AiredSeasonNumber : episode.ParentIndexNumber;
+                if (currentSeasonNumber.HasValue && seasonNumber.HasValue && currentSeasonNumber.Value == seasonNumber.Value)
                 {
-                    var currentSeasonNumber = episode.AiredSeasonNumber;
+                    return true;
+                }
 
-                    if (currentSeasonNumber.HasValue && seasonNumber.HasValue && currentSeasonNumber.Value == seasonNumber.Value)
-                    {
-                        return true;
-                    }
+                if (!currentSeasonNumber.HasValue && !seasonNumber.HasValue && parentSeason.LocationType == LocationType.Virtual)
+                {
+                    return true;
+                }
 
-                    if (!episode.ParentIndexNumber.HasValue)
-                    {
-                        var season = episode.Season;
-                        return season != null && string.Equals(season.PresentationUniqueKey, seasonPresentationKey, StringComparison.OrdinalIgnoreCase);
-                    }
+                if (!episode.ParentIndexNumber.HasValue)
+                {
+                    var season = episode.Season;
+                    return season != null && string.Equals(season.PresentationUniqueKey, seasonPresentationKey, StringComparison.OrdinalIgnoreCase);
+                }
 
-                    return false;
-                });
-            }
+                return false;
+            });
         }
 
         protected override bool GetBlockUnratedValue(UserPolicy config)

+ 1 - 0
MediaBrowser.Controller/LiveTv/IListingsProvider.cs

@@ -15,5 +15,6 @@ namespace MediaBrowser.Controller.LiveTv
         Task AddMetadata(ListingsProviderInfo info, List<ChannelInfo> channels, CancellationToken cancellationToken);
         Task Validate(ListingsProviderInfo info, bool validateLogin, bool validateListings);
         Task<List<NameIdPair>> GetLineups(ListingsProviderInfo info, string country, string location);
+        Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken);
     }
 }

+ 2 - 0
MediaBrowser.Controller/LiveTv/ILiveTvManager.cs

@@ -385,5 +385,7 @@ namespace MediaBrowser.Controller.LiveTv
         List<NameValuePair> GetSatIniMappings();
 
         Task<List<ChannelInfo>> GetSatChannelScanResult(TunerHostInfo info, CancellationToken cancellationToken);
+
+        Task<List<ChannelInfo>> GetChannelsFromListingsProvider(string id, CancellationToken cancellationToken);
     }
 }

+ 5 - 0
MediaBrowser.Server.Implementations/LiveTv/Listings/SchedulesDirect.cs

@@ -869,6 +869,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
             return GetHeadends(info, country, location, CancellationToken.None);
         }
 
+        public async Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken)
+        {
+            return new List<ChannelInfo>();
+        }
+
         public class ScheduleDirect
         {
             public class Token

+ 5 - 0
MediaBrowser.Server.Implementations/LiveTv/Listings/XmlTvListingsProvider.cs

@@ -144,5 +144,10 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
             // Should this method be async?
             return Task.FromResult(results.Select(c => new NameIdPair() { Id = c.Id, Name = c.DisplayName }).ToList());
         }
+
+        public async Task<List<ChannelInfo>> GetChannels(ListingsProviderInfo info, CancellationToken cancellationToken)
+        {
+            return new List<ChannelInfo>();
+        }
     }
 }

+ 7 - 0
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -2521,5 +2521,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
         {
             return new TunerHosts.SatIp.ChannelScan(_logger).Scan(info, cancellationToken);
         }
+
+        public Task<List<ChannelInfo>> GetChannelsFromListingsProvider(string id, CancellationToken cancellationToken)
+        {
+            var info = GetConfiguration().ListingProviders.First(i => string.Equals(i.Id, id, StringComparison.OrdinalIgnoreCase));
+            var provider = _listingProviders.First(i => string.Equals(i.Type, info.Type, StringComparison.OrdinalIgnoreCase));
+            return provider.GetChannels(info, cancellationToken);
+        }
     }
 }