From ca83644e1cf936d3f95572cad8a35fba0148e1b7 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 4 Mar 2016 23:16:55 -0500 Subject: handle no subs setting --- MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index e4a085f42..dfc6fc125 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -17,6 +17,7 @@ using System.Threading; using System.Threading.Tasks; using CommonIO; using MediaBrowser.Common.IO; +using MediaBrowser.Model.Configuration; namespace MediaBrowser.Server.Implementations.Library { @@ -276,7 +277,7 @@ namespace MediaBrowser.Server.Implementations.Library private void SetDefaultSubtitleStreamIndex(MediaSourceInfo source, UserItemData userData, User user) { - if (userData.SubtitleStreamIndex.HasValue && user.Configuration.RememberSubtitleSelections) + if (userData.SubtitleStreamIndex.HasValue && user.Configuration.RememberSubtitleSelections && user.Configuration.SubtitleMode != SubtitlePlaybackMode.None) { var index = userData.SubtitleStreamIndex.Value; // Make sure the saved index is still valid -- cgit v1.2.3 From d683f3061979d786efc574f1073af4e77da11772 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 13 Mar 2016 21:34:24 -0400 Subject: update music user data key --- MediaBrowser.Api/StartupWizardService.cs | 1 + MediaBrowser.Controller/Entities/Audio/Audio.cs | 25 ++++++++++++++++++++++ .../Entities/Audio/MusicAlbum.cs | 23 ++++++++++++++++++-- MediaBrowser.Controller/Entities/Movies/Movie.cs | 8 +++++++ .../Parsers/MovieXmlParser.cs | 2 +- .../Configuration/ServerConfiguration.cs | 3 ++- MediaBrowser.Model/Dto/BaseItemDto.cs | 6 ------ MediaBrowser.Model/Querying/ItemFields.cs | 5 ----- MediaBrowser.Providers/Manager/ProviderManager.cs | 4 ++-- .../MediaInfo/AudioImageProvider.cs | 16 +++++++++++--- .../Movies/GenericMovieDbInfo.cs | 2 +- .../Movies/MovieMetadataService.cs | 4 ++-- .../Dto/DtoService.cs | 10 --------- .../Library/LibraryManager.cs | 5 ----- MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs | 5 +++-- .../Parsers/MovieNfoParser.cs | 13 ++++++++--- MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs | 4 ++-- 17 files changed, 91 insertions(+), 45 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 06db1de74..10f9ec022 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -68,6 +68,7 @@ namespace MediaBrowser.Api _config.Configuration.EnableLocalizedGuids = true; _config.Configuration.EnableCustomPathSubFolders = true; _config.Configuration.EnableDateLastRefresh = true; + _config.Configuration.EnableStandaloneMusicKeys = true; _config.SaveConfiguration(); } diff --git a/MediaBrowser.Controller/Entities/Audio/Audio.cs b/MediaBrowser.Controller/Entities/Audio/Audio.cs index 766f1e5ed..dc37dccea 100644 --- a/MediaBrowser.Controller/Entities/Audio/Audio.cs +++ b/MediaBrowser.Controller/Entities/Audio/Audio.cs @@ -153,6 +153,31 @@ namespace MediaBrowser.Controller.Entities.Audio /// System.String. protected override string CreateUserDataKey() { + if (ConfigurationManager.Configuration.EnableStandaloneMusicKeys) + { + var songKey = IndexNumber.HasValue ? IndexNumber.Value.ToString("0000") : string.Empty; + + + if (ParentIndexNumber.HasValue) + { + songKey = ParentIndexNumber.Value.ToString("0000") + "-" + songKey; + } + songKey+= Name; + + if (!string.IsNullOrWhiteSpace(Album)) + { + songKey = Album + "-" + songKey; + } + + var albumArtist = AlbumArtists.FirstOrDefault(); + if (!string.IsNullOrWhiteSpace(albumArtist)) + { + songKey = albumArtist + "-" + songKey; + } + + return songKey; + } + var parent = AlbumEntity; if (parent != null) diff --git a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs index c5ce6a2f7..e6178c183 100644 --- a/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs +++ b/MediaBrowser.Controller/Entities/Audio/MusicAlbum.cs @@ -34,7 +34,17 @@ namespace MediaBrowser.Controller.Entities.Audio { get { - return GetParents().OfType().FirstOrDefault(); + var artist = GetParents().OfType().FirstOrDefault(); + + if (artist == null) + { + var name = AlbumArtist; + if (!string.IsNullOrWhiteSpace(name)) + { + artist = LibraryManager.GetArtist(name); + } + } + return artist; } } @@ -106,6 +116,15 @@ namespace MediaBrowser.Controller.Entities.Audio return "MusicAlbum-Musicbrainz-" + id; } + if (ConfigurationManager.Configuration.EnableStandaloneMusicKeys) + { + var albumArtist = AlbumArtist; + if (!string.IsNullOrWhiteSpace(albumArtist)) + { + return albumArtist + "-" + Name; + } + } + return base.CreateUserDataKey(); } @@ -125,7 +144,7 @@ namespace MediaBrowser.Controller.Entities.Audio id.AlbumArtists = AlbumArtists; - var artist = GetParents().OfType().FirstOrDefault(); + var artist = MusicArtist; if (artist != null) { diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs index 749d562ac..6f99e77ec 100644 --- a/MediaBrowser.Controller/Entities/Movies/Movie.cs +++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs @@ -6,6 +6,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using System.Runtime.Serialization; using System.Threading; using System.Threading.Tasks; using CommonIO; @@ -85,6 +86,13 @@ namespace MediaBrowser.Controller.Entities.Movies /// The name of the TMDB collection. public string TmdbCollectionName { get; set; } + [IgnoreDataMember] + public string CollectionName + { + get { return TmdbCollectionName; } + set { TmdbCollectionName = value; } + } + /// /// Gets the trailer ids. /// diff --git a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs index 0b434231f..1c1bbe71e 100644 --- a/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/MovieXmlParser.cs @@ -35,7 +35,7 @@ namespace MediaBrowser.LocalMetadata.Parsers if (!string.IsNullOrWhiteSpace(val) && movie != null) { - movie.TmdbCollectionName = val; + movie.CollectionName = val; } break; diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index 64edbdea9..009068dea 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -207,7 +207,8 @@ namespace MediaBrowser.Model.Configuration public bool DownloadImagesInAdvance { get; set; } public bool EnableAnonymousUsageReporting { get; set; } - + public bool EnableStandaloneMusicKeys { get; set; } + /// /// Initializes a new instance of the class. /// diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs index ef2de5d78..8e3284152 100644 --- a/MediaBrowser.Model/Dto/BaseItemDto.cs +++ b/MediaBrowser.Model/Dto/BaseItemDto.cs @@ -206,12 +206,6 @@ namespace MediaBrowser.Model.Dto /// The short overview. public string ShortOverview { get; set; } - /// - /// Gets or sets the name of the TMDB collection. - /// - /// The name of the TMDB collection. - public string TmdbCollectionName { get; set; } - /// /// Gets or sets the taglines. /// diff --git a/MediaBrowser.Model/Querying/ItemFields.cs b/MediaBrowser.Model/Querying/ItemFields.cs index 97fec8fdd..1540f178a 100644 --- a/MediaBrowser.Model/Querying/ItemFields.cs +++ b/MediaBrowser.Model/Querying/ItemFields.cs @@ -235,11 +235,6 @@ /// VoteCount, - /// - /// The TMDB collection name - /// - TmdbCollectionName, - /// /// The trailer url of the item /// diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index b0d3f6381..a83a40bc3 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -1022,8 +1022,8 @@ namespace MediaBrowser.Providers.Manager .ToList(); var musicArtists = albums - .Select(i => i.GetParent()) - .OfType() + .Select(i => i.MusicArtist) + .Where(i => i != null) .ToList(); var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress(), cancellationToken, options, true)); diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs index c98a67bbd..f9108b9fd 100644 --- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs @@ -107,11 +107,21 @@ namespace MediaBrowser.Providers.MediaInfo private string GetAudioImagePath(Audio item) { - var album = item.AlbumEntity; - var filename = item.Album ?? string.Empty; filename += string.Join(",", item.Artists.ToArray()); - filename += album == null ? item.Id.ToString("N") + "_primary" + item.DateModified.Ticks : album.Id.ToString("N") + album.DateModified.Ticks + "_primary"; + + if (!string.IsNullOrWhiteSpace(item.Album)) + { + filename += "_" + item.Album; + } + else if (!string.IsNullOrWhiteSpace(item.Name)) + { + filename += "_" + item.Name; + } + else + { + filename += "_" + item.Id.ToString("N"); + } filename = filename.GetMD5() + ".jpg"; diff --git a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs index abd4a6202..157704240 100644 --- a/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs +++ b/MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs @@ -179,7 +179,7 @@ namespace MediaBrowser.Providers.Movies if (movieItem != null) { - movieItem.TmdbCollectionName = movieData.belongs_to_collection.name; + movieItem.CollectionName = movieData.belongs_to_collection.name; } } diff --git a/MediaBrowser.Providers/Movies/MovieMetadataService.cs b/MediaBrowser.Providers/Movies/MovieMetadataService.cs index 8757bdd0d..f4cad837a 100644 --- a/MediaBrowser.Providers/Movies/MovieMetadataService.cs +++ b/MediaBrowser.Providers/Movies/MovieMetadataService.cs @@ -37,9 +37,9 @@ namespace MediaBrowser.Providers.Movies var sourceItem = source.Item; var targetItem = target.Item; - if (replaceData || string.IsNullOrEmpty(targetItem.TmdbCollectionName)) + if (replaceData || string.IsNullOrEmpty(targetItem.CollectionName)) { - targetItem.TmdbCollectionName = sourceItem.TmdbCollectionName; + targetItem.CollectionName = sourceItem.CollectionName; } } } diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index a19a122c3..fb202b798 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -1378,16 +1378,6 @@ namespace MediaBrowser.Server.Implementations.Dto } } - // Add MovieInfo - var movie = item as Movie; - if (movie != null) - { - if (fields.Contains(ItemFields.TmdbCollectionName)) - { - dto.TmdbCollectionName = movie.TmdbCollectionName; - } - } - var hasSpecialFeatures = item as IHasSpecialFeatures; if (hasSpecialFeatures != null) { diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 721603efe..3c56af9e6 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -1044,11 +1044,6 @@ namespace MediaBrowser.Server.Implementations.Library return names; } - private void SetPropertiesFromSongs(MusicArtist artist, IEnumerable items) - { - - } - /// /// Validate and refresh the People sub-set of the IBN. /// The items are stored in the db but not loaded into memory until actually requested by an operation. diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 7362ee58f..cb74d4dd7 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -180,7 +180,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers } catch (XmlException) { - + } } } @@ -661,7 +661,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers if (!string.IsNullOrWhiteSpace(val)) { val = val.Replace("plugin://plugin.video.youtube/?action=play_video&videoid=", "http://www.youtube.com/watch?v=", StringComparison.OrdinalIgnoreCase); - + hasTrailer.AddTrailerUrl(val, false); } } @@ -860,6 +860,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers break; case "collectionnumber": + case "tmdbcolid": var tmdbCollection = reader.ReadElementContentAsString(); if (!string.IsNullOrWhiteSpace(tmdbCollection)) { diff --git a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs index 8d5c2bf20..14c214f04 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/MovieNfoParser.cs @@ -11,7 +11,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers { class MovieNfoParser : BaseNfoParser /// The item. - /// The cancellation token. - /// Task. - /// Unable to remove + item.Name - public Task RemoveChild(BaseItem item, CancellationToken cancellationToken) + public void RemoveChild(BaseItem item) { RemoveChildrenInternal(new[] { item.Id }.ToList()); item.SetParent(null); - - if (!EnableNewFolderQuerying()) - { - return ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken); - } - - return Task.FromResult(true); } #region Indexing @@ -500,11 +480,6 @@ namespace MediaBrowser.Controller.Entities await LibraryManager.CreateItems(newItems, cancellationToken).ConfigureAwait(false); AddChildrenInternal(newItems.Select(i => i.Id).ToList()); - - if (!EnableNewFolderQuerying()) - { - await ItemRepository.SaveChildren(Id, ActualChildren.Select(i => i.Id).ToList(), cancellationToken).ConfigureAwait(false); - } } } @@ -734,45 +709,11 @@ namespace MediaBrowser.Controller.Entities /// IEnumerable{BaseItem}. protected IEnumerable GetCachedChildren() { - if (EnableNewFolderQuerying()) + return ItemRepository.GetItemIdsList(new InternalItemsQuery { - return ItemRepository.GetItemIdsList(new InternalItemsQuery - { - ParentId = Id - - }); - } - - return ItemRepository.GetChildrenItems(Id).Select(RetrieveChild).Where(i => i != null).Select(i => i.Id); - } - - private BaseItem RetrieveChild(BaseItem child) - { - if (child == null || child.Id == Guid.Empty) - { - Logger.Error("Item found with empty Id: " + (child.Path ?? child.Name)); - return null; - } - - var item = LibraryManager.GetMemoryItemById(child.Id); - - if (item != null) - { - if (item is IByReferenceItem) - { - return LibraryManager.GetOrAddByReferenceItem(item); - } - - item.SetParent(this); - } - else - { - child.SetParent(this); - LibraryManager.RegisterItem(child); - item = child; - } + ParentId = Id - return item; + }); } public QueryResult QueryRecursive(InternalItemsQuery query) diff --git a/MediaBrowser.Controller/Persistence/IItemRepository.cs b/MediaBrowser.Controller/Persistence/IItemRepository.cs index 533d66b95..15df1f649 100644 --- a/MediaBrowser.Controller/Persistence/IItemRepository.cs +++ b/MediaBrowser.Controller/Persistence/IItemRepository.cs @@ -42,13 +42,6 @@ namespace MediaBrowser.Controller.Persistence /// Task{IEnumerable{ItemReview}}. IEnumerable GetCriticReviews(Guid itemId); - /// - /// Gets the children items. - /// - /// The parent identifier. - /// IEnumerable<BaseItem>. - IEnumerable GetChildrenItems(Guid parentId); - /// /// Saves the critic reviews. /// @@ -96,22 +89,6 @@ namespace MediaBrowser.Controller.Persistence /// Task. Task SaveChapters(Guid id, IEnumerable chapters, CancellationToken cancellationToken); - /// - /// Gets the children. - /// - /// The parent id. - /// IEnumerable{ChildDefinition}. - IEnumerable GetChildren(Guid parentId); - - /// - /// Saves the children. - /// - /// The parent id. - /// The children. - /// The cancellation token. - /// Task. - Task SaveChildren(Guid parentId, IEnumerable children, CancellationToken cancellationToken); - /// /// Gets the media streams. /// diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs index 64a0e6d5b..bd1961143 100644 --- a/MediaBrowser.Providers/Manager/ImageSaver.cs +++ b/MediaBrowser.Providers/Manager/ImageSaver.cs @@ -421,7 +421,7 @@ namespace MediaBrowser.Providers.Manager if (saveLocally) { - if (item is Episode) + if (type == ImageType.Primary && item is Episode) { path = Path.Combine(Path.GetDirectoryName(item.Path), "metadata", filename + extension); } diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 50d365335..ad3cd2576 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -430,7 +430,7 @@ namespace MediaBrowser.Server.Implementations.Library } else if (parent != null) { - await parent.RemoveChild(item, CancellationToken.None).ConfigureAwait(false); + parent.RemoveChild(item); } await ItemRepository.DeleteItem(item.Id, CancellationToken.None).ConfigureAwait(false); diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index a6e92171f..0b337b2a1 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -63,8 +63,6 @@ namespace MediaBrowser.Server.Implementations.Persistence private readonly string _criticReviewsPath; - private IDbCommand _deleteChildrenCommand; - private IDbCommand _saveChildrenCommand; private IDbCommand _deleteItemCommand; private IDbCommand _deletePeopleCommand; @@ -138,9 +136,6 @@ namespace MediaBrowser.Server.Implementations.Persistence "create index if not exists idx_AncestorIds1 on AncestorIds(AncestorId)", "create index if not exists idx_AncestorIds2 on AncestorIds(AncestorIdText)", - "create table if not exists ChildrenIds (ParentId GUID, ItemId GUID, PRIMARY KEY (ParentId, ItemId))", - "create index if not exists idx_ChildrenIds on ChildrenIds(ParentId,ItemId)", - "create table if not exists People (ItemId GUID, Name TEXT NOT NULL, Role TEXT, PersonType TEXT, SortOrder int, ListOrder int)", "create index if not exists idxPeopleItemId on People(ItemId)", "create index if not exists idxPeopleName on People(Name)", @@ -477,19 +472,10 @@ namespace MediaBrowser.Server.Implementations.Persistence } _saveItemCommand.CommandText += ")"; - _deleteChildrenCommand = _connection.CreateCommand(); - _deleteChildrenCommand.CommandText = "delete from ChildrenIds where ParentId=@ParentId"; - _deleteChildrenCommand.Parameters.Add(_deleteChildrenCommand, "@ParentId"); - _deleteItemCommand = _connection.CreateCommand(); _deleteItemCommand.CommandText = "delete from TypedBaseItems where guid=@Id"; _deleteItemCommand.Parameters.Add(_deleteItemCommand, "@Id"); - _saveChildrenCommand = _connection.CreateCommand(); - _saveChildrenCommand.CommandText = "replace into ChildrenIds (ParentId, ItemId) values (@ParentId, @ItemId)"; - _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ParentId"); - _saveChildrenCommand.Parameters.Add(_saveChildrenCommand, "@ItemId"); - // People _deletePeopleCommand = _connection.CreateCommand(); _deletePeopleCommand.CommandText = "delete from People where ItemId=@Id"; @@ -1375,63 +1361,6 @@ namespace MediaBrowser.Server.Implementations.Persistence } } - public IEnumerable GetChildren(Guid parentId) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - CheckDisposed(); - - using (var cmd = _connection.CreateCommand()) - { - cmd.CommandText = "select ItemId from ChildrenIds where ParentId = @ParentId"; - - cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId; - - using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) - { - while (reader.Read()) - { - yield return reader.GetGuid(0); - } - } - } - } - - public IEnumerable GetChildrenItems(Guid parentId) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - CheckDisposed(); - - using (var cmd = _connection.CreateCommand()) - { - cmd.CommandText = "select " + string.Join(",", _retriveItemColumns) + " from TypedBaseItems where guid in (select ItemId from ChildrenIds where ParentId = @ParentId)"; - - cmd.Parameters.Add(cmd, "@ParentId", DbType.Guid).Value = parentId; - - //Logger.Debug(cmd.CommandText); - - using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult)) - { - while (reader.Read()) - { - var item = GetItem(reader); - - if (item != null) - { - yield return item; - } - } - } - } - } - public IEnumerable GetItemsOfType(Type type) { if (type == null) @@ -2392,11 +2321,6 @@ namespace MediaBrowser.Server.Implementations.Persistence { transaction = _connection.BeginTransaction(); - // First delete children - _deleteChildrenCommand.GetParameter(0).Value = id; - _deleteChildrenCommand.Transaction = transaction; - _deleteChildrenCommand.ExecuteNonQuery(); - // Delete people _deletePeopleCommand.GetParameter(0).Value = id; _deletePeopleCommand.Transaction = transaction; @@ -2455,79 +2379,6 @@ namespace MediaBrowser.Server.Implementations.Persistence } } - public async Task SaveChildren(Guid parentId, IEnumerable children, CancellationToken cancellationToken) - { - if (parentId == Guid.Empty) - { - throw new ArgumentNullException("parentId"); - } - - if (children == null) - { - throw new ArgumentNullException("children"); - } - - CheckDisposed(); - - await WriteLock.WaitAsync(cancellationToken).ConfigureAwait(false); - - IDbTransaction transaction = null; - - try - { - transaction = _connection.BeginTransaction(); - - // First delete - _deleteChildrenCommand.GetParameter(0).Value = parentId; - _deleteChildrenCommand.Transaction = transaction; - - _deleteChildrenCommand.ExecuteNonQuery(); - - foreach (var id in children) - { - cancellationToken.ThrowIfCancellationRequested(); - - _saveChildrenCommand.GetParameter(0).Value = parentId; - _saveChildrenCommand.GetParameter(1).Value = id; - - _saveChildrenCommand.Transaction = transaction; - - _saveChildrenCommand.ExecuteNonQuery(); - } - - transaction.Commit(); - } - catch (OperationCanceledException) - { - if (transaction != null) - { - transaction.Rollback(); - } - - throw; - } - catch (Exception e) - { - Logger.ErrorException("Failed to save children:", e); - - if (transaction != null) - { - transaction.Rollback(); - } - - throw; - } - finally - { - if (transaction != null) - { - transaction.Dispose(); - } - - WriteLock.Release(); - } - } - public List GetPeopleNames(InternalPeopleQuery query) { if (query == null) -- cgit v1.2.3 From 5d0abc280dc84598574515ba203388c0e22d3acf Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 24 Mar 2016 02:04:58 -0400 Subject: fixes #1404 - [BUG] Emby recreating old folder name after renaming/moving folder --- MediaBrowser.Api/StartupWizardService.cs | 1 + MediaBrowser.Model/Configuration/ServerConfiguration.cs | 6 ++++++ MediaBrowser.Providers/TV/DummySeasonProvider.cs | 2 +- MediaBrowser.Providers/TV/MissingEpisodeProvider.cs | 2 +- MediaBrowser.Server.Implementations/Channels/ChannelManager.cs | 3 +-- MediaBrowser.Server.Implementations/Library/LibraryManager.cs | 7 ++++++- MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs | 10 ++++++---- MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs | 2 +- 8 files changed, 23 insertions(+), 10 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs index 10f9ec022..14bd6b61f 100644 --- a/MediaBrowser.Api/StartupWizardService.cs +++ b/MediaBrowser.Api/StartupWizardService.cs @@ -69,6 +69,7 @@ namespace MediaBrowser.Api _config.Configuration.EnableCustomPathSubFolders = true; _config.Configuration.EnableDateLastRefresh = true; _config.Configuration.EnableStandaloneMusicKeys = true; + _config.Configuration.EnableCaseSensitiveItemIds = true; _config.SaveConfiguration(); } diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs index bbc6195ff..041f51a89 100644 --- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs +++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs @@ -62,6 +62,12 @@ namespace MediaBrowser.Model.Configuration /// true if this instance is port authorized; otherwise, false. public bool IsPortAuthorized { get; set; } + /// + /// Gets or sets a value indicating whether [enable case sensitive item ids]. + /// + /// true if [enable case sensitive item ids]; otherwise, false. + public bool EnableCaseSensitiveItemIds { get; set; } + /// /// Gets or sets the metadata path. /// diff --git a/MediaBrowser.Providers/TV/DummySeasonProvider.cs b/MediaBrowser.Providers/TV/DummySeasonProvider.cs index d4e4b4844..3a1e05704 100644 --- a/MediaBrowser.Providers/TV/DummySeasonProvider.cs +++ b/MediaBrowser.Providers/TV/DummySeasonProvider.cs @@ -115,7 +115,7 @@ namespace MediaBrowser.Providers.TV { Name = seasonName, IndexNumber = seasonNumber, - Id = (series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName).GetMBId(typeof(Season)) + Id = _libraryManager.GetNewItemId((series.Id + (seasonNumber ?? -1).ToString(_usCulture) + seasonName), typeof(Season)) }; season.SetParent(series); diff --git a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs index ff31dbc92..248be675d 100644 --- a/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs +++ b/MediaBrowser.Providers/TV/MissingEpisodeProvider.cs @@ -422,7 +422,7 @@ namespace MediaBrowser.Providers.TV Name = name, IndexNumber = episodeNumber, ParentIndexNumber = seasonNumber, - Id = (series.Id + seasonNumber.ToString(_usCulture) + name).GetMBId(typeof(Episode)) + Id = _libraryManager.GetNewItemId((series.Id + seasonNumber.ToString(_usCulture) + name), typeof(Episode)) }; episode.SetParent(season); diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs index 240037597..d849ce7bd 100644 --- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs +++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs @@ -561,8 +561,7 @@ namespace MediaBrowser.Server.Implementations.Channels { throw new ArgumentNullException("name"); } - - return ("Channel " + name).GetMBId(typeof(Channel)); + return _libraryManager.GetNewItemId("Channel " + name, typeof(Channel)); } public async Task> GetLatestChannelItems(AllChannelMediaQuery query, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index ad3cd2576..0e61f2969 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -508,7 +508,12 @@ namespace MediaBrowser.Server.Implementations.Library .Replace("/", "\\"); } - key = type.FullName + key.ToLower(); + if (!ConfigurationManager.Configuration.EnableCaseSensitiveItemIds) + { + key = key.ToLower(); + } + + key = type.FullName + key; return key.GetMD5(); } diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs index 3da0d15d3..7fe486de7 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs @@ -25,14 +25,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv private readonly IUserDataManager _userDataManager; private readonly IDtoService _dtoService; private readonly IApplicationHost _appHost; + private readonly ILibraryManager _libraryManager; - public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger, IApplicationHost appHost) + public LiveTvDtoService(IDtoService dtoService, IUserDataManager userDataManager, IImageProcessor imageProcessor, ILogger logger, IApplicationHost appHost, ILibraryManager libraryManager) { _dtoService = dtoService; _userDataManager = userDataManager; _imageProcessor = imageProcessor; _logger = logger; _appHost = appHost; + _libraryManager = libraryManager; } public TimerInfoDto GetTimerInfoDto(TimerInfo info, ILiveTvService service, LiveTvProgram program, LiveTvChannel channel) @@ -200,7 +202,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var name = serviceName + externalId + InternalVersionNumber; - return name.ToLower().GetMBId(typeof(LiveTvChannel)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(LiveTvChannel)); } public Guid GetInternalTimerId(string serviceName, string externalId) @@ -221,14 +223,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv { var name = serviceName + externalId + InternalVersionNumber; - return name.ToLower().GetMBId(typeof(LiveTvProgram)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(LiveTvProgram)); } public Guid GetInternalRecordingId(string serviceName, string externalId) { var name = serviceName + externalId + InternalVersionNumber + "0"; - return name.ToLower().GetMBId(typeof(ILiveTvRecording)); + return _libraryManager.GetNewItemId(name.ToLower(), typeof(ILiveTvRecording)); } public async Task GetTimerInfo(TimerInfoDto dto, bool isNew, LiveTvManager liveTv, CancellationToken cancellationToken) diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs index 08b0256b2..526de62c8 100644 --- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs +++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs @@ -81,7 +81,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv _dtoService = dtoService; _userDataManager = userDataManager; - _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger, appHost); + _tvDtoService = new LiveTvDtoService(dtoService, userDataManager, imageProcessor, logger, appHost, _libraryManager); } /// -- cgit v1.2.3 From b095d9fd3867012d41cb44558c1ad1ed171db7e9 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 24 Mar 2016 14:11:03 -0400 Subject: update tabs --- MediaBrowser.Model/Configuration/UserConfiguration.cs | 3 ++- MediaBrowser.Server.Implementations/Library/UserViewManager.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'MediaBrowser.Server.Implementations/Library') diff --git a/MediaBrowser.Model/Configuration/UserConfiguration.cs b/MediaBrowser.Model/Configuration/UserConfiguration.cs index a024eeab4..f294d1dec 100644 --- a/MediaBrowser.Model/Configuration/UserConfiguration.cs +++ b/MediaBrowser.Model/Configuration/UserConfiguration.cs @@ -60,7 +60,8 @@ namespace MediaBrowser.Model.Configuration EnableNextEpisodeAutoPlay = true; RememberAudioSelections = true; RememberSubtitleSelections = true; - + DisplayChannelsInline = true; + HidePlayedInLatest = true; PlayDefaultAudioTrack = true; diff --git a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs index 37046bfef..931f9b21e 100644 --- a/MediaBrowser.Server.Implementations/Library/UserViewManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserViewManager.cs @@ -124,7 +124,7 @@ namespace MediaBrowser.Server.Implementations.Library var channels = channelResult.Items; - if (user.Configuration.DisplayChannelsInline && channels.Length > 0) + if (!user.Configuration.DisplayChannelsInline && channels.Length > 0) { list.Add(await _channelManager.GetInternalChannelFolder(cancellationToken).ConfigureAwait(false)); } -- cgit v1.2.3