aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Api/Playback/MediaInfoService.cs16
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfoSorter.cs19
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MediaSync.cs33
-rw-r--r--MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs2
6 files changed, 59 insertions, 25 deletions
diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs
index ce140365b..e219f4186 100644
--- a/MediaBrowser.Api/Playback/MediaInfoService.cs
+++ b/MediaBrowser.Api/Playback/MediaInfoService.cs
@@ -86,14 +86,14 @@ namespace MediaBrowser.Api.Playback
var authInfo = AuthorizationContext.GetAuthorizationInfo(Request);
var profile = request.DeviceProfile;
- //if (profile == null)
- //{
- // var caps = _deviceManager.GetCapabilities(authInfo.DeviceId);
- // if (caps != null)
- // {
- // profile = caps.DeviceProfile;
- // }
- //}
+ if (profile == null)
+ {
+ var caps = _deviceManager.GetCapabilities(authInfo.DeviceId);
+ if (caps != null)
+ {
+ profile = caps.DeviceProfile;
+ }
+ }
if (profile != null)
{
diff --git a/MediaBrowser.Model/Dlna/StreamInfoSorter.cs b/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
index 80eca193f..87c661548 100644
--- a/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
+++ b/MediaBrowser.Model/Dlna/StreamInfoSorter.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.Session;
-using System;
using System.Collections.Generic;
using System.Linq;
@@ -12,16 +11,24 @@ namespace MediaBrowser.Model.Dlna
{
return streams.OrderBy(i =>
{
+ // Nothing beats direct playing a file
+ if (i.PlayMethod == PlayMethod.DirectPlay && i.MediaSource.Protocol == MediaProtocol.File)
+ {
+ return 0;
+ }
+
+ return 1;
+
+ }).ThenBy(i =>
+ {
switch (i.PlayMethod)
{
+ // Let's assume direct streaming a file is just as desirable as direct playing a remote url
+ case PlayMethod.DirectStream:
case PlayMethod.DirectPlay:
return 0;
- case PlayMethod.DirectStream:
- return 1;
- case PlayMethod.Transcode:
- return 2;
default:
- throw new ArgumentException("Unrecognized PlayMethod");
+ return 2;
}
}).ThenBy(i =>
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 64e5d20c9..f9fa1aae3 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -1713,11 +1713,15 @@ namespace MediaBrowser.Server.Implementations.Library
isNew = true;
}
- var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 6;
+ var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved).TotalHours >= 12;
if (refresh)
{
- _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions());
+ _providerManagerFactory().QueueRefresh(item.Id, new MetadataRefreshOptions
+ {
+ // Need to force save to increment DateLastSaved
+ ForceSave = true
+ });
}
return item;
diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
index eac0cd96d..1063fde53 100644
--- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
@@ -125,7 +125,7 @@ namespace MediaBrowser.Server.Implementations.Photos
protected abstract Task<List<BaseItem>> GetItemsWithImages(IHasImages item);
- private const string Version = "4";
+ private const string Version = "5";
protected string GetConfigurationCacheKey(List<BaseItem> items, string itemName)
{
var parts = Version + "_" + (itemName ?? string.Empty) + "_" +
@@ -223,8 +223,8 @@ namespace MediaBrowser.Server.Implementations.Photos
protected virtual List<BaseItem> GetFinalItems(List<BaseItem> items, int limit)
{
- // Rotate the images once every 7 days
- var random = DateTime.Now.DayOfYear % 7;
+ // Rotate the images once every x days
+ var random = DateTime.Now.DayOfYear % 4;
return items
.OrderBy(i => (random + "" + items.IndexOf(i)).GetMD5())
diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
index 429b72489..815756f9b 100644
--- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
+++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
@@ -176,6 +176,8 @@ namespace MediaBrowser.Server.Implementations.Sync
mediaSource.Path = sendFileResult.Path;
mediaSource.Protocol = sendFileResult.Protocol;
mediaSource.SupportsTranscoding = false;
+
+ await SendSubtitles(localItem, mediaSource, provider, dataProvider, target, cancellationToken).ConfigureAwait(false);
}
}
@@ -205,16 +207,37 @@ namespace MediaBrowser.Server.Implementations.Sync
private async Task SendSubtitles(LocalItem localItem, MediaSourceInfo mediaSource, IServerSyncProvider provider, ISyncDataProvider dataProvider, SyncTarget target, CancellationToken cancellationToken)
{
+ var failedSubtitles = new List<MediaStream>();
+ var requiresSave = false;
+
foreach (var mediaStream in mediaSource.MediaStreams
.Where(i => i.Type == MediaStreamType.Subtitle && i.IsExternal)
.ToList())
{
- var sendFileResult = await SendFile(provider, mediaStream.Path, localItem, target, cancellationToken).ConfigureAwait(false);
+ try
+ {
+ var sendFileResult = await SendFile(provider, mediaStream.Path, localItem, target, cancellationToken).ConfigureAwait(false);
- mediaStream.Path = sendFileResult.Path;
-
+ mediaStream.Path = sendFileResult.Path;
+ requiresSave = true;
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error sending subtitle stream", ex);
+ failedSubtitles.Add(mediaStream);
+ }
+ }
+
+ if (failedSubtitles.Count > 0)
+ {
+ mediaSource.MediaStreams = mediaSource.MediaStreams.Except(failedSubtitles).ToList();
+ requiresSave = true;
+ }
+
+ if (requiresSave)
+ {
await dataProvider.AddOrUpdate(target, localItem).ConfigureAwait(false);
- }
+ }
}
private async Task RemoveItem(IServerSyncProvider provider,
@@ -374,7 +397,7 @@ namespace MediaBrowser.Server.Implementations.Sync
var name = Path.GetFileNameWithoutExtension(item.LocalPath);
- foreach (var file in list.Where(f => f.Name.Contains(name)))
+ foreach (var file in list.Where(f => f.Name.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1))
{
var itemFile = new ItemFileInfo
{
diff --git a/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs b/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs
index af2e01457..0bf4d8e4a 100644
--- a/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs
+++ b/MediaBrowser.Server.Implementations/UserViews/StripCollageBuilder.cs
@@ -162,7 +162,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
wandList.AddImage(mwr);
int ex = (int)(wand.CurrentImage.Width - mwg.CurrentImage.Width) / 2;
- wand.CurrentImage.CompositeImage(wandList.AppendImages(true), CompositeOperator.AtopCompositeOp, ex, Convert.ToInt32(height * .08));
+ wand.CurrentImage.CompositeImage(wandList.AppendImages(true), CompositeOperator.AtopCompositeOp, ex, Convert.ToInt32(height * .085));
}
}
}