Forráskód Böngészése

Merge pull request #2207 from MediaBrowser/dev

Dev
Luke 8 éve
szülő
commit
696cdf2737

+ 1 - 1
MediaBrowser.Api/Playback/MediaInfoService.cs

@@ -107,7 +107,7 @@ namespace MediaBrowser.Api.Playback
         {
             var authInfo = AuthorizationContext.GetAuthorizationInfo(Request);
 
-            var result = await _mediaSourceManager.OpenLiveStream(request, false, CancellationToken.None).ConfigureAwait(false);
+            var result = await _mediaSourceManager.OpenLiveStream(request, true, CancellationToken.None).ConfigureAwait(false);
 
             var profile = request.DeviceProfile;
             if (profile == null)

+ 0 - 6
MediaBrowser.Api/StartupWizardService.cs

@@ -88,8 +88,6 @@ namespace MediaBrowser.Api
             var result = new StartupConfiguration
             {
                 UICulture = _config.Configuration.UICulture,
-                EnableInternetProviders = _config.Configuration.EnableInternetProviders,
-                SaveLocalMeta = _config.Configuration.SaveLocalMeta,
                 MetadataCountryCode = _config.Configuration.MetadataCountryCode,
                 PreferredMetadataLanguage = _config.Configuration.PreferredMetadataLanguage
             };
@@ -123,8 +121,6 @@ namespace MediaBrowser.Api
         public void Post(UpdateStartupConfiguration request)
         {
             _config.Configuration.UICulture = request.UICulture;
-            _config.Configuration.EnableInternetProviders = request.EnableInternetProviders;
-            _config.Configuration.SaveLocalMeta = request.SaveLocalMeta;
             _config.Configuration.MetadataCountryCode = request.MetadataCountryCode;
             _config.Configuration.PreferredMetadataLanguage = request.PreferredMetadataLanguage;
             _config.SaveConfiguration();
@@ -215,8 +211,6 @@ namespace MediaBrowser.Api
     public class StartupConfiguration
     {
         public string UICulture { get; set; }
-        public bool EnableInternetProviders { get; set; }
-        public bool SaveLocalMeta { get; set; }
         public string MetadataCountryCode { get; set; }
         public string PreferredMetadataLanguage { get; set; }
         public string LiveTvTunerType { get; set; }

+ 4 - 2
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -422,7 +422,7 @@ namespace MediaBrowser.Controller.Entities
 
         public virtual bool IsInternetMetadataEnabled()
         {
-            return ConfigurationManager.Configuration.EnableInternetProviders;
+            return LibraryManager.GetLibraryOptions(this).EnableInternetProviders;
         }
 
         public virtual bool CanDelete()
@@ -1341,7 +1341,9 @@ namespace MediaBrowser.Controller.Entities
                 return false;
             }
 
-            return ConfigurationManager.Configuration.SaveLocalMeta;
+            var libraryOptions = LibraryManager.GetLibraryOptions(this);
+
+            return libraryOptions.SaveLocalMetadata;
         }
 
         /// <summary>

+ 1 - 1
MediaBrowser.Controller/Entities/CollectionFolder.cs

@@ -111,7 +111,7 @@ namespace MediaBrowser.Controller.Entities
             {
                 LibraryOptions[path] = options;
 
-                options.SchemaVersion = 2;
+                options.SchemaVersion = 3;
                 XmlSerializer.SerializeToFile(options, GetLibraryOptionsPath(path));
             }
         }

+ 0 - 6
MediaBrowser.Model/Configuration/ChapterOptions.cs

@@ -2,17 +2,11 @@
 {
     public class ChapterOptions
     {
-        public bool EnableMovieChapterImageExtraction { get; set; }
-        public bool EnableEpisodeChapterImageExtraction { get; set; }
-        public bool EnableOtherVideoChapterImageExtraction { get; set; }
-
         public bool DownloadMovieChapters { get; set; }
         public bool DownloadEpisodeChapters { get; set; }
 
         public string[] FetcherOrder { get; set; }
         public string[] DisabledFetchers { get; set; }
-
-        public bool ExtractDuringLibraryScan { get; set; }
       
         public ChapterOptions()
         {

+ 4 - 0
MediaBrowser.Model/Configuration/LibraryOptions.cs

@@ -11,11 +11,15 @@
         public bool DownloadImagesInAdvance { get; set; }
         public MediaPathInfo[] PathInfos { get; set; }
 
+        public bool SaveLocalMetadata { get; set; }
+        public bool EnableInternetProviders { get; set; }
+
         public LibraryOptions()
         {
             EnablePhotos = true;
             EnableRealtimeMonitor = true;
             PathInfos = new MediaPathInfo[] { };
+            EnableInternetProviders = true;
         }
     }
 

+ 2 - 2
MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs

@@ -262,8 +262,8 @@ namespace MediaBrowser.Providers.MediaInfo
                 NormalizeChapterNames(chapters);
 
                 var libraryOptions = _libraryManager.GetLibraryOptions(video);
-                var extractDuringScan = chapterOptions.ExtractDuringLibraryScan;
-                if (libraryOptions != null && libraryOptions.SchemaVersion >= 2)
+                var extractDuringScan = false;
+                if (libraryOptions != null)
                 {
                     extractDuringScan = libraryOptions.ExtractChapterImagesDuringLibraryScan;
                 }

+ 2 - 2
MediaBrowser.Providers/Movies/GenericMovieDbInfo.cs

@@ -194,8 +194,8 @@ namespace MediaBrowser.Providers.Movies
             {
                 var releases = movieData.releases.countries.Where(i => !string.IsNullOrWhiteSpace(i.certification)).ToList();
 
-                var ourRelease = releases.FirstOrDefault(c => c.iso_3166_1.Equals(preferredCountryCode, StringComparison.OrdinalIgnoreCase));
-                var usRelease = releases.FirstOrDefault(c => c.iso_3166_1.Equals("US", StringComparison.OrdinalIgnoreCase));
+                var ourRelease = releases.FirstOrDefault(c => string.Equals(c.iso_3166_1, preferredCountryCode, StringComparison.OrdinalIgnoreCase));
+                var usRelease = releases.FirstOrDefault(c => string.Equals(c.iso_3166_1, "US", StringComparison.OrdinalIgnoreCase));
 
                 if (ourRelease != null)
                 {

+ 1 - 1
MediaBrowser.Providers/TV/MissingEpisodeProvider.cs

@@ -118,7 +118,7 @@ namespace MediaBrowser.Providers.TV
 
             var hasNewEpisodes = false;
 
-            if (_config.Configuration.EnableInternetProviders && addNewItems)
+            if (addNewItems && !group.Any(i => !i.IsInternetMetadataEnabled()))
             {
                 var seriesConfig = _config.Configuration.MetadataOptions.FirstOrDefault(i => string.Equals(i.ItemType, typeof(Series).Name, StringComparison.OrdinalIgnoreCase));
 

+ 10 - 7
MediaBrowser.Providers/TV/TheTVDB/TvdbPrescanTask.cs

@@ -74,12 +74,6 @@ namespace MediaBrowser.Providers.TV
         /// <returns>Task.</returns>
         public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
         {
-            if (!_config.Configuration.EnableInternetProviders)
-            {
-                progress.Report(100);
-                return;
-            }
-
             var seriesConfig = _config.Configuration.MetadataOptions.FirstOrDefault(i => string.Equals(i.ItemType, typeof(Series).Name, StringComparison.OrdinalIgnoreCase));
 
             if (seriesConfig != null && seriesConfig.DisabledMetadataFetchers.Contains(TvdbSeriesProvider.Current.Name, StringComparer.OrdinalIgnoreCase))
@@ -116,7 +110,9 @@ namespace MediaBrowser.Providers.TV
                 IncludeItemTypes = new[] { typeof(Series).Name },
                 Recursive = true,
                 GroupByPresentationUniqueKey = false
-            }).Cast<Series>();
+
+            }).Cast<Series>()
+            .ToList();
 
             var seriesIdsInLibrary = seriesList
                .Where(i => !string.IsNullOrEmpty(i.GetProviderId(MetadataProviders.Tvdb)))
@@ -126,6 +122,13 @@ namespace MediaBrowser.Providers.TV
             var missingSeries = seriesIdsInLibrary.Except(existingDirectories, StringComparer.OrdinalIgnoreCase)
                 .ToList();
 
+            var enableInternetProviders = seriesList.Count == 0 ? false : seriesList[0].IsInternetMetadataEnabled();
+            if (!enableInternetProviders)
+            {
+                progress.Report(100);
+                return;
+            }
+
             // If this is our first time, update all series
             if (string.IsNullOrEmpty(lastUpdateTime))
             {

+ 5 - 3
MediaBrowser.Server.Implementations/HttpServer/HttpResultFactory.cs

@@ -93,12 +93,14 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                     }
                 }
             }
-
-            if (responseHeaders != null)
+            if (responseHeaders == null)
             {
-                AddResponseHeaders(result, responseHeaders);
+                responseHeaders = new Dictionary<string, string>();
             }
 
+            responseHeaders["Expires"] = "-1";
+            AddResponseHeaders(result, responseHeaders);
+
             return result;
         }
 

+ 17 - 10
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -1216,12 +1216,7 @@ namespace MediaBrowser.Server.Implementations.Library
             if (libraryFolder != null)
             {
                 info.ItemId = libraryFolder.Id.ToString("N");
-            }
-
-            var collectionFolder = libraryFolder as CollectionFolder;
-            if (collectionFolder != null)
-            {
-                info.LibraryOptions = collectionFolder.GetLibraryOptions();
+                info.LibraryOptions = GetLibraryOptions(libraryFolder);
             }
 
             return info;
@@ -1889,11 +1884,23 @@ namespace MediaBrowser.Server.Implementations.Library
 
         public LibraryOptions GetLibraryOptions(BaseItem item)
         {
-            var collectionFolder = GetCollectionFolders(item)
-                .OfType<CollectionFolder>()
-                .FirstOrDefault();
+            var collectionFolder = item as CollectionFolder;
+            if (collectionFolder == null)
+            {
+                collectionFolder = GetCollectionFolders(item)
+                   .OfType<CollectionFolder>()
+                   .FirstOrDefault();
+            }
+
+            var options = collectionFolder == null ? new LibraryOptions() : collectionFolder.GetLibraryOptions();
+
+            if (options.SchemaVersion < 3)
+            {
+                options.SaveLocalMetadata = ConfigurationManager.Configuration.SaveLocalMeta;
+                options.EnableInternetProviders = ConfigurationManager.Configuration.EnableInternetProviders;
+            }
 
-            return collectionFolder == null ? new LibraryOptions() : collectionFolder.GetLibraryOptions();
+            return options;
         }
 
         public string GetContentType(BaseItem item)

+ 2 - 2
MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs

@@ -456,7 +456,7 @@ namespace MediaBrowser.Server.Implementations.Library
                 }
                 else
                 {
-                    _logger.Error("Failed to update MediaSource timestamp for {0}", id);
+                    _logger.Error("Failed to ping live stream {0}", id);
                 }
             }
             finally
@@ -540,7 +540,7 @@ namespace MediaBrowser.Server.Implementations.Library
         }
 
         private Timer _closeTimer;
-        private readonly TimeSpan _openStreamMaxAge = TimeSpan.FromSeconds(60);
+        private readonly TimeSpan _openStreamMaxAge = TimeSpan.FromSeconds(180);
 
         private void StartCloseTimer()
         {

+ 2 - 24
MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs

@@ -61,7 +61,7 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder
             }
 
             var libraryOptions = _libraryManager.GetLibraryOptions(video);
-            if (libraryOptions != null && libraryOptions.SchemaVersion >= 2)
+            if (libraryOptions != null)
             {
                 if (!libraryOptions.EnableChapterImageExtraction)
                 {
@@ -70,29 +70,7 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder
             }
             else
             {
-                var options = _chapterManager.GetConfiguration();
-
-                if (video is Movie)
-                {
-                    if (!options.EnableMovieChapterImageExtraction)
-                    {
-                        return false;
-                    }
-                }
-                else if (video is Episode)
-                {
-                    if (!options.EnableEpisodeChapterImageExtraction)
-                    {
-                        return false;
-                    }
-                }
-                else
-                {
-                    if (!options.EnableOtherVideoChapterImageExtraction)
-                    {
-                        return false;
-                    }
-                }
+                return false;
             }
 
             // Can't extract images if there are no video streams

+ 13 - 21
MediaBrowser.Server.Implementations/Session/SessionManager.cs

@@ -41,12 +41,7 @@ namespace MediaBrowser.Server.Implementations.Session
         /// <summary>
         /// The _user data repository
         /// </summary>
-        private readonly IUserDataManager _userDataRepository;
-
-        /// <summary>
-        /// The _user repository
-        /// </summary>
-        private readonly IUserRepository _userRepository;
+        private readonly IUserDataManager _userDataManager;
 
         /// <summary>
         /// The _logger
@@ -99,11 +94,10 @@ namespace MediaBrowser.Server.Implementations.Session
 
         private readonly SemaphoreSlim _sessionLock = new SemaphoreSlim(1, 1);
 
-        public SessionManager(IUserDataManager userDataRepository, ILogger logger, IUserRepository userRepository, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager)
+        public SessionManager(IUserDataManager userDataManager, ILogger logger, ILibraryManager libraryManager, IUserManager userManager, IMusicManager musicManager, IDtoService dtoService, IImageProcessor imageProcessor, IJsonSerializer jsonSerializer, IServerApplicationHost appHost, IHttpClient httpClient, IAuthenticationRepository authRepo, IDeviceManager deviceManager, IMediaSourceManager mediaSourceManager)
         {
-            _userDataRepository = userDataRepository;
+            _userDataManager = userDataManager;
             _logger = logger;
-            _userRepository = userRepository;
             _libraryManager = libraryManager;
             _userManager = userManager;
             _musicManager = musicManager;
@@ -248,13 +242,11 @@ namespace MediaBrowser.Server.Implementations.Session
                 var userLastActivityDate = user.LastActivityDate ?? DateTime.MinValue;
                 user.LastActivityDate = activityDate;
 
-                // Don't log in the db anymore frequently than 10 seconds
-                if ((activityDate - userLastActivityDate).TotalSeconds > 10)
+                if ((activityDate - userLastActivityDate).TotalSeconds > 60)
                 {
                     try
                     {
-                        // Save this directly. No need to fire off all the events for this.
-                        await _userRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false);
+                        await _userManager.UpdateUser(user).ConfigureAwait(false);
                     }
                     catch (Exception ex)
                     {
@@ -636,7 +628,7 @@ namespace MediaBrowser.Server.Implementations.Session
         /// <returns>Task.</returns>
         private async Task OnPlaybackStart(Guid userId, IHasUserData item)
         {
-            var data = _userDataRepository.GetUserData(userId, item);
+            var data = _userDataManager.GetUserData(userId, item);
 
             data.PlayCount++;
             data.LastPlayedDate = DateTime.UtcNow;
@@ -646,7 +638,7 @@ namespace MediaBrowser.Server.Implementations.Session
                 data.Played = true;
             }
 
-            await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
+            await _userDataManager.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
         }
 
         /// <summary>
@@ -713,17 +705,17 @@ namespace MediaBrowser.Server.Implementations.Session
 
         private async Task OnPlaybackProgress(User user, BaseItem item, PlaybackProgressInfo info)
         {
-            var data = _userDataRepository.GetUserData(user.Id, item);
+            var data = _userDataManager.GetUserData(user.Id, item);
 
             var positionTicks = info.PositionTicks;
 
             if (positionTicks.HasValue)
             {
-                _userDataRepository.UpdatePlayState(item, data, positionTicks.Value);
+                _userDataManager.UpdatePlayState(item, data, positionTicks.Value);
 
                 UpdatePlaybackSettings(user, info, data);
 
-                await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
+                await _userDataManager.SaveUserData(user.Id, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
             }
         }
 
@@ -849,11 +841,11 @@ namespace MediaBrowser.Server.Implementations.Session
 
             if (!playbackFailed)
             {
-                var data = _userDataRepository.GetUserData(userId, item);
+                var data = _userDataManager.GetUserData(userId, item);
 
                 if (positionTicks.HasValue)
                 {
-                    playedToCompletion = _userDataRepository.UpdatePlayState(item, data, positionTicks.Value);
+                    playedToCompletion = _userDataManager.UpdatePlayState(item, data, positionTicks.Value);
                 }
                 else
                 {
@@ -864,7 +856,7 @@ namespace MediaBrowser.Server.Implementations.Session
                     playedToCompletion = true;
                 }
 
-                await _userDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false);
+                await _userDataManager.SaveUserData(userId, item, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false);
             }
 
             return playedToCompletion;

+ 2 - 3
MediaBrowser.Server.Startup.Common/ApplicationHost.cs

@@ -435,8 +435,7 @@ namespace MediaBrowser.Server.Startup.Common
             RegisterSingleInstance(UserDataManager);
 
             UserRepository = await GetUserRepository().ConfigureAwait(false);
-            RegisterSingleInstance(UserRepository);
-
+            
             var displayPreferencesRepo = new SqliteDisplayPreferencesRepository(LogManager, JsonSerializer, ApplicationPaths, NativeApp.GetDbConnector());
             DisplayPreferencesRepository = displayPreferencesRepo;
             RegisterSingleInstance(DisplayPreferencesRepository);
@@ -517,7 +516,7 @@ namespace MediaBrowser.Server.Startup.Common
             MediaSourceManager = new MediaSourceManager(ItemRepository, UserManager, LibraryManager, LogManager.GetLogger("MediaSourceManager"), JsonSerializer, FileSystemManager, UserDataManager);
             RegisterSingleInstance(MediaSourceManager);
 
-            SessionManager = new SessionManager(UserDataManager, LogManager.GetLogger("SessionManager"), UserRepository, LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager);
+            SessionManager = new SessionManager(UserDataManager, LogManager.GetLogger("SessionManager"), LibraryManager, UserManager, musicManager, DtoService, ImageProcessor, JsonSerializer, this, HttpClient, AuthenticationRepository, DeviceManager, MediaSourceManager);
             RegisterSingleInstance(SessionManager);
 
             var dlnaManager = new DlnaManager(XmlSerializer, FileSystemManager, ApplicationPaths, LogManager.GetLogger("Dlna"), JsonSerializer, this);

+ 0 - 3
MediaBrowser.sln

@@ -67,9 +67,6 @@ EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Nat", "Mono.Nat\Mono.Nat.csproj", "{D7453B88-2266-4805-B39B-2B5A2A33E1BA}"
 EndProject
 Global
-	GlobalSection(Performance) = preSolution
-		HasPerformanceSessions = true
-	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Debug|Mixed Platforms = Debug|Mixed Platforms