|
@@ -6,11 +6,13 @@ using MediaBrowser.Controller.Entities.Movies;
|
|
using MediaBrowser.Controller.Entities.TV;
|
|
using MediaBrowser.Controller.Entities.TV;
|
|
using MediaBrowser.Controller.Library;
|
|
using MediaBrowser.Controller.Library;
|
|
using MediaBrowser.Controller.Localization;
|
|
using MediaBrowser.Controller.Localization;
|
|
|
|
+using MediaBrowser.Controller.Resolvers;
|
|
using MediaBrowser.Model.Channels;
|
|
using MediaBrowser.Model.Channels;
|
|
using MediaBrowser.Model.Configuration;
|
|
using MediaBrowser.Model.Configuration;
|
|
using MediaBrowser.Model.Entities;
|
|
using MediaBrowser.Model.Entities;
|
|
using System;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
|
+using System.IO;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Threading.Tasks;
|
|
@@ -55,11 +57,6 @@ namespace MediaBrowser.Server.Implementations.Intros
|
|
return new List<IntroInfo>();
|
|
return new List<IntroInfo>();
|
|
}
|
|
}
|
|
|
|
|
|
- if (!IsSupporter)
|
|
|
|
- {
|
|
|
|
- return new List<IntroInfo>();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
var ratingLevel = string.IsNullOrWhiteSpace(item.OfficialRating)
|
|
var ratingLevel = string.IsNullOrWhiteSpace(item.OfficialRating)
|
|
? (int?)null
|
|
? (int?)null
|
|
: _localization.GetRatingLevel(item.OfficialRating);
|
|
: _localization.GetRatingLevel(item.OfficialRating);
|
|
@@ -98,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Intros
|
|
}));
|
|
}));
|
|
}
|
|
}
|
|
|
|
|
|
- if (config.EnableIntrosFromUpcomingTrailers)
|
|
|
|
|
|
+ if (config.EnableIntrosFromUpcomingTrailers && IsSupporter)
|
|
{
|
|
{
|
|
var channelTrailers = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery
|
|
var channelTrailers = await _channelManager.GetAllMediaInternal(new AllChannelMediaQuery
|
|
{
|
|
{
|
|
@@ -137,7 +134,6 @@ namespace MediaBrowser.Server.Implementations.Intros
|
|
}
|
|
}
|
|
|
|
|
|
// Avoid implicitly captured closure
|
|
// Avoid implicitly captured closure
|
|
- var currentUser = user;
|
|
|
|
return candidates.Where(i =>
|
|
return candidates.Where(i =>
|
|
{
|
|
{
|
|
if (config.EnableIntrosParentalControl && !FilterByParentalRating(ratingLevel, i.Item))
|
|
if (config.EnableIntrosParentalControl && !FilterByParentalRating(ratingLevel, i.Item))
|
|
@@ -166,7 +162,33 @@ namespace MediaBrowser.Server.Implementations.Intros
|
|
|
|
|
|
private List<IntroInfo> GetCustomIntros(BaseItem item)
|
|
private List<IntroInfo> GetCustomIntros(BaseItem item)
|
|
{
|
|
{
|
|
- return new List<IntroInfo>();
|
|
|
|
|
|
+ try
|
|
|
|
+ {
|
|
|
|
+ return GetCustomIntroFiles()
|
|
|
|
+ .OrderBy(i => Guid.NewGuid())
|
|
|
|
+ .Select(i => new IntroInfo
|
|
|
|
+ {
|
|
|
|
+ Path = i
|
|
|
|
+
|
|
|
|
+ }).ToList();
|
|
|
|
+ }
|
|
|
|
+ catch (IOException)
|
|
|
|
+ {
|
|
|
|
+ return new List<IntroInfo>();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private IEnumerable<string> GetCustomIntroFiles(CinemaModeConfiguration options = null)
|
|
|
|
+ {
|
|
|
|
+ options = options ?? GetOptions();
|
|
|
|
+
|
|
|
|
+ if (string.IsNullOrWhiteSpace(options.CustomIntroPath))
|
|
|
|
+ {
|
|
|
|
+ return new List<string>();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return Directory.EnumerateFiles(options.CustomIntroPath, "*", SearchOption.AllDirectories)
|
|
|
|
+ .Where(EntityResolutionHelper.IsVideoFile);
|
|
}
|
|
}
|
|
|
|
|
|
private bool FilterByParentalRating(int? ratingLevel, BaseItem item)
|
|
private bool FilterByParentalRating(int? ratingLevel, BaseItem item)
|
|
@@ -265,7 +287,7 @@ namespace MediaBrowser.Server.Implementations.Intros
|
|
|
|
|
|
public IEnumerable<string> GetAllIntroFiles()
|
|
public IEnumerable<string> GetAllIntroFiles()
|
|
{
|
|
{
|
|
- return new List<string>();
|
|
|
|
|
|
+ return GetCustomIntroFiles();
|
|
}
|
|
}
|
|
|
|
|
|
private bool IsSupporter
|
|
private bool IsSupporter
|