diff --git a/Emby.Dlna/Profiles/WdtvLiveProfile.cs b/Emby.Dlna/Profiles/WdtvLiveProfile.cs
index 756882592..01e77baa2 100644
--- a/Emby.Dlna/Profiles/WdtvLiveProfile.cs
+++ b/Emby.Dlna/Profiles/WdtvLiveProfile.cs
@@ -125,7 +125,7 @@ namespace Emby.Dlna.Profiles
new DirectPlayProfile
{
- Container = "flac,ac3",
+ Container = "flac",
Type = DlnaProfileType.Audio
},
diff --git a/Emby.Dlna/Profiles/Xml/WDTV Live.xml b/Emby.Dlna/Profiles/Xml/WDTV Live.xml
index 775d25302..605a17df4 100644
--- a/Emby.Dlna/Profiles/Xml/WDTV Live.xml
+++ b/Emby.Dlna/Profiles/Xml/WDTV Live.xml
@@ -45,7 +45,7 @@
-
+
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 1f72ebd54..e65ebeb04 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -3388,10 +3388,10 @@ namespace Emby.Server.Implementations.Data
var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
if (includeTypes.Length == 1)
{
- whereClauses.Add("type=@type" + paramSuffix);
+ whereClauses.Add("type=@type");
if (statement != null)
{
- statement.TryBind("@type" + paramSuffix, includeTypes[0]);
+ statement.TryBind("@type", includeTypes[0]);
}
}
else if (includeTypes.Length > 1)
@@ -4936,7 +4936,7 @@ namespace Emby.Server.Implementations.Data
ParentId = query.ParentId,
IsPlayed = query.IsPlayed
};
- var whereClauses = GetWhereClauses(typeSubQuery, null, "itemTypes");
+ var whereClauses = GetWhereClauses(typeSubQuery, null);
whereClauses.Add("guid in (select ItemId from ItemValues where ItemValues.CleanValue=A.CleanName AND " + typeClause + ")");
@@ -5072,7 +5072,7 @@ namespace Emby.Server.Implementations.Data
if (typeSubQuery != null)
{
- GetWhereClauses(typeSubQuery, null, "itemTypes");
+ GetWhereClauses(typeSubQuery, null);
}
BindSimilarParams(query, statement);
GetWhereClauses(innerQuery, statement);
@@ -5110,7 +5110,7 @@ namespace Emby.Server.Implementations.Data
if (typeSubQuery != null)
{
- GetWhereClauses(typeSubQuery, null, "itemTypes");
+ GetWhereClauses(typeSubQuery, null);
}
BindSimilarParams(query, statement);
GetWhereClauses(innerQuery, statement);
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 4ee3df7f5..8b6b388db 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -491,7 +491,7 @@ namespace Emby.Server.Implementations.Dto
}
}
- //if (!(item is LiveTvProgram))
+ if (!(item is LiveTvProgram))
{
dto.PlayAccess = item.GetPlayAccess(user);
}
diff --git a/Emby.Server.Implementations/Emby.Server.Implementations.csproj b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
index 13efb7bf9..50c01110f 100644
--- a/Emby.Server.Implementations/Emby.Server.Implementations.csproj
+++ b/Emby.Server.Implementations/Emby.Server.Implementations.csproj
@@ -104,7 +104,6 @@
-
@@ -238,7 +237,6 @@
-
@@ -257,7 +255,6 @@
-
diff --git a/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs b/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
deleted file mode 100644
index 4d19a0e9b..000000000
--- a/Emby.Server.Implementations/Intros/DefaultIntroProvider.cs
+++ /dev/null
@@ -1,394 +0,0 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Common.Security;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.Entities;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Model.IO;
-using MediaBrowser.Model.Extensions;
-using MediaBrowser.Model.Globalization;
-
-namespace Emby.Server.Implementations.Intros
-{
- public class DefaultIntroProvider : IIntroProvider
- {
- private readonly ISecurityManager _security;
- private readonly ILocalizationManager _localization;
- private readonly IConfigurationManager _serverConfig;
- private readonly ILibraryManager _libraryManager;
- private readonly IFileSystem _fileSystem;
- private readonly IMediaSourceManager _mediaSourceManager;
-
- public DefaultIntroProvider(ISecurityManager security, ILocalizationManager localization, IConfigurationManager serverConfig, ILibraryManager libraryManager, IFileSystem fileSystem, IMediaSourceManager mediaSourceManager)
- {
- _security = security;
- _localization = localization;
- _serverConfig = serverConfig;
- _libraryManager = libraryManager;
- _fileSystem = fileSystem;
- _mediaSourceManager = mediaSourceManager;
- }
-
- public async Task> GetIntros(BaseItem item, User user)
- {
- var config = GetOptions();
-
- if (item is Movie)
- {
- if (!config.EnableIntrosForMovies)
- {
- return new List();
- }
- }
- else if (item is Episode)
- {
- if (!config.EnableIntrosForEpisodes)
- {
- return new List();
- }
- }
- else
- {
- return new List();
- }
-
- var ratingLevel = string.IsNullOrWhiteSpace(item.OfficialRating)
- ? null
- : _localization.GetRatingLevel(item.OfficialRating);
-
- var candidates = new List();
-
- var trailerTypes = new List();
- var sourceTypes = new List();
-
- if (config.EnableIntrosFromMoviesInLibrary)
- {
- trailerTypes.Add(TrailerType.LocalTrailer);
- sourceTypes.Add(SourceType.Library);
- }
-
- if (IsSupporter)
- {
- if (config.EnableIntrosFromUpcomingTrailers)
- {
- trailerTypes.Add(TrailerType.ComingSoonToTheaters);
- sourceTypes.Clear();
- }
- if (config.EnableIntrosFromUpcomingDvdMovies)
- {
- trailerTypes.Add(TrailerType.ComingSoonToDvd);
- sourceTypes.Clear();
- }
- if (config.EnableIntrosFromUpcomingStreamingMovies)
- {
- trailerTypes.Add(TrailerType.ComingSoonToStreaming);
- sourceTypes.Clear();
- }
- if (config.EnableIntrosFromSimilarMovies)
- {
- trailerTypes.Add(TrailerType.Archive);
- sourceTypes.Clear();
- }
- }
-
- if (trailerTypes.Count > 0)
- {
- if (trailerTypes.Count >= 5)
- {
- trailerTypes.Clear();
- }
-
- // hack - can't filter by user library because local trailers get TopParentId =null in the db.
- // for now we have to use a post-query filter afterwards to solve that
- var trailerResult = _libraryManager.GetItemList(new InternalItemsQuery
- {
- IncludeItemTypes = new[] { typeof(Trailer).Name },
- TrailerTypes = trailerTypes.ToArray(),
- SimilarTo = item,
- //IsPlayed = config.EnableIntrosForWatchedContent ? (bool?)null : false,
- MaxParentalRating = config.EnableIntrosParentalControl ? ratingLevel : null,
- BlockUnratedItems = config.EnableIntrosParentalControl ? new[] { UnratedItem.Trailer } : new UnratedItem[] { },
-
- // Account for duplicates by imdb id, since the database doesn't support this yet
- Limit = config.TrailerLimit * 4,
- SourceTypes = sourceTypes.ToArray()
- })
- .Where(i => string.IsNullOrWhiteSpace(i.GetProviderId(MetadataProviders.Imdb)) || !string.Equals(i.GetProviderId(MetadataProviders.Imdb), item.GetProviderId(MetadataProviders.Imdb), StringComparison.OrdinalIgnoreCase))
- .Where(i => i.IsVisibleStandalone(user))
- .Where(i => config.EnableIntrosForWatchedContent || !i.IsPlayed(user))
- .Take(config.TrailerLimit);
-
- candidates.AddRange(trailerResult.Select(i => new ItemWithTrailer
- {
- Item = i,
- Type = i.SourceType == SourceType.Channel ? ItemWithTrailerType.ChannelTrailer : ItemWithTrailerType.ItemWithTrailer,
- LibraryManager = _libraryManager
- }));
- }
-
- return GetResult(item, candidates, config);
- }
-
- private IEnumerable GetResult(BaseItem item, IEnumerable candidates, CinemaModeConfiguration config)
- {
- var customIntros = !string.IsNullOrWhiteSpace(config.CustomIntroPath) ?
- GetCustomIntros(config) :
- new List();
-
- var mediaInfoIntros = !string.IsNullOrWhiteSpace(config.MediaInfoIntroPath) ?
- GetMediaInfoIntros(config, item) :
- new List();
-
- // Avoid implicitly captured closure
- return candidates.Select(i => i.IntroInfo)
- .Concat(customIntros.Take(1))
- .Concat(mediaInfoIntros);
- }
-
- private CinemaModeConfiguration GetOptions()
- {
- return _serverConfig.GetConfiguration("cinemamode");
- }
-
- private List GetCustomIntros(CinemaModeConfiguration options)
- {
- try
- {
- return GetCustomIntroFiles(options, true, false)
- .OrderBy(i => Guid.NewGuid())
- .Select(i => new IntroInfo
- {
- Path = i
-
- }).ToList();
- }
- catch (IOException)
- {
- return new List();
- }
- }
-
- private IEnumerable GetMediaInfoIntros(CinemaModeConfiguration options, BaseItem item)
- {
- try
- {
- var hasMediaSources = item as IHasMediaSources;
-
- if (hasMediaSources == null)
- {
- return new List();
- }
-
- var mediaSource = _mediaSourceManager.GetStaticMediaSources(hasMediaSources, false)
- .FirstOrDefault();
-
- if (mediaSource == null)
- {
- return new List();
- }
-
- var videoStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Video);
- var audioStream = mediaSource.MediaStreams.FirstOrDefault(i => i.Type == MediaStreamType.Audio);
-
- var allIntros = GetCustomIntroFiles(options, false, true)
- .OrderBy(i => Guid.NewGuid())
- .Select(i => new IntroInfo
- {
- Path = i
-
- }).ToList();
-
- var returnResult = new List();
-
- if (videoStream != null)
- {
- returnResult.AddRange(GetMediaInfoIntrosByVideoStream(allIntros, videoStream).Take(1));
- }
-
- if (audioStream != null)
- {
- returnResult.AddRange(GetMediaInfoIntrosByAudioStream(allIntros, audioStream).Take(1));
- }
-
- returnResult.AddRange(GetMediaInfoIntrosByTags(allIntros, item.Tags).Take(1));
-
- return returnResult.DistinctBy(i => i.Path, StringComparer.OrdinalIgnoreCase);
- }
- catch (IOException)
- {
- return new List();
- }
- }
-
- private IEnumerable GetMediaInfoIntrosByVideoStream(List allIntros, MediaStream stream)
- {
- var codec = stream.Codec;
-
- if (string.IsNullOrWhiteSpace(codec))
- {
- return new List();
- }
-
- return allIntros
- .Where(i => IsMatch(i.Path, codec))
- .OrderBy(i => Guid.NewGuid());
- }
-
- private IEnumerable GetMediaInfoIntrosByAudioStream(List allIntros, MediaStream stream)
- {
- var codec = stream.Codec;
-
- if (string.IsNullOrWhiteSpace(codec))
- {
- return new List();
- }
-
- return allIntros
- .Where(i => IsAudioMatch(i.Path, stream))
- .OrderBy(i => Guid.NewGuid());
- }
-
- private IEnumerable GetMediaInfoIntrosByTags(List allIntros, List tags)
- {
- return allIntros
- .Where(i => tags.Any(t => IsMatch(i.Path, t)))
- .OrderBy(i => Guid.NewGuid());
- }
-
- private bool IsMatch(string file, string attribute)
- {
- var filename = Path.GetFileNameWithoutExtension(file) ?? string.Empty;
- filename = Normalize(filename);
-
- if (string.IsNullOrWhiteSpace(filename))
- {
- return false;
- }
-
- attribute = Normalize(attribute);
- if (string.IsNullOrWhiteSpace(attribute))
- {
- return false;
- }
-
- return string.Equals(filename, attribute, StringComparison.OrdinalIgnoreCase);
- }
-
- private string Normalize(string value)
- {
- return value;
- }
-
- private bool IsAudioMatch(string path, MediaStream stream)
- {
- if (!string.IsNullOrWhiteSpace(stream.Codec))
- {
- if (IsMatch(path, stream.Codec))
- {
- return true;
- }
- }
- if (!string.IsNullOrWhiteSpace(stream.Profile))
- {
- if (IsMatch(path, stream.Profile))
- {
- return true;
- }
- }
-
- return false;
- }
-
- private IEnumerable GetCustomIntroFiles(CinemaModeConfiguration options, bool enableCustomIntros, bool enableMediaInfoIntros)
- {
- var list = new List();
-
- if (enableCustomIntros && !string.IsNullOrWhiteSpace(options.CustomIntroPath))
- {
- list.AddRange(_fileSystem.GetFilePaths(options.CustomIntroPath, true)
- .Where(_libraryManager.IsVideoFile));
- }
-
- if (enableMediaInfoIntros && !string.IsNullOrWhiteSpace(options.MediaInfoIntroPath))
- {
- list.AddRange(_fileSystem.GetFilePaths(options.MediaInfoIntroPath, true)
- .Where(_libraryManager.IsVideoFile));
- }
-
- return list.Distinct(StringComparer.OrdinalIgnoreCase);
- }
-
- public IEnumerable GetAllIntroFiles()
- {
- return GetCustomIntroFiles(GetOptions(), true, true);
- }
-
- private bool IsSupporter
- {
- get { return _security.IsMBSupporter; }
- }
-
- public string Name
- {
- get { return "Default"; }
- }
-
- internal class ItemWithTrailer
- {
- internal BaseItem Item;
- internal ItemWithTrailerType Type;
- internal ILibraryManager LibraryManager;
-
- public IntroInfo IntroInfo
- {
- get
- {
- var id = Item.Id;
-
- if (Type == ItemWithTrailerType.ItemWithTrailer)
- {
- var hasTrailers = Item as IHasTrailers;
-
- if (hasTrailers != null)
- {
- id = hasTrailers.LocalTrailerIds.FirstOrDefault();
- }
- }
- return new IntroInfo
- {
- ItemId = id
- };
- }
- }
- }
-
- internal enum ItemWithTrailerType
- {
- ChannelTrailer,
- ItemWithTrailer
- }
- }
-
- public class CinemaModeConfigurationFactory : IConfigurationFactory
- {
- public IEnumerable GetConfigurations()
- {
- return new[]
- {
- new ConfigurationStore
- {
- ConfigurationType = typeof(CinemaModeConfiguration),
- Key = "cinemamode"
- }
- };
- }
- }
-
-}
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
index 8366c2d57..a939cec7b 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/M3UTunerHost.cs
@@ -162,7 +162,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
Id = channel.Path.GetMD5().ToString("N"),
IsInfiniteStream = true,
- SupportsDirectStream = false,
IsRemote = true
};
diff --git a/Emby.Server.Implementations/Sorting/BudgetComparer.cs b/Emby.Server.Implementations/Sorting/BudgetComparer.cs
deleted file mode 100644
index f3aef69f1..000000000
--- a/Emby.Server.Implementations/Sorting/BudgetComparer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Sorting;
-using MediaBrowser.Model.Querying;
-
-namespace Emby.Server.Implementations.Sorting
-{
- public class BudgetComparer : IBaseItemComparer
- {
- ///
- /// Compares the specified x.
- ///
- /// The x.
- /// The y.
- /// System.Int32.
- public int Compare(BaseItem x, BaseItem y)
- {
- return GetValue(x).CompareTo(GetValue(y));
- }
-
- private double GetValue(BaseItem x)
- {
- var hasBudget = x as IHasBudget;
- if (hasBudget != null)
- {
- return hasBudget.Budget ?? 0;
- }
- return 0;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get { return ItemSortBy.Budget; }
- }
- }
-}
diff --git a/Emby.Server.Implementations/Sorting/RevenueComparer.cs b/Emby.Server.Implementations/Sorting/RevenueComparer.cs
deleted file mode 100644
index 62e43eac1..000000000
--- a/Emby.Server.Implementations/Sorting/RevenueComparer.cs
+++ /dev/null
@@ -1,39 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Sorting;
-using MediaBrowser.Model.Querying;
-
-namespace Emby.Server.Implementations.Sorting
-{
- public class RevenueComparer : IBaseItemComparer
- {
- ///
- /// Compares the specified x.
- ///
- /// The x.
- /// The y.
- /// System.Int32.
- public int Compare(BaseItem x, BaseItem y)
- {
- return GetValue(x).CompareTo(GetValue(y));
- }
-
- private double GetValue(BaseItem x)
- {
- var hasBudget = x as IHasBudget;
- if (hasBudget != null)
- {
- return hasBudget.Revenue ?? 0;
- }
- return 0;
- }
-
- ///
- /// Gets the name.
- ///
- /// The name.
- public string Name
- {
- get { return ItemSortBy.Revenue; }
- }
- }
-}
diff --git a/Emby.Server.Implementations/Updates/InstallationManager.cs b/Emby.Server.Implementations/Updates/InstallationManager.cs
index 0420900c5..a13dd0569 100644
--- a/Emby.Server.Implementations/Updates/InstallationManager.cs
+++ b/Emby.Server.Implementations/Updates/InstallationManager.cs
@@ -162,15 +162,15 @@ namespace Emby.Server.Implementations.Updates
string packageType = null,
Version applicationVersion = null)
{
- var data = new Dictionary
- {
- { "key", _securityManager.SupporterKey },
- { "mac", _applicationHost.SystemId },
- { "systemid", _applicationHost.SystemId }
- };
-
if (withRegistration)
{
+ var data = new Dictionary
+ {
+ { "key", _securityManager.SupporterKey },
+ { "mac", _applicationHost.SystemId },
+ { "systemid", _applicationHost.SystemId }
+ };
+
using (var json = await _httpClient.Post("https://www.mb3admin.com/admin/service/package/retrieveall", data, cancellationToken).ConfigureAwait(false))
{
cancellationToken.ThrowIfCancellationRequested();
@@ -353,7 +353,7 @@ namespace Emby.Server.Implementations.Updates
/// Task{PackageVersionInfo}.
public async Task GetPackage(string name, string guid, PackageVersionClass classification, Version version)
{
- var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false);
+ var packages = await GetAvailablePackages(CancellationToken.None, false).ConfigureAwait(false);
var package = packages.FirstOrDefault(p => string.Equals(p.guid, guid ?? "none", StringComparison.OrdinalIgnoreCase))
?? packages.FirstOrDefault(p => p.name.Equals(name, StringComparison.OrdinalIgnoreCase));
@@ -376,7 +376,7 @@ namespace Emby.Server.Implementations.Updates
/// Task{PackageVersionInfo}.
public async Task GetLatestCompatibleVersion(string name, string guid, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release)
{
- var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false);
+ var packages = await GetAvailablePackages(CancellationToken.None, false).ConfigureAwait(false);
return GetLatestCompatibleVersion(packages, name, guid, currentServerVersion, classification);
}
diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index 55ef65311..c2c8d1102 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -134,10 +134,6 @@
-
-
-
-
diff --git a/MediaBrowser.Api/Playback/Progressive/AudioService.cs b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
index 04825c7a5..56d48baea 100644
--- a/MediaBrowser.Api/Playback/Progressive/AudioService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/AudioService.cs
@@ -31,6 +31,7 @@ namespace MediaBrowser.Api.Playback.Progressive
///
/// Class AudioService
///
+ [Authenticated]
public class AudioService : BaseProgressiveStreamingService
{
///
diff --git a/MediaBrowser.Api/Sync/SyncHelper.cs b/MediaBrowser.Api/Sync/SyncHelper.cs
deleted file mode 100644
index 116cd8060..000000000
--- a/MediaBrowser.Api/Sync/SyncHelper.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Sync;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Api.Sync
-{
- public static class SyncHelper
- {
- public static List GetSyncOptions(List items)
- {
- List options = new List();
-
- foreach (BaseItemDto item in items)
- {
- if (item.SupportsSync ?? false)
- {
- if (item.IsVideo)
- {
- options.Add(SyncJobOption.Quality);
- options.Add(SyncJobOption.Profile);
- if (items.Count > 1)
- {
- options.Add(SyncJobOption.UnwatchedOnly);
- }
- break;
- }
- if (item.IsAudio)
- {
- options.Add(SyncJobOption.Quality);
- options.Add(SyncJobOption.Profile);
- break;
- }
- if (item.IsMusicGenre || item.IsArtist|| item.IsType("musicalbum"))
- {
- options.Add(SyncJobOption.Quality);
- options.Add(SyncJobOption.Profile);
- options.Add(SyncJobOption.ItemLimit);
- break;
- }
- if ((item.IsFolder ?? false) && !item.IsMusicGenre && !item.IsArtist && !item.IsType("musicalbum") && !item.IsGameGenre)
- {
- options.Add(SyncJobOption.Quality);
- options.Add(SyncJobOption.Profile);
- options.Add(SyncJobOption.UnwatchedOnly);
- break;
- }
- if (item.IsGenre)
- {
- options.Add(SyncJobOption.SyncNewContent);
- options.Add(SyncJobOption.ItemLimit);
- break;
- }
- }
- }
-
- foreach (BaseItemDto item in items)
- {
- if (item.SupportsSync ?? false)
- {
- if ((item.IsFolder ?? false) || item.IsGameGenre || item.IsMusicGenre || item.IsGenre || item.IsArtist || item.IsStudio || item.IsPerson)
- {
- options.Add(SyncJobOption.SyncNewContent);
- options.Add(SyncJobOption.ItemLimit);
- break;
- }
- }
- }
-
- return options;
- }
-
- public static List GetSyncOptions(SyncCategory category)
- {
- List options = new List();
-
- options.Add(SyncJobOption.Quality);
- options.Add(SyncJobOption.Profile);
- options.Add(SyncJobOption.UnwatchedOnly);
- options.Add(SyncJobOption.SyncNewContent);
- options.Add(SyncJobOption.ItemLimit);
-
- return options;
- }
- }
-}
diff --git a/MediaBrowser.Api/Sync/SyncJobWebSocketListener.cs b/MediaBrowser.Api/Sync/SyncJobWebSocketListener.cs
deleted file mode 100644
index ac9749a6d..000000000
--- a/MediaBrowser.Api/Sync/SyncJobWebSocketListener.cs
+++ /dev/null
@@ -1,120 +0,0 @@
-using MediaBrowser.Controller.Sync;
-using MediaBrowser.Model.Events;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Sync;
-using System;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Threading;
-
-namespace MediaBrowser.Api.Sync
-{
- ///
- /// Class SessionInfoWebSocketListener
- ///
- class SyncJobWebSocketListener : BasePeriodicWebSocketListener
- {
- ///
- /// Gets the name.
- ///
- /// The name.
- protected override string Name
- {
- get { return "SyncJob"; }
- }
-
- private readonly ISyncManager _syncManager;
- private string _jobId;
-
- public SyncJobWebSocketListener(ILogger logger, ISyncManager syncManager, ITimerFactory timerFactory)
- : base(logger, timerFactory)
- {
- _syncManager = syncManager;
- _syncManager.SyncJobCancelled += _syncManager_SyncJobCancelled;
- _syncManager.SyncJobUpdated += _syncManager_SyncJobUpdated;
- _syncManager.SyncJobItemCreated += _syncManager_SyncJobItemCreated;
- _syncManager.SyncJobItemUpdated += _syncManager_SyncJobItemUpdated;
- }
-
- void _syncManager_SyncJobItemUpdated(object sender, GenericEventArgs e)
- {
- if (string.Equals(e.Argument.Id, _jobId, StringComparison.Ordinal))
- {
- SendData(false);
- }
- }
-
- void _syncManager_SyncJobItemCreated(object sender, GenericEventArgs e)
- {
- if (string.Equals(e.Argument.Id, _jobId, StringComparison.Ordinal))
- {
- SendData(true);
- }
- }
-
- protected override void ParseMessageParams(string[] values)
- {
- base.ParseMessageParams(values);
-
- if (values.Length > 0)
- {
- _jobId = values[0];
- }
- }
-
- void _syncManager_SyncJobUpdated(object sender, GenericEventArgs e)
- {
- if (string.Equals(e.Argument.Id, _jobId, StringComparison.Ordinal))
- {
- SendData(false);
- }
- }
-
- void _syncManager_SyncJobCancelled(object sender, GenericEventArgs e)
- {
- if (string.Equals(e.Argument.Id, _jobId, StringComparison.Ordinal))
- {
- SendData(true);
- }
- }
-
- ///
- /// Gets the data to send.
- ///
- /// The state.
- /// Task{SystemInfo}.
- protected override Task GetDataToSend(WebSocketListenerState state)
- {
- var job = _syncManager.GetJob(_jobId);
- var items = _syncManager.GetJobItems(new SyncJobItemQuery
- {
- AddMetadata = true,
- JobId = _jobId
- });
-
- var info = new CompleteSyncJobInfo
- {
- Job = job,
- JobItems = items.Items.ToList()
- };
-
- return Task.FromResult(info);
- }
-
- protected override bool SendOnTimer
- {
- get
- {
- return false;
- }
- }
-
- protected override void Dispose(bool dispose)
- {
- _syncManager.SyncJobCancelled -= _syncManager_SyncJobCancelled;
- _syncManager.SyncJobUpdated -= _syncManager_SyncJobUpdated;
-
- base.Dispose(dispose);
- }
- }
-}
diff --git a/MediaBrowser.Api/Sync/SyncJobsWebSocketListener.cs b/MediaBrowser.Api/Sync/SyncJobsWebSocketListener.cs
deleted file mode 100644
index 5f9d1ff0e..000000000
--- a/MediaBrowser.Api/Sync/SyncJobsWebSocketListener.cs
+++ /dev/null
@@ -1,101 +0,0 @@
-using MediaBrowser.Controller.Sync;
-using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.Sync;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Threading;
-
-namespace MediaBrowser.Api.Sync
-{
- ///
- /// Class SessionInfoWebSocketListener
- ///
- class SyncJobsWebSocketListener : BasePeriodicWebSocketListener, WebSocketListenerState>
- {
- ///
- /// Gets the name.
- ///
- /// The name.
- protected override string Name
- {
- get { return "SyncJobs"; }
- }
-
- private readonly ISyncManager _syncManager;
- private string _userId;
- private string _targetId;
-
- public SyncJobsWebSocketListener(ILogger logger, ISyncManager syncManager, ITimerFactory timerFactory)
- : base(logger, timerFactory)
- {
- _syncManager = syncManager;
- _syncManager.SyncJobCancelled += _syncManager_SyncJobCancelled;
- _syncManager.SyncJobCreated += _syncManager_SyncJobCreated;
- _syncManager.SyncJobUpdated += _syncManager_SyncJobUpdated;
- }
-
- protected override void ParseMessageParams(string[] values)
- {
- base.ParseMessageParams(values);
-
- if (values.Length > 0)
- {
- _userId = values[0];
- }
-
- if (values.Length > 1)
- {
- _targetId = values[1];
- }
- }
-
- void _syncManager_SyncJobUpdated(object sender, Model.Events.GenericEventArgs e)
- {
- SendData(false);
- }
-
- void _syncManager_SyncJobCreated(object sender, Model.Events.GenericEventArgs e)
- {
- SendData(true);
- }
-
- void _syncManager_SyncJobCancelled(object sender, Model.Events.GenericEventArgs e)
- {
- SendData(true);
- }
-
- ///
- /// Gets the data to send.
- ///
- /// The state.
- /// Task{SystemInfo}.
- protected override async Task> GetDataToSend(WebSocketListenerState state)
- {
- var jobs = await _syncManager.GetJobs(new SyncJobQuery
- {
- UserId = _userId,
- TargetId = _targetId
-
- }).ConfigureAwait(false);
-
- return jobs.Items;
- }
-
- protected override bool SendOnTimer
- {
- get
- {
- return false;
- }
- }
-
- protected override void Dispose(bool dispose)
- {
- _syncManager.SyncJobCancelled -= _syncManager_SyncJobCancelled;
- _syncManager.SyncJobCreated -= _syncManager_SyncJobCreated;
- _syncManager.SyncJobUpdated -= _syncManager_SyncJobUpdated;
-
- base.Dispose(dispose);
- }
- }
-}
diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs
deleted file mode 100644
index e50d2b77f..000000000
--- a/MediaBrowser.Api/Sync/SyncService.cs
+++ /dev/null
@@ -1,396 +0,0 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Controller.Dto;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Net;
-using MediaBrowser.Controller.Sync;
-using MediaBrowser.Model.Querying;
-using MediaBrowser.Model.Sync;
-using MediaBrowser.Model.Users;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
-using MediaBrowser.Model.Services;
-
-namespace MediaBrowser.Api.Sync
-{
- [Route("/Sync/Jobs/{Id}", "DELETE", Summary = "Cancels a sync job.")]
- public class CancelSyncJob : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/Jobs/{Id}", "GET", Summary = "Gets a sync job.")]
- public class GetSyncJob : IReturn
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/Jobs/{Id}", "POST", Summary = "Updates a sync job.")]
- public class UpdateSyncJob : SyncJob, IReturnVoid
- {
- }
-
- [Route("/Sync/JobItems", "GET", Summary = "Gets sync job items.")]
- public class GetSyncJobItems : SyncJobItemQuery, IReturn>
- {
- }
-
- [Route("/Sync/JobItems/{Id}/Enable", "POST", Summary = "Enables a cancelled or queued sync job item")]
- public class EnableSyncJobItem : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}/MarkForRemoval", "POST", Summary = "Marks a job item for removal")]
- public class MarkJobItemForRemoval : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}/UnmarkForRemoval", "POST", Summary = "Unmarks a job item for removal")]
- public class UnmarkJobItemForRemoval : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}", "DELETE", Summary = "Cancels a sync job item")]
- public class CancelSyncJobItem : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/Items/Cancel", "POST", Summary = "Cancels items from a sync target")]
- [Route("/Sync/{TargetId}/Items", "DELETE", Summary = "Cancels items from a sync target")]
- public class CancelItems : IReturnVoid
- {
- [ApiMember(Name = "TargetId", Description = "TargetId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "Items")]
- public string TargetId { get; set; }
-
- [ApiMember(Name = "ItemIds", Description = "ItemIds", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "Items")]
- public string ItemIds { get; set; }
- }
-
- [Route("/Sync/Jobs", "GET", Summary = "Gets sync jobs.")]
- public class GetSyncJobs : SyncJobQuery, IReturn>
- {
- }
-
- [Route("/Sync/Jobs", "POST", Summary = "Gets sync jobs.")]
- public class CreateSyncJob : SyncJobRequest, IReturn
- {
- }
-
- [Route("/Sync/Targets", "GET", Summary = "Gets a list of available sync targets.")]
- public class GetSyncTargets : IReturn>
- {
- [ApiMember(Name = "UserId", Description = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string UserId { get; set; }
- }
-
- [Route("/Sync/Options", "GET", Summary = "Gets a list of available sync targets.")]
- public class GetSyncDialogOptions : IReturn
- {
- [ApiMember(Name = "UserId", Description = "UserId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string UserId { get; set; }
-
- [ApiMember(Name = "ItemIds", Description = "ItemIds", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string ItemIds { get; set; }
-
- [ApiMember(Name = "ParentId", Description = "ParentId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string ParentId { get; set; }
-
- [ApiMember(Name = "TargetId", Description = "TargetId", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string TargetId { get; set; }
-
- [ApiMember(Name = "Category", Description = "Category", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public SyncCategory? Category { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}/Transferred", "POST", Summary = "Reports that a sync job item has successfully been transferred.")]
- public class ReportSyncJobItemTransferred : IReturnVoid
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}/File", "GET", Summary = "Gets a sync job item file")]
- public class GetSyncJobItemFile
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Id { get; set; }
- }
-
- [Route("/Sync/JobItems/{Id}/AdditionalFiles", "GET", Summary = "Gets a sync job item file")]
- public class GetSyncJobItemAdditionalFile
- {
- [ApiMember(Name = "Id", Description = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public string Id { get; set; }
-
- [ApiMember(Name = "Name", Description = "Name", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string Name { get; set; }
- }
-
- [Route("/Sync/OfflineActions", "POST", Summary = "Reports an action that occurred while offline.")]
- public class ReportOfflineActions : List, IReturnVoid
- {
- }
-
- [Route("/Sync/Items/Ready", "GET", Summary = "Gets ready to download sync items.")]
- public class GetReadySyncItems : IReturn>
- {
- [ApiMember(Name = "TargetId", Description = "TargetId", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string TargetId { get; set; }
- }
-
- [Route("/Sync/Data", "POST", Summary = "Syncs data between device and server")]
- public class SyncData : SyncDataRequest, IReturn
- {
- }
-
- [Authenticated]
- public class SyncService : BaseApiService
- {
- private readonly ISyncManager _syncManager;
- private readonly IDtoService _dtoService;
- private readonly ILibraryManager _libraryManager;
- private readonly IUserManager _userManager;
- private readonly IAuthorizationContext _authContext;
-
- public SyncService(ISyncManager syncManager, IDtoService dtoService, ILibraryManager libraryManager, IUserManager userManager, IAuthorizationContext authContext)
- {
- _syncManager = syncManager;
- _dtoService = dtoService;
- _libraryManager = libraryManager;
- _userManager = userManager;
- _authContext = authContext;
- }
-
- public object Get(GetSyncTargets request)
- {
- var result = _syncManager.GetSyncTargets(request.UserId);
-
- return ToOptimizedResult(result);
- }
-
- public async Task
AwardSummary,
- ///
- /// The budget
- ///
- Budget,
-
///
/// The can delete
///
@@ -173,11 +168,6 @@
RecursiveItemCount,
- ///
- /// The revenue
- ///
- Revenue,
-
///
/// The season name
///
diff --git a/MediaBrowser.Model/Querying/ItemSortBy.cs b/MediaBrowser.Model/Querying/ItemSortBy.cs
index 6f4ebd0c5..b379298a5 100644
--- a/MediaBrowser.Model/Querying/ItemSortBy.cs
+++ b/MediaBrowser.Model/Querying/ItemSortBy.cs
@@ -20,14 +20,6 @@ namespace MediaBrowser.Model.Querying
///
public const string Artist = "Artist";
///
- /// The budget
- ///
- public const string Budget = "Budget";
- ///
- /// The revenue
- ///
- public const string Revenue = "Revenue";
- ///
/// The date created
///
public const string DateCreated = "DateCreated";
diff --git a/MediaBrowser.Providers/Manager/ProviderUtils.cs b/MediaBrowser.Providers/Manager/ProviderUtils.cs
index 5b53cd257..5281b8788 100644
--- a/MediaBrowser.Providers/Manager/ProviderUtils.cs
+++ b/MediaBrowser.Providers/Manager/ProviderUtils.cs
@@ -195,7 +195,6 @@ namespace MediaBrowser.Providers.Manager
}
MergeAlbumArtist(source, target, lockedFields, replaceData);
- MergeBudget(source, target, lockedFields, replaceData);
MergeMetascore(source, target, lockedFields, replaceData);
MergeCriticRating(source, target, lockedFields, replaceData);
MergeAwards(source, target, lockedFields, replaceData);
@@ -247,25 +246,6 @@ namespace MediaBrowser.Providers.Manager
}
}
- private static void MergeBudget(BaseItem source, BaseItem target, List lockedFields, bool replaceData)
- {
- var sourceHasBudget = source as IHasBudget;
- var targetHasBudget = target as IHasBudget;
-
- if (sourceHasBudget != null && targetHasBudget != null)
- {
- if (replaceData || !targetHasBudget.Budget.HasValue)
- {
- targetHasBudget.Budget = sourceHasBudget.Budget;
- }
-
- if (replaceData || !targetHasBudget.Revenue.HasValue)
- {
- targetHasBudget.Revenue = sourceHasBudget.Revenue;
- }
- }
- }
-
private static void MergeMetascore(BaseItem source, BaseItem target, List lockedFields, bool replaceData)
{
var sourceCast = source as IHasMetascore;
diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
index ee634f157..0101478b8 100644
--- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
+++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs
@@ -136,13 +136,6 @@ namespace MediaBrowser.Providers.Movies
movie.HomePageUrl = movieData.homepage;
- var hasBudget = movie as IHasBudget;
- if (hasBudget != null)
- {
- hasBudget.Budget = movieData.budget;
- hasBudget.Revenue = movieData.revenue;
- }
-
if (!string.IsNullOrEmpty(movieData.tagline))
{
movie.Tagline = movieData.tagline;
diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
index 62c3e00a8..17d9767f6 100644
--- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
+++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj
@@ -61,6 +61,9 @@
..\ThirdParty\emby\Emby.Common.Implementations.dll
+
+ ..\ThirdParty\emby\Emby.Server.CinemaMode.dll
+
..\ThirdParty\emby\Emby.Server.Connect.dll
diff --git a/MediaBrowser.Server.Mono/MonoAppHost.cs b/MediaBrowser.Server.Mono/MonoAppHost.cs
index e9ded5cd5..811e0f444 100644
--- a/MediaBrowser.Server.Mono/MonoAppHost.cs
+++ b/MediaBrowser.Server.Mono/MonoAppHost.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Reflection;
+using Emby.Server.CinemaMode;
using Emby.Server.Connect;
using Emby.Server.Core;
using Emby.Server.Implementations;
@@ -58,6 +59,7 @@ namespace MediaBrowser.Server.Mono
{
var list = new List();
+ list.Add(typeof(DefaultIntroProvider).Assembly);
list.Add(typeof(LinuxIsoManager).Assembly);
list.Add(typeof(ConnectManager).Assembly);
list.Add(typeof(SyncManager).Assembly);
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index 50b0aa21f..7ebbc3809 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -67,6 +67,9 @@
..\ThirdParty\emby\Emby.Common.Implementations.dll
+
+ ..\ThirdParty\emby\Emby.Server.CinemaMode.dll
+
..\ThirdParty\emby\Emby.Server.Connect.dll
diff --git a/MediaBrowser.ServerApplication/WindowsAppHost.cs b/MediaBrowser.ServerApplication/WindowsAppHost.cs
index 9f11dc322..cc899462a 100644
--- a/MediaBrowser.ServerApplication/WindowsAppHost.cs
+++ b/MediaBrowser.ServerApplication/WindowsAppHost.cs
@@ -4,6 +4,7 @@ using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices.ComTypes;
+using Emby.Server.CinemaMode;
using Emby.Server.Connect;
using Emby.Server.Core;
using Emby.Server.Implementations;
@@ -55,6 +56,7 @@ namespace MediaBrowser.ServerApplication
//list.Add(typeof(PismoIsoManager).Assembly);
}
+ list.Add(typeof(DefaultIntroProvider).Assembly);
list.Add(typeof(ConnectManager).Assembly);
list.Add(typeof(SyncManager).Assembly);
list.Add(GetType().Assembly);
diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
index 8a8560711..8a150e0c1 100644
--- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
+++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs
@@ -320,38 +320,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
break;
}
- case "budget":
- {
- var text = reader.ReadElementContentAsString();
- var hasBudget = item as IHasBudget;
- if (hasBudget != null)
- {
- double value;
- if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
- {
- hasBudget.Budget = value;
- }
- }
-
- break;
- }
-
- case "revenue":
- {
- var text = reader.ReadElementContentAsString();
- var hasBudget = item as IHasBudget;
- if (hasBudget != null)
- {
- double value;
- if (double.TryParse(text, NumberStyles.Any, _usCulture, out value))
- {
- hasBudget.Revenue = value;
- }
- }
-
- break;
- }
-
case "metascore":
{
var text = reader.ReadElementContentAsString();
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 5a1c7bf13..100b9c36c 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -50,8 +50,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
"rottentomatoesid",
"language",
"tvcomid",
- "budget",
- "revenue",
"tagline",
"studio",
"genre",
@@ -685,20 +683,6 @@ namespace MediaBrowser.XbmcMetadata.Savers
writer.WriteElementString("votes", item.VoteCount.Value.ToString(UsCulture));
}
- var hasBudget = item as IHasBudget;
- if (hasBudget != null)
- {
- if (hasBudget.Budget.HasValue)
- {
- writer.WriteElementString("budget", hasBudget.Budget.Value.ToString(UsCulture));
- }
-
- if (hasBudget.Revenue.HasValue)
- {
- writer.WriteElementString("revenue", hasBudget.Revenue.Value.ToString(UsCulture));
- }
- }
-
var hasMetascore = item as IHasMetascore;
if (hasMetascore != null && hasMetascore.Metascore.HasValue)
{
diff --git a/README.md b/README.md
index ead2a2da3..7872cc3ed 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
Emby Server
============
-Emby Server is a home media server built on top of other popular open source technologies such as **Service Stack**, **jQuery**, **jQuery mobile**, and **Mono**.
+Emby Server is a personal media server with apps on just about every device.
It features a REST-based API with built-in documention to facilitate client development. We also have client libraries for our API to enable rapid development.
diff --git a/SharedVersion.cs b/SharedVersion.cs
index ba0b105ba..4e9e9b6ea 100644
--- a/SharedVersion.cs
+++ b/SharedVersion.cs
@@ -1,3 +1,3 @@
using System.Reflection;
-[assembly: AssemblyVersion("3.2.4.1")]
+[assembly: AssemblyVersion("3.2.5.1")]