diff --git a/MediaBrowser.Controller/Library/ItemResolveArgs.cs b/MediaBrowser.Controller/Library/ItemResolveArgs.cs index d1692aabf..4fa07421c 100644 --- a/MediaBrowser.Controller/Library/ItemResolveArgs.cs +++ b/MediaBrowser.Controller/Library/ItemResolveArgs.cs @@ -154,6 +154,28 @@ namespace MediaBrowser.Controller.Library /// The additional locations. private List AdditionalLocations { get; set; } + public bool HasParent() + where T : Folder + { + var parent = Parent; + + if (parent != null) + { + var item = parent as T; + + // Just in case the user decided to nest episodes. + // Not officially supported but in some cases we can handle it. + if (item == null) + { + item = parent.Parents.OfType().FirstOrDefault(); + } + + return item != null; + + } + return false; + } + /// /// Adds the additional location. /// @@ -165,7 +187,7 @@ namespace MediaBrowser.Controller.Library { throw new ArgumentNullException(); } - + if (AdditionalLocations == null) { AdditionalLocations = new List(); @@ -182,7 +204,7 @@ namespace MediaBrowser.Controller.Library { get { - var paths = string.IsNullOrWhiteSpace(Path) ? new string[] {} : new[] {Path}; + var paths = string.IsNullOrWhiteSpace(Path) ? new string[] { } : new[] { Path }; return AdditionalLocations == null ? paths : paths.Concat(AdditionalLocations); } } @@ -199,7 +221,7 @@ namespace MediaBrowser.Controller.Library { throw new ArgumentNullException(); } - + return GetFileSystemEntryByPath(System.IO.Path.Combine(Path, name)); } @@ -215,7 +237,7 @@ namespace MediaBrowser.Controller.Library { throw new ArgumentNullException(); } - + if (FileSystemDictionary != null) { FileSystemInfo entry; diff --git a/MediaBrowser.Model/ApiClient/IApiClient.cs b/MediaBrowser.Model/ApiClient/IApiClient.cs index 13907e5c6..0fb92d3ae 100644 --- a/MediaBrowser.Model/ApiClient/IApiClient.cs +++ b/MediaBrowser.Model/ApiClient/IApiClient.cs @@ -1380,11 +1380,11 @@ namespace MediaBrowser.Model.ApiClient Task UpdateItem(BaseItemDto item); /// - /// Requests the synchronize. + /// Creates the synchronize job. /// /// The request. /// Task<SyncJob>. - Task RequestSync(SyncJobRequest request); + Task CreateSyncJob(SyncJobRequest request); /// /// Opens the web socket. diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index 45f681066..71cefa076 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -887,7 +887,7 @@ namespace MediaBrowser.Model.Dto [IgnoreDataMember] public bool IsVideo { - get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Video); } + get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Video); } } /// @@ -897,7 +897,7 @@ namespace MediaBrowser.Model.Dto [IgnoreDataMember] public bool IsAudio { - get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Audio); } + get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Audio); } } /// @@ -907,7 +907,7 @@ namespace MediaBrowser.Model.Dto [IgnoreDataMember] public bool IsGame { - get { return StringHelper.EqualsIgnoreCase(MediaType, MediaBrowser.Model.Entities.MediaType.Game); } + get { return StringHelper.EqualsIgnoreCase(MediaType, Entities.MediaType.Game); } } /// @@ -951,7 +951,13 @@ namespace MediaBrowser.Model.Dto [IgnoreDataMember] public bool IsArtist { - get { return StringHelper.EqualsIgnoreCase(Type, "Artist"); } + get { return StringHelper.EqualsIgnoreCase(Type, "MusicArtist"); } + } + + [IgnoreDataMember] + public bool IsAlbum + { + get { return StringHelper.EqualsIgnoreCase(Type, "MusicAlbum"); } } [IgnoreDataMember] diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index e370ad8e0..f53750897 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -362,6 +362,7 @@ + @@ -370,6 +371,7 @@ + diff --git a/MediaBrowser.Model/Sync/SyncHelper.cs b/MediaBrowser.Model/Sync/SyncHelper.cs new file mode 100644 index 000000000..ac595b5ef --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncHelper.cs @@ -0,0 +1,51 @@ +using MediaBrowser.Model.Dto; +using System.Collections.Generic; + +namespace MediaBrowser.Model.Sync +{ + public static class SyncHelper + { + public static List GetSyncOptions(List items) + { + List options = new List(); + + if (items.Count > 1) + { + options.Add(SyncOptions.Name); + } + + foreach (BaseItemDto item in items) + { + if (item.SupportsSync ?? false) + { + if (item.IsVideo) + { + options.Add(SyncOptions.Quality); + options.Add(SyncOptions.UnwatchedOnly); + break; + } + if (item.IsFolder && !item.IsMusicGenre && !item.IsArtist && !item.IsType("musicalbum") && !item.IsGameGenre) + { + options.Add(SyncOptions.Quality); + options.Add(SyncOptions.UnwatchedOnly); + break; + } + } + } + + foreach (BaseItemDto item in items) + { + if (item.SupportsSync ?? false) + { + if (item.IsFolder || item.IsGameGenre || item.IsMusicGenre || item.IsGenre || item.IsArtist || item.IsStudio || item.IsPerson) + { + options.Add(SyncOptions.SyncNewContent); + break; + } + } + } + + return options; + } + } +} diff --git a/MediaBrowser.Model/Sync/SyncJob.cs b/MediaBrowser.Model/Sync/SyncJob.cs index db67f3cbb..491223db5 100644 --- a/MediaBrowser.Model/Sync/SyncJob.cs +++ b/MediaBrowser.Model/Sync/SyncJob.cs @@ -46,11 +46,6 @@ namespace MediaBrowser.Model.Sync /// true if [unwatched only]; otherwise, false. public bool UnwatchedOnly { get; set; } /// - /// Gets or sets a value indicating whether [remove when watched]. - /// - /// true if [remove when watched]; otherwise, false. - public bool RemoveWhenWatched { get; set; } - /// /// Gets or sets a value indicating whether [synchronize new content]. /// /// true if [synchronize new content]; otherwise, false. diff --git a/MediaBrowser.Model/Sync/SyncJobRequest.cs b/MediaBrowser.Model/Sync/SyncJobRequest.cs index 4e044d62a..42a40acc7 100644 --- a/MediaBrowser.Model/Sync/SyncJobRequest.cs +++ b/MediaBrowser.Model/Sync/SyncJobRequest.cs @@ -35,11 +35,6 @@ namespace MediaBrowser.Model.Sync /// true if [unwatched only]; otherwise, false. public bool UnwatchedOnly { get; set; } /// - /// Gets or sets a value indicating whether [remove when watched]. - /// - /// true if [remove when watched]; otherwise, false. - public bool RemoveWhenWatched { get; set; } - /// /// Gets or sets a value indicating whether [synchronize new content]. /// /// true if [synchronize new content]; otherwise, false. diff --git a/MediaBrowser.Model/Sync/SyncOptions.cs b/MediaBrowser.Model/Sync/SyncOptions.cs new file mode 100644 index 000000000..edf22f799 --- /dev/null +++ b/MediaBrowser.Model/Sync/SyncOptions.cs @@ -0,0 +1,11 @@ + +namespace MediaBrowser.Model.Sync +{ + public enum SyncOptions + { + Name = 0, + Quality = 1, + UnwatchedOnly = 2, + SyncNewContent + } +} diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index bfdfc03ba..4cb39778c 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1708,7 +1708,7 @@ namespace MediaBrowser.Server.Implementations.Library public int? GetSeasonNumberFromPath(string path) { - return SeriesResolver.GetSeasonNumberFromPath(path); + return SeriesResolver.GetSeasonNumberFromPath(path, CollectionType.TvShows); } public int? GetSeasonNumberFromEpisodeFile(string path) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs index 7f844ca0e..f32ed2b20 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.IO; -using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; @@ -9,10 +8,10 @@ using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Naming.Audio; +using MediaBrowser.Naming.Common; using System; using System.Collections.Generic; using System.IO; -using MediaBrowser.Naming.Common; namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio { @@ -53,10 +52,10 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio //Avoid mis-identifying top folders if (args.Parent == null) return null; if (args.Parent.IsRoot) return null; - if (args.Parent is MusicAlbum) return null; + if (args.HasParent()) return null; // Optimization - if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season) + if (args.HasParent() || args.HasParent() || args.HasParent()) { return null; } diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs index 53063b35e..71b6c0843 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs @@ -51,13 +51,13 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio if (args.Parent.IsRoot) return null; // Don't allow nested artists - if (args.Parent is MusicArtist) + if (args.HasParent() || args.HasParent()) { return null; } // Optimization - if (args.Parent is BoxSet || args.Parent is Series || args.Parent is Season) + if (args.HasParent() || args.HasParent() || args.HasParent()) { return null; } diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 9f714cfc5..276b99d3a 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -456,7 +456,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies // Don't do any resolving within a series structure if (string.IsNullOrEmpty(collectionType)) { - if (parent is Season || parent is Series) + if (HasParent(parent) || HasParent(parent)) { return true; } @@ -480,5 +480,25 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies return !validCollectionTypes.Contains(collectionType ?? string.Empty, StringComparer.OrdinalIgnoreCase); } + + private bool HasParent(Folder parent) + where T : Folder + { + if (parent != null) + { + var item = parent as T; + + // Just in case the user decided to nest episodes. + // Not officially supported but in some cases we can handle it. + if (item == null) + { + item = parent.Parents.OfType().FirstOrDefault(); + } + + return item != null; + + } + return false; + } } } diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs index d3580aaf8..058fb1489 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeasonResolver.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV { @@ -34,7 +35,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV { var season = new Season { - IndexNumber = SeriesResolver.GetSeasonNumberFromPath(args.Path) + IndexNumber = SeriesResolver.GetSeasonNumberFromPath(args.Path, CollectionType.TvShows) }; if (season.IndexNumber.HasValue && season.IndexNumber.Value == 0) diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs index ce7491524..72c0bae53 100644 --- a/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs +++ b/MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs @@ -60,7 +60,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV } // Optimization to avoid running these tests against Seasons - if (args.Parent is Series || args.Parent is Season || args.Parent is MusicArtist || args.Parent is MusicAlbum) + if (args.HasParent() || args.HasParent() || args.HasParent() || args.HasParent()) { return null; } @@ -78,7 +78,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV return null; } - if (IsSeriesFolder(args.Path, isTvShowsFolder, args.FileSystemChildren, args.DirectoryService, _fileSystem, _logger, _libraryManager)) + if (IsSeriesFolder(args.Path, collectionType, args.FileSystemChildren, args.DirectoryService, _fileSystem, _logger, _libraryManager)) { return new Series { @@ -95,14 +95,14 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV /// Determines whether [is series folder] [the specified path]. /// /// The path. - /// if set to true [consider seasonless entries]. + /// Type of the collection. /// The file system children. /// The directory service. /// The file system. /// The logger. /// The library manager. /// true if [is series folder] [the specified path]; otherwise, false. - public static bool IsSeriesFolder(string path, bool considerSeasonlessEntries, IEnumerable fileSystemChildren, IDirectoryService directoryService, IFileSystem fileSystem, ILogger logger, ILibraryManager libraryManager) + public static bool IsSeriesFolder(string path, string collectionType, IEnumerable fileSystemChildren, IDirectoryService directoryService, IFileSystem fileSystem, ILogger logger, ILibraryManager libraryManager) { foreach (var child in fileSystemChildren) { @@ -123,7 +123,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV if ((attributes & FileAttributes.Directory) == FileAttributes.Directory) { - if (IsSeasonFolder(child.FullName, directoryService, fileSystem)) + if (IsSeasonFolder(child.FullName, collectionType, directoryService, fileSystem)) { //logger.Debug("{0} is a series because of season folder {1}.", path, child.FullName); return true; @@ -135,7 +135,9 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV if (libraryManager.IsVideoFile(fullName) || IsVideoPlaceHolder(fullName)) { - if (GetEpisodeNumberFromFile(fullName, considerSeasonlessEntries).HasValue) + var isTvShowsFolder = string.Equals(collectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase); + + if (GetEpisodeNumberFromFile(fullName, isTvShowsFolder).HasValue) { return true; } @@ -169,12 +171,13 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV /// Determines whether [is season folder] [the specified path]. /// /// The path. + /// Type of the collection. /// The directory service. /// The file system. /// true if [is season folder] [the specified path]; otherwise, false. - private static bool IsSeasonFolder(string path, IDirectoryService directoryService, IFileSystem fileSystem) + private static bool IsSeasonFolder(string path, string collectionType, IDirectoryService directoryService, IFileSystem fileSystem) { - var seasonNumber = GetSeasonNumberFromPath(path); + var seasonNumber = GetSeasonNumberFromPath(path, collectionType); var hasSeasonNumber = seasonNumber != null; if (!hasSeasonNumber) @@ -309,18 +312,27 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV // "blah - 01.avi", "blah 2 - 01.avi", "blah - 01 blah.avi", "blah 2 - 01 blah", "blah - 01 - blah.avi", "blah 2 - 01 - blah" }; + public static int? GetSeasonNumberFromPath(string path) + { + return GetSeasonNumberFromPath(path, CollectionType.TvShows); + } + /// /// Gets the season number from path. /// /// The path. + /// Type of the collection. /// System.Nullable{System.Int32}. - public static int? GetSeasonNumberFromPath(string path) + public static int? GetSeasonNumberFromPath(string path, string collectionType) { var filename = Path.GetFileName(path); - if (string.Equals(filename, "specials", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(collectionType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)) { - return 0; + if (string.Equals(filename, "specials", StringComparison.OrdinalIgnoreCase)) + { + return 0; + } } int val; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index b3c7e6202..f72b1541a 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -84,7 +84,6 @@ namespace MediaBrowser.Server.Implementations.Sync DateCreated = DateTime.UtcNow, DateLastModified = DateTime.UtcNow, SyncNewContent = request.SyncNewContent, - RemoveWhenWatched = request.RemoveWhenWatched, ItemCount = items.Count, Quality = request.Quality }; diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs index c7ffbb27f..3e54111b0 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs @@ -35,13 +35,13 @@ namespace MediaBrowser.Server.Implementations.Sync public async Task Initialize() { - var dbFile = Path.Combine(_appPaths.DataPath, "sync4.db"); + var dbFile = Path.Combine(_appPaths.DataPath, "sync5.db"); _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false); string[] queries = { - "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Quality TEXT NOT NULL, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, UnwatchedOnly BIT, ItemLimit INT, RemoveWhenWatched BIT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", + "create table if not exists SyncJobs (Id GUID PRIMARY KEY, TargetId TEXT NOT NULL, Name TEXT NOT NULL, Quality TEXT NOT NULL, Status TEXT NOT NULL, Progress FLOAT, UserId TEXT NOT NULL, ItemIds TEXT NOT NULL, UnwatchedOnly BIT, ItemLimit INT, SyncNewContent BIT, DateCreated DateTime, DateLastModified DateTime, ItemCount int)", "create index if not exists idx_SyncJobs on SyncJobs(Id)", "create table if not exists SyncJobItems (Id GUID PRIMARY KEY, ItemId TEXT, JobId TEXT, OutputPath TEXT, Status TEXT, TargetId TEXT, DateCreated DateTime, Progress FLOAT)", @@ -65,7 +65,7 @@ namespace MediaBrowser.Server.Implementations.Sync _deleteJobCommand.Parameters.Add(_deleteJobCommand, "@Id"); _saveJobCommand = _connection.CreateCommand(); - _saveJobCommand.CommandText = "replace into SyncJobs (Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, UnwatchedOnly, ItemLimit, RemoveWhenWatched, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Quality, @Status, @Progress, @UserId, @ItemIds, @UnwatchedOnly, @ItemLimit, @RemoveWhenWatched, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; + _saveJobCommand.CommandText = "replace into SyncJobs (Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount) values (@Id, @TargetId, @Name, @Quality, @Status, @Progress, @UserId, @ItemIds, @UnwatchedOnly, @ItemLimit, @SyncNewContent, @DateCreated, @DateLastModified, @ItemCount)"; _saveJobCommand.Parameters.Add(_saveJobCommand, "@Id"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@TargetId"); @@ -77,7 +77,6 @@ namespace MediaBrowser.Server.Implementations.Sync _saveJobCommand.Parameters.Add(_saveJobCommand, "@ItemIds"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@UnwatchedOnly"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@ItemLimit"); - _saveJobCommand.Parameters.Add(_saveJobCommand, "@RemoveWhenWatched"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@SyncNewContent"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@DateCreated"); _saveJobCommand.Parameters.Add(_saveJobCommand, "@DateLastModified"); @@ -96,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.Sync _saveJobItemCommand.Parameters.Add(_saveJobCommand, "@Progress"); } - private const string BaseJobSelectText = "select Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, UnwatchedOnly, ItemLimit, RemoveWhenWatched, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; + private const string BaseJobSelectText = "select Id, TargetId, Name, Quality, Status, Progress, UserId, ItemIds, UnwatchedOnly, ItemLimit, SyncNewContent, DateCreated, DateLastModified, ItemCount from SyncJobs"; private const string BaseJobItemSelectText = "select Id, ItemId, JobId, OutputPath, Status, TargetId, DateCreated, Progress from SyncJobItems"; public SyncJob GetJob(string id) @@ -175,12 +174,11 @@ namespace MediaBrowser.Server.Implementations.Sync info.ItemLimit = reader.GetInt32(9); } - info.RemoveWhenWatched = reader.GetBoolean(10); - info.SyncNewContent = reader.GetBoolean(11); + info.SyncNewContent = reader.GetBoolean(10); - info.DateCreated = reader.GetDateTime(12).ToUniversalTime(); - info.DateLastModified = reader.GetDateTime(13).ToUniversalTime(); - info.ItemCount = reader.GetInt32(14); + info.DateCreated = reader.GetDateTime(11).ToUniversalTime(); + info.DateLastModified = reader.GetDateTime(12).ToUniversalTime(); + info.ItemCount = reader.GetInt32(13); return info; } @@ -217,7 +215,6 @@ namespace MediaBrowser.Server.Implementations.Sync _saveJobCommand.GetParameter(index++).Value = string.Join(",", job.RequestedItemIds.ToArray()); _saveJobCommand.GetParameter(index++).Value = job.UnwatchedOnly; _saveJobCommand.GetParameter(index++).Value = job.ItemLimit; - _saveJobCommand.GetParameter(index++).Value = job.RemoveWhenWatched; _saveJobCommand.GetParameter(index++).Value = job.SyncNewContent; _saveJobCommand.GetParameter(index++).Value = job.DateCreated; _saveJobCommand.GetParameter(index++).Value = job.DateLastModified; diff --git a/Nuget/MediaBrowser.Common.Internal.nuspec b/Nuget/MediaBrowser.Common.Internal.nuspec index 69e21ea16..8a6c3004f 100644 --- a/Nuget/MediaBrowser.Common.Internal.nuspec +++ b/Nuget/MediaBrowser.Common.Internal.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common.Internal - 3.0.518 + 3.0.519 MediaBrowser.Common.Internal Luke ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption. Copyright © Media Browser 2013 - + diff --git a/Nuget/MediaBrowser.Common.nuspec b/Nuget/MediaBrowser.Common.nuspec index a251eee79..25ad3d10c 100644 --- a/Nuget/MediaBrowser.Common.nuspec +++ b/Nuget/MediaBrowser.Common.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Common - 3.0.518 + 3.0.519 MediaBrowser.Common Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Model.Signed.nuspec b/Nuget/MediaBrowser.Model.Signed.nuspec index a913bb89d..32dd134db 100644 --- a/Nuget/MediaBrowser.Model.Signed.nuspec +++ b/Nuget/MediaBrowser.Model.Signed.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Model.Signed - 3.0.518 + 3.0.519 MediaBrowser.Model - Signed Edition Media Browser Team ebr,Luke,scottisafool diff --git a/Nuget/MediaBrowser.Server.Core.nuspec b/Nuget/MediaBrowser.Server.Core.nuspec index d1d34e852..57d8eb1c8 100644 --- a/Nuget/MediaBrowser.Server.Core.nuspec +++ b/Nuget/MediaBrowser.Server.Core.nuspec @@ -2,7 +2,7 @@ MediaBrowser.Server.Core - 3.0.518 + 3.0.519 Media Browser.Server.Core Media Browser Team ebr,Luke,scottisafool @@ -12,7 +12,7 @@ Contains core components required to build plugins for Media Browser Server. Copyright © Media Browser 2013 - + diff --git a/SharedVersion.cs b/SharedVersion.cs index 9b152093c..064f4df79 100644 --- a/SharedVersion.cs +++ b/SharedVersion.cs @@ -1,4 +1,4 @@ using System.Reflection; [assembly: AssemblyVersion("3.0.*")] -//[assembly: AssemblyVersion("3.0.5462.0")] +//[assembly: AssemblyVersion("3.0.5462.1")]