From 9bb1588afdf78ee488b13f082ac8d5faafed7196 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 17 Jun 2013 10:26:20 -0400 Subject: [PATCH 01/10] don't keep calling Path.combine for critic reviews --- .../Sqlite/SQLiteItemRepository.cs | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs index bead1360b0..a068b7cccc 100644 --- a/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs @@ -67,6 +67,8 @@ namespace MediaBrowser.Server.Implementations.Sqlite /// private SQLiteCommand _saveChildrenCommand; + private string _criticReviewsPath; + /// /// Initializes a new instance of the class. /// @@ -88,6 +90,8 @@ namespace MediaBrowser.Server.Implementations.Sqlite _appPaths = appPaths; _jsonSerializer = jsonSerializer; + + _criticReviewsPath = Path.Combine(_appPaths.DataPath, "critic-reviews"); } /// @@ -468,23 +472,6 @@ namespace MediaBrowser.Server.Implementations.Sqlite } } - /// - /// Gets the critic reviews path. - /// - /// if set to true [create]. - /// System.String. - private string GetCriticReviewsPath(bool create) - { - var path = Path.Combine(_appPaths.DataPath, "critic-reviews"); - - if (create && !Directory.Exists(path)) - { - Directory.CreateDirectory(path); - } - - return path; - } - /// /// Gets the critic reviews. /// @@ -497,7 +484,7 @@ namespace MediaBrowser.Server.Implementations.Sqlite try { - var path = Path.Combine(GetCriticReviewsPath(false), itemId + ".json"); + var path = Path.Combine(_criticReviewsPath, itemId + ".json"); return _jsonSerializer.DeserializeFromFile>(path); } @@ -523,7 +510,12 @@ namespace MediaBrowser.Server.Implementations.Sqlite { return Task.Run(() => { - var path = Path.Combine(GetCriticReviewsPath(true), itemId + ".json"); + if (!Directory.Exists(_criticReviewsPath)) + { + Directory.CreateDirectory(_criticReviewsPath); + } + + var path = Path.Combine(_criticReviewsPath, itemId + ".json"); _jsonSerializer.SerializeToFile(criticReviews.ToList(), path); }); From 95f471e8c3ab466488cc4c2fba1b15e14e00ee3c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 17 Jun 2013 14:48:18 -0400 Subject: [PATCH 02/10] fixes #354 - BaseItemXmlParser not handling MusicVideos --- .../Movies/MovieProviderFromXml.cs | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/MediaBrowser.Providers/Movies/MovieProviderFromXml.cs b/MediaBrowser.Providers/Movies/MovieProviderFromXml.cs index b7d3e6e570..a427f1bacd 100644 --- a/MediaBrowser.Providers/Movies/MovieProviderFromXml.cs +++ b/MediaBrowser.Providers/Movies/MovieProviderFromXml.cs @@ -1,12 +1,12 @@ using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Movies; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; using System; using System.IO; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; namespace MediaBrowser.Providers.Movies { @@ -15,7 +15,8 @@ namespace MediaBrowser.Providers.Movies /// public class MovieProviderFromXml : BaseMetadataProvider { - public MovieProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager) : base(logManager, configurationManager) + public MovieProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager) + : base(logManager, configurationManager) { } @@ -78,25 +79,49 @@ namespace MediaBrowser.Providers.Movies private async Task Fetch(BaseItem item, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - + var metadataFile = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "movie.xml")); if (metadataFile != null) { var path = metadataFile.FullName; - var boxset = item as BoxSet; await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); try { - if (boxset != null) + var movie = item as Movie; + + if (movie != null) { - new BaseItemXmlParser(Logger).Fetch(boxset, path, cancellationToken); + new BaseItemXmlParser(Logger).Fetch(movie, path, cancellationToken); } else { - new BaseItemXmlParser(Logger).Fetch((Movie)item, path, cancellationToken); + var boxset = item as BoxSet; + + if (boxset != null) + { + new BaseItemXmlParser(Logger).Fetch(boxset, path, cancellationToken); + } + else + { + var musicVideo = item as MusicVideo; + + if (musicVideo != null) + { + new BaseItemXmlParser(Logger).Fetch(musicVideo, path, cancellationToken); + } + else + { + var trailer = item as Trailer; + + if (trailer != null) + { + new BaseItemXmlParser(Logger).Fetch(trailer, path, cancellationToken); + } + } + } } } finally From e677a57bf1cedc55214b0e457778311b8f1ea5ac Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 17 Jun 2013 16:35:43 -0400 Subject: [PATCH 03/10] switch to flat file storage --- MediaBrowser.Api/LibraryService.cs | 4 +- MediaBrowser.Api/TvShowsService.cs | 21 +- .../UserLibrary/BaseItemsByNameService.cs | 9 +- .../UserLibrary/ItemByNameUserDataService.cs | 8 +- MediaBrowser.Api/UserLibrary/ItemsService.cs | 12 +- .../UserLibrary/UserLibraryService.cs | 12 +- MediaBrowser.Api/VideosService.cs | 2 +- MediaBrowser.Controller/Dto/DtoBuilder.cs | 22 +- MediaBrowser.Controller/Entities/BaseItem.cs | 43 +- MediaBrowser.Controller/Entities/Folder.cs | 65 ++- .../Entities/Movies/Movie.cs | 16 +- MediaBrowser.Controller/Entities/Video.cs | 12 +- .../Library/ILibraryManager.cs | 21 +- .../MediaBrowser.Controller.csproj | 1 + .../Persistence/IItemRepository.cs | 74 +-- .../Persistence/IUserDataRepository.cs | 2 +- .../Reflection/TypeMapper.cs | 2 +- .../Entities/IHasProviderIds.cs | 10 + .../MediaBrowser.Providers.csproj | 1 + .../MediaInfo/BaseFFProbeProvider.cs | 10 +- .../TV/EpisodeIndexNumberProvider.cs | 67 +++ .../Library/LibraryManager.cs | 51 +- .../Library/Resolvers/TV/EpisodeResolver.cs | 3 - ...MediaBrowser.Server.Implementations.csproj | 19 +- .../JsonDisplayPreferencesRepository.cs | 164 ++++++ .../Persistence/JsonItemRepository.cs | 235 ++++++++ .../JsonUserDataRepository.cs} | 179 +++--- .../Persistence/JsonUserRepository.cs | 189 +++++++ .../Providers/ProviderManager.cs | 5 + .../ScheduledTasks/VideoImagesTask.cs | 8 +- .../Session/SessionManager.cs | 8 +- .../Sorting/DatePlayedComparer.cs | 2 +- .../Sorting/PlayCountComparer.cs | 2 +- .../SQLiteDisplayPreferencesRepository.cs | 209 ------- .../Sqlite/SQLiteExtensions.cs | 61 -- .../Sqlite/SQLiteItemRepository.cs | 524 ------------------ .../Sqlite/SQLiteRepository.cs | 183 ------ .../Sqlite/SQLiteUserRepository.cs | 271 --------- .../packages.config | 1 - MediaBrowser.ServerApplication/App.config | 4 - .../ApplicationHost.cs | 10 +- Nuget/MediaBrowser.Common.Internal.nuspec | 4 +- Nuget/MediaBrowser.Common.nuspec | 2 +- Nuget/MediaBrowser.Server.Core.nuspec | 4 +- 44 files changed, 958 insertions(+), 1594 deletions(-) rename {MediaBrowser.Server.Implementations => MediaBrowser.Controller}/Reflection/TypeMapper.cs (96%) create mode 100644 MediaBrowser.Providers/TV/EpisodeIndexNumberProvider.cs create mode 100644 MediaBrowser.Server.Implementations/Persistence/JsonDisplayPreferencesRepository.cs create mode 100644 MediaBrowser.Server.Implementations/Persistence/JsonItemRepository.cs rename MediaBrowser.Server.Implementations/{Sqlite/SQLiteUserDataRepository.cs => Persistence/JsonUserDataRepository.cs} (53%) create mode 100644 MediaBrowser.Server.Implementations/Persistence/JsonUserRepository.cs delete mode 100644 MediaBrowser.Server.Implementations/Sqlite/SQLiteDisplayPreferencesRepository.cs delete mode 100644 MediaBrowser.Server.Implementations/Sqlite/SQLiteExtensions.cs delete mode 100644 MediaBrowser.Server.Implementations/Sqlite/SQLiteItemRepository.cs delete mode 100644 MediaBrowser.Server.Implementations/Sqlite/SQLiteRepository.cs delete mode 100644 MediaBrowser.Server.Implementations/Sqlite/SQLiteUserRepository.cs diff --git a/MediaBrowser.Api/LibraryService.cs b/MediaBrowser.Api/LibraryService.cs index c2ccf4dcdd..f1338c44b2 100644 --- a/MediaBrowser.Api/LibraryService.cs +++ b/MediaBrowser.Api/LibraryService.cs @@ -431,7 +431,7 @@ namespace MediaBrowser.Api var dtoBuilder = new DtoBuilder(Logger, _libraryManager, _userDataRepository); - var items = _itemRepo.GetItems(item.ThemeSongIds) + var items = _itemRepo.RetrieveItems