aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-06 00:18:13 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-08-06 00:18:13 -0400
commit284bd3e9f562ae499ad8d8b778392196ac99ed3a (patch)
tree09282153a5db75bc70ef2fa61ab528c97ac87a1e
parente3c52b6f73d938033d5d4d5db1284a2367c75ecd (diff)
updated nuget
-rw-r--r--MediaBrowser.Api/PlaylistService.cs7
-rw-r--r--MediaBrowser.Controller/Entities/LinkedChild.cs8
-rw-r--r--MediaBrowser.Controller/Playlists/IPlaylistManager.cs4
-rw-r--r--MediaBrowser.Dlna/Didl/DidlBuilder.cs37
-rw-r--r--MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs5
-rw-r--r--MediaBrowser.Model/Dlna/DlnaMaps.cs2
-rw-r--r--MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs15
-rw-r--r--MediaBrowser.Model/Dlna/StreamInfo.cs13
-rw-r--r--MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json3
-rw-r--r--MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs24
-rw-r--r--Nuget/MediaBrowser.Common.Internal.nuspec4
-rw-r--r--Nuget/MediaBrowser.Common.nuspec2
-rw-r--r--Nuget/MediaBrowser.Model.Signed.nuspec2
-rw-r--r--Nuget/MediaBrowser.Server.Core.nuspec4
14 files changed, 105 insertions, 25 deletions
diff --git a/MediaBrowser.Api/PlaylistService.cs b/MediaBrowser.Api/PlaylistService.cs
index b4d2e2f0f..2e3d38f46 100644
--- a/MediaBrowser.Api/PlaylistService.cs
+++ b/MediaBrowser.Api/PlaylistService.cs
@@ -41,6 +41,9 @@ namespace MediaBrowser.Api
{
[ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
public string Id { get; set; }
+
+ [ApiMember(Name = "EntryIds", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
+ public string EntryIds { get; set; }
}
[Route("/Playlists/{Id}/Items", "GET", Summary = "Gets the original items of a playlist")]
@@ -122,9 +125,9 @@ namespace MediaBrowser.Api
public void Delete(RemoveFromPlaylist request)
{
- //var task = _playlistManager.RemoveFromPlaylist(request.Id, request.Ids.Split(',').Select(i => new Guid(i)));
+ var task = _playlistManager.RemoveFromPlaylist(request.Id, request.EntryIds.Split(','));
- //Task.WaitAll(task);
+ Task.WaitAll(task);
}
public object Get(GetPlaylistItems request)
diff --git a/MediaBrowser.Controller/Entities/LinkedChild.cs b/MediaBrowser.Controller/Entities/LinkedChild.cs
index c77fe18c4..eb94b37db 100644
--- a/MediaBrowser.Controller/Entities/LinkedChild.cs
+++ b/MediaBrowser.Controller/Entities/LinkedChild.cs
@@ -13,6 +13,9 @@ namespace MediaBrowser.Controller.Entities
public string ItemType { get; set; }
public int? ItemYear { get; set; }
+ [IgnoreDataMember]
+ public string Id { get; set; }
+
/// <summary>
/// Serves as a cache
/// </summary>
@@ -27,6 +30,11 @@ namespace MediaBrowser.Controller.Entities
Type = LinkedChildType.Manual
};
}
+
+ public LinkedChild()
+ {
+ Id = Guid.NewGuid().ToString("N");
+ }
}
public enum LinkedChildType
diff --git a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
index 2923c11c5..f5939ad96 100644
--- a/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
+++ b/MediaBrowser.Controller/Playlists/IPlaylistManager.cs
@@ -32,9 +32,9 @@ namespace MediaBrowser.Controller.Playlists
/// Removes from playlist.
/// </summary>
/// <param name="playlistId">The playlist identifier.</param>
- /// <param name="indeces">The indeces.</param>
+ /// <param name="entryIds">The entry ids.</param>
/// <returns>Task.</returns>
- Task RemoveFromPlaylist(string playlistId, IEnumerable<int> indeces);
+ Task RemoveFromPlaylist(string playlistId, IEnumerable<string> entryIds);
/// <summary>
/// Gets the playlists folder.
diff --git a/MediaBrowser.Dlna/Didl/DidlBuilder.cs b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
index cbdd427af..a5a97567a 100644
--- a/MediaBrowser.Dlna/Didl/DidlBuilder.cs
+++ b/MediaBrowser.Dlna/Didl/DidlBuilder.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Common.Net;
+using System.IO;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -13,6 +14,7 @@ using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Xml;
+using MediaBrowser.Common.Extensions;
namespace MediaBrowser.Dlna.Didl
{
@@ -615,9 +617,11 @@ namespace MediaBrowser.Dlna.Didl
}
AddImageResElement(item, element, 4096, 4096, "jpg");
+ AddImageResElement(item, element, 4096, 4096, "png");
AddImageResElement(item, element, 1024, 768, "jpg");
AddImageResElement(item, element, 640, 480, "jpg");
AddImageResElement(item, element, 160, 160, "jpg");
+ AddImageResElement(item, element, 160, 160, "png");
}
private void AddImageResElement(BaseItem item, XmlElement element, int maxWidth, int maxHeight, string format)
@@ -640,7 +644,7 @@ namespace MediaBrowser.Dlna.Didl
var width = albumartUrlInfo.Width;
var height = albumartUrlInfo.Height;
- var contentFeatures = new ContentFeatureBuilder(_profile).BuildImageHeader(format, width, height);
+ var contentFeatures = new ContentFeatureBuilder(_profile).BuildImageHeader(format, width, height, imageInfo.IsDirectStream);
res.SetAttribute("protocolInfo", String.Format(
"http-get:*:{0}:{1}",
@@ -648,6 +652,14 @@ namespace MediaBrowser.Dlna.Didl
contentFeatures
));
+ res.SetAttribute("colorDepth", "24");
+
+ if (imageInfo.IsDirectStream)
+ {
+ // TODO: Add file size
+ //res.SetAttribute("size", imageInfo.Size.Value.ToString(_usCulture));
+ }
+
if (width.HasValue && height.HasValue)
{
res.SetAttribute("resolution", string.Format("{0}x{1}", width.Value, height.Value));
@@ -722,7 +734,8 @@ namespace MediaBrowser.Dlna.Didl
Type = type,
ImageTag = tag,
Width = width,
- Height = height
+ Height = height,
+ File = imageInfo.Path
};
}
@@ -734,6 +747,10 @@ namespace MediaBrowser.Dlna.Didl
internal int? Width;
internal int? Height;
+
+ internal bool IsDirectStream;
+
+ internal string File;
}
class ImageUrlInfo
@@ -758,6 +775,8 @@ namespace MediaBrowser.Dlna.Didl
var width = info.Width;
var height = info.Height;
+ info.IsDirectStream = false;
+
if (width.HasValue && height.HasValue)
{
var newSize = DrawingUtils.Resize(new ImageSize
@@ -769,6 +788,18 @@ namespace MediaBrowser.Dlna.Didl
width = Convert.ToInt32(newSize.Width);
height = Convert.ToInt32(newSize.Height);
+
+ var inputFormat = (Path.GetExtension(info.File) ?? string.Empty)
+ .TrimStart('.')
+ .Replace("jpeg", "jpg", StringComparison.OrdinalIgnoreCase);
+
+ var normalizedFormat = format
+ .Replace("jpeg", "jpg", StringComparison.OrdinalIgnoreCase);
+
+ if (string.Equals(inputFormat, normalizedFormat, StringComparison.OrdinalIgnoreCase))
+ {
+ info.IsDirectStream = maxWidth >= width.Value && maxHeight >= height.Value;
+ }
}
return new ImageUrlInfo
diff --git a/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs b/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs
index 5417c5b82..c25e93c38 100644
--- a/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs
+++ b/MediaBrowser.Model/Dlna/ContentFeatureBuilder.cs
@@ -14,12 +14,13 @@ namespace MediaBrowser.Model.Dlna
public string BuildImageHeader(string container,
int? width,
- int? height)
+ int? height,
+ bool isDirectStream)
{
string orgOp = ";DLNA.ORG_OP=" + DlnaMaps.GetImageOrgOpValue();
// 0 = native, 1 = transcoded
- const string orgCi = ";DLNA.ORG_CI=0";
+ var orgCi = isDirectStream ? ";DLNA.ORG_CI=0" : ";DLNA.ORG_CI=1";
DlnaFlags flagValue = DlnaFlags.StreamingTransferMode |
DlnaFlags.BackgroundTransferMode |
diff --git a/MediaBrowser.Model/Dlna/DlnaMaps.cs b/MediaBrowser.Model/Dlna/DlnaMaps.cs
index 036c1fc74..9a84eb195 100644
--- a/MediaBrowser.Model/Dlna/DlnaMaps.cs
+++ b/MediaBrowser.Model/Dlna/DlnaMaps.cs
@@ -48,7 +48,7 @@
orgOp += "0";
// Byte-based seeking only possible when not transcoding
- orgOp += "1";
+ orgOp += "0";
return orgOp;
}
diff --git a/MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs b/MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs
index 3b4cc30ac..5101bbe5a 100644
--- a/MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs
+++ b/MediaBrowser.Model/Dlna/MediaFormatProfileResolver.cs
@@ -385,7 +385,7 @@ namespace MediaBrowser.Model.Dlna
return ResolveImageJPGFormat(width, height);
if (StringHelper.EqualsIgnoreCase(container, "png"))
- return MediaFormatProfile.PNG_LRG;
+ return ResolveImagePNGFormat(width, height);
if (StringHelper.EqualsIgnoreCase(container, "gif"))
return MediaFormatProfile.GIF_LRG;
@@ -401,7 +401,7 @@ namespace MediaBrowser.Model.Dlna
if (width.HasValue && height.HasValue)
{
if ((width.Value <= 160) && (height.Value <= 160))
- return MediaFormatProfile.JPEG_SM;
+ return MediaFormatProfile.JPEG_TN;
if ((width.Value <= 640) && (height.Value <= 480))
return MediaFormatProfile.JPEG_SM;
@@ -416,5 +416,16 @@ namespace MediaBrowser.Model.Dlna
return MediaFormatProfile.JPEG_SM;
}
+
+ private MediaFormatProfile ResolveImagePNGFormat(int? width, int? height)
+ {
+ if (width.HasValue && height.HasValue)
+ {
+ if ((width.Value <= 160) && (height.Value <= 160))
+ return MediaFormatProfile.PNG_TN;
+ }
+
+ return MediaFormatProfile.PNG_LRG;
+ }
}
}
diff --git a/MediaBrowser.Model/Dlna/StreamInfo.cs b/MediaBrowser.Model/Dlna/StreamInfo.cs
index a38a6aff8..563a2f19a 100644
--- a/MediaBrowser.Model/Dlna/StreamInfo.cs
+++ b/MediaBrowser.Model/Dlna/StreamInfo.cs
@@ -133,14 +133,21 @@ namespace MediaBrowser.Model.Dlna
public List<SubtitleStreamInfo> GetExternalSubtitles(string baseUrl)
{
+ if (string.IsNullOrEmpty(baseUrl))
+ {
+ throw new ArgumentNullException(baseUrl);
+ }
+
+ List<SubtitleStreamInfo> list = new List<SubtitleStreamInfo>();
+
if (SubtitleDeliveryMethod != SubtitleDeliveryMethod.External)
{
- return null;
+ return list;
}
if (!SubtitleStreamIndex.HasValue)
{
- return null;
+ return list;
}
// HLS will preserve timestamps so we can just grab the full subtitle stream
@@ -156,8 +163,6 @@ namespace MediaBrowser.Model.Dlna
StringHelper.ToStringCultureInvariant(startPositionTicks),
SubtitleFormat);
- List<SubtitleStreamInfo> list = new List<SubtitleStreamInfo>();
-
foreach (MediaStream stream in MediaSource.MediaStreams)
{
if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
diff --git a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
index ad4ba7dc0..1c207b0a2 100644
--- a/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
+++ b/MediaBrowser.Server.Implementations/Localization/JavaScript/javascript.json
@@ -334,5 +334,6 @@
"OptionNewPlaylist": "New playlist...",
"MessageAddedToPlaylistSuccess": "Ok",
"ButtonViewSeriesRecording": "View series recording",
- "ValueOriginalAirDate": "Original air date: {0}"
+ "ValueOriginalAirDate": "Original air date: {0}",
+ "ButtonRemoveFromPlaylist": "Remove from playlist"
}
diff --git a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
index 79b673283..6ab306c0b 100644
--- a/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
+++ b/MediaBrowser.Server.Implementations/Playlists/PlaylistManager.cs
@@ -190,9 +190,29 @@ namespace MediaBrowser.Server.Implementations.Playlists
}, CancellationToken.None).ConfigureAwait(false);
}
- public Task RemoveFromPlaylist(string playlistId, IEnumerable<int> indeces)
+ public async Task RemoveFromPlaylist(string playlistId, IEnumerable<string> entryIds)
{
- throw new NotImplementedException();
+ var playlist = _libraryManager.GetItemById(playlistId) as Playlist;
+
+ if (playlist == null)
+ {
+ throw new ArgumentException("No Playlist exists with the supplied Id");
+ }
+
+ var children = playlist.LinkedChildren.ToList();
+
+ var idList = entryIds.ToList();
+
+ var removals = children.Where(i => idList.Contains(i.Id));
+
+ playlist.LinkedChildren = children.Except(removals)
+ .ToList();
+
+ await playlist.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
+ await playlist.RefreshMetadata(new MetadataRefreshOptions
+ {
+ ForceSave = true
+ }, CancellationToken.None).ConfigureAwait(false);
}
public Folder GetPlaylistsFolder(string userId)
diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec
index ce34a1b30..78218d9ce 100644
--- a/Nuget/MediaBrowser.Common.Internal.nuspec
+++ b/Nuget/MediaBrowser.Common.Internal.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common.Internal</id>
- <version>3.0.422</version>
+ <version>3.0.423</version>
<title>MediaBrowser.Common.Internal</title>
<authors>Luke</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.422" />
+ <dependency id="MediaBrowser.Common" version="3.0.423" />
<dependency id="NLog" version="3.1.0.0" />
<dependency id="SimpleInjector" version="2.5.2" />
<dependency id="sharpcompress" version="0.10.2" />
diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec
index 5f09afa68..2a0fbc9af 100644
--- a/Nuget/MediaBrowser.Common.nuspec
+++ b/Nuget/MediaBrowser.Common.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>MediaBrowser.Common</id>
- <version>3.0.422</version>
+ <version>3.0.423</version>
<title>MediaBrowser.Common</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec
index df036cc98..2724c2088 100644
--- a/Nuget/MediaBrowser.Model.Signed.nuspec
+++ b/Nuget/MediaBrowser.Model.Signed.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>MediaBrowser.Model.Signed</id>
- <version>3.0.422</version>
+ <version>3.0.423</version>
<title>MediaBrowser.Model - Signed Edition</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec
index ee54f248b..0f48a1976 100644
--- a/Nuget/MediaBrowser.Server.Core.nuspec
+++ b/Nuget/MediaBrowser.Server.Core.nuspec
@@ -2,7 +2,7 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>MediaBrowser.Server.Core</id>
- <version>3.0.422</version>
+ <version>3.0.423</version>
<title>Media Browser.Server.Core</title>
<authors>Media Browser Team</authors>
<owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
<description>Contains core components required to build plugins for Media Browser Server.</description>
<copyright>Copyright © Media Browser 2013</copyright>
<dependencies>
- <dependency id="MediaBrowser.Common" version="3.0.422" />
+ <dependency id="MediaBrowser.Common" version="3.0.423" />
</dependencies>
</metadata>
<files>