mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-09 07:10:34 +02:00
added new channel settings
This commit is contained in:
parent
20d35a6405
commit
37683565e7
|
@ -1427,13 +1427,12 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
else if (item is IChannelMediaItem)
|
else if (item is IChannelMediaItem)
|
||||||
{
|
{
|
||||||
var channelMediaSources = await ChannelManager.GetChannelItemMediaSources(request.Id, CancellationToken.None).ConfigureAwait(false);
|
var source = await GetChannelMediaInfo(request.Id, CancellationToken.None).ConfigureAwait(false);
|
||||||
|
|
||||||
var source = channelMediaSources.First();
|
|
||||||
state.IsInputVideo = string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase);
|
state.IsInputVideo = string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase);
|
||||||
state.IsRemote = source.IsRemote;
|
state.IsRemote = source.IsRemote;
|
||||||
state.MediaPath = source.Path;
|
state.MediaPath = source.Path;
|
||||||
state.RunTimeTicks = item.RunTimeTicks;
|
state.RunTimeTicks = item.RunTimeTicks;
|
||||||
|
mediaStreams = GetMediaStreams(source).ToList();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1479,28 +1478,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
if (videoRequest != null)
|
AttachMediaStreamInfo(state, mediaStreams, videoRequest, url);
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(videoRequest.VideoCodec))
|
|
||||||
{
|
|
||||||
videoRequest.VideoCodec = InferVideoCodec(url);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.VideoStream = GetMediaStream(mediaStreams, videoRequest.VideoStreamIndex, MediaStreamType.Video);
|
|
||||||
state.SubtitleStream = GetMediaStream(mediaStreams, videoRequest.SubtitleStreamIndex, MediaStreamType.Subtitle, false);
|
|
||||||
state.AudioStream = GetMediaStream(mediaStreams, videoRequest.AudioStreamIndex, MediaStreamType.Audio);
|
|
||||||
|
|
||||||
if (state.VideoStream != null && state.VideoStream.IsInterlaced)
|
|
||||||
{
|
|
||||||
state.DeInterlace = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
EnforceResolutionLimit(state, videoRequest);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
state.AudioStream = GetMediaStream(mediaStreams, null, MediaStreamType.Audio, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
state.SegmentLength = state.ReadInputAtNativeFramerate ? 5 : 10;
|
state.SegmentLength = state.ReadInputAtNativeFramerate ? 5 : 10;
|
||||||
state.HlsListSize = state.ReadInputAtNativeFramerate ? 100 : 1440;
|
state.HlsListSize = state.ReadInputAtNativeFramerate ? 100 : 1440;
|
||||||
|
@ -1538,6 +1516,96 @@ namespace MediaBrowser.Api.Playback
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AttachMediaStreamInfo(StreamState state,
|
||||||
|
List<MediaStream> mediaStreams,
|
||||||
|
VideoStreamRequest videoRequest,
|
||||||
|
string requestedUrl)
|
||||||
|
{
|
||||||
|
if (videoRequest != null)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(videoRequest.VideoCodec))
|
||||||
|
{
|
||||||
|
videoRequest.VideoCodec = InferVideoCodec(requestedUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
state.VideoStream = GetMediaStream(mediaStreams, videoRequest.VideoStreamIndex, MediaStreamType.Video);
|
||||||
|
state.SubtitleStream = GetMediaStream(mediaStreams, videoRequest.SubtitleStreamIndex, MediaStreamType.Subtitle, false);
|
||||||
|
state.AudioStream = GetMediaStream(mediaStreams, videoRequest.AudioStreamIndex, MediaStreamType.Audio);
|
||||||
|
|
||||||
|
if (state.VideoStream != null && state.VideoStream.IsInterlaced)
|
||||||
|
{
|
||||||
|
state.DeInterlace = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
EnforceResolutionLimit(state, videoRequest);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state.AudioStream = GetMediaStream(mediaStreams, null, MediaStreamType.Audio, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IEnumerable<MediaStream> GetMediaStreams(ChannelMediaInfo info)
|
||||||
|
{
|
||||||
|
var list = new List<MediaStream>();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(info.VideoCodec) &&
|
||||||
|
!string.IsNullOrWhiteSpace(info.AudioCodec))
|
||||||
|
{
|
||||||
|
list.Add(new MediaStream
|
||||||
|
{
|
||||||
|
Type = MediaStreamType.Video,
|
||||||
|
Width = info.Width,
|
||||||
|
RealFrameRate = info.Framerate,
|
||||||
|
Profile = info.VideoProfile,
|
||||||
|
Level = info.VideoLevel,
|
||||||
|
Index = -1,
|
||||||
|
Height = info.Height,
|
||||||
|
Codec = info.VideoCodec,
|
||||||
|
BitRate = info.VideoBitrate,
|
||||||
|
AverageFrameRate = info.Framerate
|
||||||
|
});
|
||||||
|
|
||||||
|
list.Add(new MediaStream
|
||||||
|
{
|
||||||
|
Type = MediaStreamType.Audio,
|
||||||
|
Index = -1,
|
||||||
|
Codec = info.AudioCodec,
|
||||||
|
BitRate = info.AudioBitrate,
|
||||||
|
Channels = info.AudioChannels,
|
||||||
|
SampleRate = info.AudioSampleRate
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<ChannelMediaInfo> GetChannelMediaInfo(string id, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var channelMediaSources = await ChannelManager.GetChannelItemMediaSources(id, cancellationToken)
|
||||||
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
|
var list = channelMediaSources.ToList();
|
||||||
|
|
||||||
|
var preferredWidth = ServerConfigurationManager.Configuration.ChannelOptions.PreferredStreamingWidth;
|
||||||
|
|
||||||
|
if (preferredWidth.HasValue)
|
||||||
|
{
|
||||||
|
var val = preferredWidth.Value;
|
||||||
|
|
||||||
|
return list
|
||||||
|
.OrderBy(i => Math.Abs(i.Width ?? 0 - val))
|
||||||
|
.ThenByDescending(i => i.Width ?? 0)
|
||||||
|
.ThenBy(list.IndexOf)
|
||||||
|
.First();
|
||||||
|
}
|
||||||
|
|
||||||
|
return list
|
||||||
|
.OrderByDescending(i => i.Width ?? 0)
|
||||||
|
.ThenBy(list.IndexOf)
|
||||||
|
.First();
|
||||||
|
}
|
||||||
|
|
||||||
private bool CanStreamCopyVideo(VideoStreamRequest request, MediaStream videoStream)
|
private bool CanStreamCopyVideo(VideoStreamRequest request, MediaStream videoStream)
|
||||||
{
|
{
|
||||||
if (videoStream.IsInterlaced)
|
if (videoStream.IsInterlaced)
|
||||||
|
|
|
@ -170,7 +170,7 @@ namespace MediaBrowser.Common.Implementations.Updates
|
||||||
// Let dev users get results more often for testing purposes
|
// Let dev users get results more often for testing purposes
|
||||||
var cacheLength = _config.CommonConfiguration.SystemUpdateLevel == PackageVersionClass.Dev
|
var cacheLength = _config.CommonConfiguration.SystemUpdateLevel == PackageVersionClass.Dev
|
||||||
? TimeSpan.FromMinutes(3)
|
? TimeSpan.FromMinutes(3)
|
||||||
: TimeSpan.FromHours(4);
|
: TimeSpan.FromHours(6);
|
||||||
|
|
||||||
if ((DateTime.UtcNow - _lastPackageListResult.Item2) < cacheLength)
|
if ((DateTime.UtcNow - _lastPackageListResult.Item2) < cacheLength)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,9 +17,14 @@ namespace MediaBrowser.Controller.Channels
|
||||||
public int? Width { get; set; }
|
public int? Width { get; set; }
|
||||||
public int? Height { get; set; }
|
public int? Height { get; set; }
|
||||||
public int? AudioChannels { get; set; }
|
public int? AudioChannels { get; set; }
|
||||||
|
public int? AudioSampleRate { get; set; }
|
||||||
|
|
||||||
public bool IsRemote { get; set; }
|
public bool IsRemote { get; set; }
|
||||||
|
|
||||||
|
public string VideoProfile { get; set; }
|
||||||
|
public float? VideoLevel { get; set; }
|
||||||
|
public float? Framerate { get; set; }
|
||||||
|
|
||||||
public ChannelMediaInfo()
|
public ChannelMediaInfo()
|
||||||
{
|
{
|
||||||
RequiredHttpHeaders = new Dictionary<string, string>();
|
RequiredHttpHeaders = new Dictionary<string, string>();
|
||||||
|
|
|
@ -218,7 +218,7 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="itemId">The item identifier.</param>
|
/// <param name="itemId">The item identifier.</param>
|
||||||
/// <returns>Task{BaseItemDto[]}.</returns>
|
/// <returns>Task{BaseItemDto[]}.</returns>
|
||||||
Task<BaseItemDto[]> GetAdditionalParts(string itemId, string userId);
|
Task<ItemsResult> GetAdditionalParts(string itemId, string userId);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the users async.
|
/// Gets the users async.
|
||||||
|
@ -443,8 +443,9 @@ namespace MediaBrowser.Model.ApiClient
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the system status async.
|
/// Gets the system status async.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task{SystemInfo}.</returns>
|
/// <returns>Task{SystemInfo}.</returns>
|
||||||
Task<SystemInfo> GetSystemInfoAsync();
|
Task<SystemInfo> GetSystemInfoAsync(CancellationToken cancellationToken);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a person
|
/// Gets a person
|
||||||
|
|
|
@ -226,6 +226,8 @@ namespace MediaBrowser.Model.Configuration
|
||||||
[Obsolete]
|
[Obsolete]
|
||||||
public string[] ManualLoginClients { get; set; }
|
public string[] ManualLoginClients { get; set; }
|
||||||
|
|
||||||
|
public ChannelOptions ChannelOptions { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
|
/// Initializes a new instance of the <see cref="ServerConfiguration" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -293,6 +295,13 @@ namespace MediaBrowser.Model.Configuration
|
||||||
NotificationOptions = new NotificationOptions();
|
NotificationOptions = new NotificationOptions();
|
||||||
|
|
||||||
SubtitleOptions = new SubtitleOptions();
|
SubtitleOptions = new SubtitleOptions();
|
||||||
|
|
||||||
|
ChannelOptions = new ChannelOptions();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class ChannelOptions
|
||||||
|
{
|
||||||
|
public int? PreferredStreamingWidth { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Extensions
|
namespace MediaBrowser.Model.Extensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Isolating these helpers allow this entire project to be easily converted to Java
|
||||||
|
/// </summary>
|
||||||
public static class DoubleHelper
|
public static class DoubleHelper
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Extensions
|
namespace MediaBrowser.Model.Extensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Isolating these helpers allow this entire project to be easily converted to Java
|
||||||
|
/// </summary>
|
||||||
public static class IntHelper
|
public static class IntHelper
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -3,6 +3,9 @@ using System.Globalization;
|
||||||
|
|
||||||
namespace MediaBrowser.Model.Extensions
|
namespace MediaBrowser.Model.Extensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Isolating these helpers allow this entire project to be easily converted to Java
|
||||||
|
/// </summary>
|
||||||
public static class StringHelper
|
public static class StringHelper
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using System.Globalization;
|
using MediaBrowser.Common.Extensions;
|
||||||
using MediaBrowser.Common.Extensions;
|
|
||||||
using MediaBrowser.Common.IO;
|
using MediaBrowser.Common.IO;
|
||||||
using MediaBrowser.Controller.Channels;
|
using MediaBrowser.Controller.Channels;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
|
@ -519,7 +518,7 @@ namespace MediaBrowser.Server.Implementations.Channels
|
||||||
{
|
{
|
||||||
// Increment this as needed to force new downloads
|
// Increment this as needed to force new downloads
|
||||||
// Incorporate Name because it's being used to convert channel entity to provider
|
// Incorporate Name because it's being used to convert channel entity to provider
|
||||||
return externalId + (channelProvider.DataVersion ?? string.Empty) + (channelProvider.Name ?? string.Empty) + "13";
|
return externalId + (channelProvider.DataVersion ?? string.Empty) + (channelProvider.Name ?? string.Empty) + "14";
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Channel internalChannel, CancellationToken cancellationToken)
|
private async Task<BaseItem> GetChannelItemEntity(ChannelItemInfo info, IChannel channelProvider, Channel internalChannel, CancellationToken cancellationToken)
|
||||||
|
|
|
@ -1171,7 +1171,12 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||||
LocationType = item.LocationType,
|
LocationType = item.LocationType,
|
||||||
Name = item.Name,
|
Name = item.Name,
|
||||||
Path = GetMappedPath(item),
|
Path = GetMappedPath(item),
|
||||||
MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery { ItemId = item.Id }).ToList(),
|
MediaStreams = _itemRepo.GetMediaStreams(new MediaStreamQuery
|
||||||
|
{
|
||||||
|
ItemId = item.Id
|
||||||
|
|
||||||
|
}).ToList(),
|
||||||
|
|
||||||
RunTimeTicks = item.RunTimeTicks
|
RunTimeTicks = item.RunTimeTicks
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -563,6 +563,7 @@
|
||||||
"LabelDefaultUser": "Default user:",
|
"LabelDefaultUser": "Default user:",
|
||||||
"LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.",
|
"LabelDefaultUserHelp": "Determines which user library should be displayed on connected devices. This can be overridden for each device using profiles.",
|
||||||
"TitleDlna": "DLNA",
|
"TitleDlna": "DLNA",
|
||||||
|
"TitleChannels": "Channels",
|
||||||
"HeaderServerSettings": "Server Settings",
|
"HeaderServerSettings": "Server Settings",
|
||||||
"LabelWeatherDisplayLocation": "Weather display location:",
|
"LabelWeatherDisplayLocation": "Weather display location:",
|
||||||
"LabelWeatherDisplayLocationHelp": "US zip code / City, State, Country / City, Country",
|
"LabelWeatherDisplayLocationHelp": "US zip code / City, State, Country / City, Country",
|
||||||
|
@ -796,5 +797,8 @@
|
||||||
"HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client",
|
"HeaderWelcomeToMediaBrowserWebClient": "Welcome to the Media Browser Web Client",
|
||||||
"ButtonDismiss": "Dismiss",
|
"ButtonDismiss": "Dismiss",
|
||||||
"MessageLearnHowToCustomize": "Learn how to customize this page to your own personal tastes. Click your user icon in the top right corner of the screen to view and update your preferences.",
|
"MessageLearnHowToCustomize": "Learn how to customize this page to your own personal tastes. Click your user icon in the top right corner of the screen to view and update your preferences.",
|
||||||
"ButtonEditOtherUserPreferences": "Edit this user's personal preferences."
|
"ButtonEditOtherUserPreferences": "Edit this user's personal preferences.",
|
||||||
|
"ChannelStreamOptionBestAvailable": "Best available",
|
||||||
|
"LabelChannelStreamOptionBestAvailable": "Preferred streaming quality:",
|
||||||
|
"LabelChannelStreamOptionBestAvailableHelp": "Determines the selected quality when channel content is available in multiple resolutions."
|
||||||
}
|
}
|
|
@ -539,6 +539,7 @@ namespace MediaBrowser.WebDashboard.Api
|
||||||
"autoorganizelog.js",
|
"autoorganizelog.js",
|
||||||
"channels.js",
|
"channels.js",
|
||||||
"channelitems.js",
|
"channelitems.js",
|
||||||
|
"channelsettings.js",
|
||||||
"dashboardgeneral.js",
|
"dashboardgeneral.js",
|
||||||
"dashboardinfo.js",
|
"dashboardinfo.js",
|
||||||
"dashboardpage.js",
|
"dashboardpage.js",
|
||||||
|
|
|
@ -103,6 +103,9 @@
|
||||||
<Content Include="dashboard-ui\channels.html">
|
<Content Include="dashboard-ui\channels.html">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="dashboard-ui\channelsettings.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="dashboard-ui\css\chromecast.css">
|
<Content Include="dashboard-ui\css\chromecast.css">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
@ -613,6 +616,9 @@
|
||||||
<Content Include="dashboard-ui\scripts\channels.js">
|
<Content Include="dashboard-ui\scripts\channels.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="dashboard-ui\scripts\channelsettings.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="dashboard-ui\scripts\chromecast.js">
|
<Content Include="dashboard-ui\scripts\chromecast.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common.Internal</id>
|
<id>MediaBrowser.Common.Internal</id>
|
||||||
<version>3.0.388</version>
|
<version>3.0.391</version>
|
||||||
<title>MediaBrowser.Common.Internal</title>
|
<title>MediaBrowser.Common.Internal</title>
|
||||||
<authors>Luke</authors>
|
<authors>Luke</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<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>
|
<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>
|
<copyright>Copyright © Media Browser 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.388" />
|
<dependency id="MediaBrowser.Common" version="3.0.391" />
|
||||||
<dependency id="NLog" version="2.1.0" />
|
<dependency id="NLog" version="2.1.0" />
|
||||||
<dependency id="SimpleInjector" version="2.5.0" />
|
<dependency id="SimpleInjector" version="2.5.0" />
|
||||||
<dependency id="sharpcompress" version="0.10.2" />
|
<dependency id="sharpcompress" version="0.10.2" />
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common</id>
|
<id>MediaBrowser.Common</id>
|
||||||
<version>3.0.388</version>
|
<version>3.0.391</version>
|
||||||
<title>MediaBrowser.Common</title>
|
<title>MediaBrowser.Common</title>
|
||||||
<authors>Media Browser Team</authors>
|
<authors>Media Browser Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Server.Core</id>
|
<id>MediaBrowser.Server.Core</id>
|
||||||
<version>3.0.388</version>
|
<version>3.0.391</version>
|
||||||
<title>Media Browser.Server.Core</title>
|
<title>Media Browser.Server.Core</title>
|
||||||
<authors>Media Browser Team</authors>
|
<authors>Media Browser Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains core components required to build plugins for Media Browser Server.</description>
|
<description>Contains core components required to build plugins for Media Browser Server.</description>
|
||||||
<copyright>Copyright © Media Browser 2013</copyright>
|
<copyright>Copyright © Media Browser 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.388" />
|
<dependency id="MediaBrowser.Common" version="3.0.391" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|
Loading…
Reference in a new issue