Browse Source

Merge pull request #2385 from MediaBrowser/dev

Dev
Luke 8 years ago
parent
commit
c2cb9c1a7c

+ 2 - 2
Emby.Server.Implementations/Data/SqliteItemRepository.cs

@@ -3368,9 +3368,9 @@ namespace Emby.Server.Implementations.Data
                 }
             }
 
-            if (query.SimilarTo != null)
+            if (query.SimilarTo != null && query.MinSimilarityScore > 0)
             {
-                whereClauses.Add("SimilarityScore > 0");
+                whereClauses.Add("SimilarityScore > " + (query.MinSimilarityScore - 1).ToString(CultureInfo.InvariantCulture));
             }
 
             if (query.IsFolder.HasValue)

+ 8 - 2
Emby.Server.Implementations/Intros/DefaultIntroProvider.cs

@@ -100,7 +100,12 @@ namespace Emby.Server.Implementations.Intros
 
             if (trailerTypes.Count > 0)
             {
-                var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery
+                if (trailerTypes.Count >= 5)
+                {
+                    trailerTypes.Clear();
+                }
+
+                var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery(user)
                 {
                     IncludeItemTypes = new[] { typeof(Trailer).Name },
                     TrailerTypes = trailerTypes.ToArray(),
@@ -111,7 +116,8 @@ namespace Emby.Server.Implementations.Intros
 
                     // Account for duplicates by imdb id, since the database doesn't support this yet
                     Limit = config.TrailerLimit * 2,
-                    SourceTypes = sourceTypes.ToArray()
+                    SourceTypes = sourceTypes.ToArray(),
+                    MinSimilarityScore = 0
 
                 }).Where(i => string.IsNullOrWhiteSpace(i.GetProviderId(MetadataProviders.Imdb)) || !string.Equals(i.GetProviderId(MetadataProviders.Imdb), item.GetProviderId(MetadataProviders.Imdb), StringComparison.OrdinalIgnoreCase)).Take(config.TrailerLimit);
 

+ 2 - 1
Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs

@@ -155,7 +155,8 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
                     ReadAtNativeFramerate = false,
 
                     Id = channel.Path.GetMD5().ToString("N"),
-                    IsInfiniteStream = true
+                    IsInfiniteStream = true,
+                    SupportsDirectStream = false
                 };
 
                 return new List<MediaSourceInfo> { mediaSource };

+ 1 - 0
Emby.Server.Implementations/Localization/iso6392.txt

@@ -137,6 +137,7 @@ fon|||Fon|fon
 fre|fra|fr|French|français
 frm|||French, Middle (ca.1400-1600)|français moyen (1400-1600)
 fro|||French, Old (842-ca.1400)|français ancien (842-ca.1400)
+frc||fr-ca|French (Canada)|french
 frr|||Northern Frisian|frison septentrional
 frs|||Eastern Frisian|frison oriental
 fry||fy|Western Frisian|frison occidental

+ 1 - 1
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -1885,7 +1885,7 @@ namespace MediaBrowser.Api.Playback
                 request.AudioCodec = InferAudioCodec(url);
             }
 
-            var state = new StreamState(MediaSourceManager, Logger)
+            var state = new StreamState(MediaSourceManager, Logger, TranscodingJobType)
             {
                 Request = request,
                 RequestedUrl = url,

+ 0 - 7
MediaBrowser.Api/Playback/Hls/BaseHlsService.cs

@@ -309,13 +309,6 @@ namespace MediaBrowser.Api.Playback.Hls
             return 0;
         }
 
-        protected bool IsLiveStream(StreamState state)
-        {
-            var isLiveStream = (state.RunTimeTicks ?? 0) == 0;
-
-            return isLiveStream;
-        }
-
         public BaseHlsService(IServerConfigurationManager serverConfig, IUserManager userManager, ILibraryManager libraryManager, IIsoManager isoManager, IMediaEncoder mediaEncoder, IFileSystem fileSystem, IDlnaManager dlnaManager, ISubtitleEncoder subtitleEncoder, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager, IZipClient zipClient, IJsonSerializer jsonSerializer, IAuthorizationContext authorizationContext) : base(serverConfig, userManager, libraryManager, isoManager, mediaEncoder, fileSystem, dlnaManager, subtitleEncoder, deviceManager, mediaSourceManager, zipClient, jsonSerializer, authorizationContext)
         {
         }

+ 1 - 1
MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs

@@ -521,7 +521,7 @@ namespace MediaBrowser.Api.Playback.Hls
 
             builder.AppendLine("#EXTM3U");
 
-            var isLiveStream = IsLiveStream(state);
+            var isLiveStream = state.IsSegmentedLiveStream;
 
             var queryStringIndex = Request.RawUrl.IndexOf('?');
             var queryString = queryStringIndex == -1 ? string.Empty : Request.RawUrl.Substring(queryStringIndex);

+ 13 - 3
MediaBrowser.Api/Playback/StreamState.cs

@@ -89,17 +89,25 @@ namespace MediaBrowser.Api.Playback
                         return 10;
                     }
 
-                    if (!RunTimeTicks.HasValue)
+                    if (IsSegmentedLiveStream)
                     {
                         return 3;
                     }
-                    return 3;
+                    return 6;
                 }
 
                 return 3;
             }
         }
 
+        public bool IsSegmentedLiveStream
+        {
+            get
+            {
+                return TranscodingType != TranscodingJobType.Progressive && !RunTimeTicks.HasValue;
+            }
+        }
+
         public int HlsListSize
         {
             get
@@ -119,8 +127,9 @@ namespace MediaBrowser.Api.Playback
         public List<string> SupportedAudioCodecs { get; set; }
         public List<string> SupportedVideoCodecs { get; set; }
         public string UserAgent { get; set; }
+        public TranscodingJobType TranscodingType { get; set; }
 
-        public StreamState(IMediaSourceManager mediaSourceManager, ILogger logger)
+        public StreamState(IMediaSourceManager mediaSourceManager, ILogger logger, TranscodingJobType transcodingType)
         {
             _mediaSourceManager = mediaSourceManager;
             _logger = logger;
@@ -128,6 +137,7 @@ namespace MediaBrowser.Api.Playback
             SupportedVideoCodecs = new List<string>();
             PlayableStreamFileNames = new List<string>();
             RemoteHttpHeaders = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+            TranscodingType = transcodingType;
         }
 
         public string InputAudioSync { get; set; }

+ 1 - 1
MediaBrowser.Controller/Channels/ChannelMediaInfo.cs

@@ -65,7 +65,7 @@ namespace MediaBrowser.Controller.Channels
                 Name = id,
                 Id = id,
                 ReadAtNativeFramerate = ReadAtNativeFramerate,
-                SupportsDirectStream = Protocol == MediaProtocol.File,
+                SupportsDirectStream = false,
                 SupportsDirectPlay = SupportsDirectPlay
             };
 

+ 1 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -53,6 +53,7 @@ namespace MediaBrowser.Controller.Entities
             ImageInfos = new List<ItemImageInfo>();
             InheritedTags = new List<string>();
             ProductionLocations = new List<string>();
+            SourceType = SourceType.Library;
         }
 
         public static readonly char[] SlugReplaceChars = { '?', '/', '&' };

+ 3 - 0
MediaBrowser.Controller/Entities/InternalItemsQuery.cs

@@ -160,6 +160,7 @@ namespace MediaBrowser.Controller.Entities
         public DateTime? MinDateLastSaved { get; set; }
 
         public DtoOptions DtoOptions { get; set; }
+        public int MinSimilarityScore { get; set; }
 
         public bool HasField(ItemFields name)
         {
@@ -197,6 +198,8 @@ namespace MediaBrowser.Controller.Entities
 
         public InternalItemsQuery()
         {
+            MinSimilarityScore = 1;
+
             GroupByPresentationUniqueKey = true;
             EnableTotalRecordCount = true;
 

+ 12 - 3
MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs

@@ -20,9 +20,6 @@ using System;
 using System.Linq;
 using System.Threading;
 using System.Threading.Tasks;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Controller.IO;
-using MediaBrowser.Model.IO;
 using MediaBrowser.Model.Globalization;
 
 namespace MediaBrowser.Providers.MediaInfo
@@ -35,6 +32,8 @@ namespace MediaBrowser.Providers.MediaInfo
         ICustomMetadataProvider<Trailer>,
         ICustomMetadataProvider<Video>,
         ICustomMetadataProvider<Audio>,
+        ICustomMetadataProvider<AudioPodcast>,
+        ICustomMetadataProvider<AudioBook>,
         IHasItemChangeMonitor,
         IHasOrder,
         IForcedProvider,
@@ -100,6 +99,16 @@ namespace MediaBrowser.Providers.MediaInfo
             return FetchAudioInfo(item, cancellationToken);
         }
 
+        public Task<ItemUpdateType> FetchAsync(AudioPodcast item, MetadataRefreshOptions options, CancellationToken cancellationToken)
+        {
+            return FetchAudioInfo(item, cancellationToken);
+        }
+
+        public Task<ItemUpdateType> FetchAsync(AudioBook item, MetadataRefreshOptions options, CancellationToken cancellationToken)
+        {
+            return FetchAudioInfo(item, cancellationToken);
+        }
+
         public FFProbeProvider(ILogger logger, IIsoManager isoManager, IMediaEncoder mediaEncoder, IItemRepository itemRepo, IBlurayExaminer blurayExaminer, ILocalizationManager localization, IApplicationPaths appPaths, IJsonSerializer json, IEncodingManager encodingManager, IFileSystem fileSystem, IServerConfigurationManager config, ISubtitleManager subtitleManager, IChapterManager chapterManager, ILibraryManager libraryManager)
         {
             _logger = logger;

+ 0 - 3
MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj

@@ -849,9 +849,6 @@
     <Content Include="dashboard-ui\dashboard\autoorganizelog.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>
-    <Content Include="dashboard-ui\scripts\externalplayer.js">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </Content>
     <Content Include="dashboard-ui\scripts\favorites.js">
       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
     </Content>