diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2013-05-18 18:18:41 -0400 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2013-05-18 18:18:41 -0400 |
| commit | 00449ff66dbbaba9901c47c65070868ca111ac45 (patch) | |
| tree | 14980d9711cbcc5d5d92a02031715d8f79b0eaf8 /MediaBrowser.Server.Implementations | |
| parent | 584641a6f43fee18f65dc9c8abd24b88742922ce (diff) | |
| parent | 407016a30702694e39505afbb599791ed7c2dcfe (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
7 files changed, 40 insertions, 30 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 65905b082..b692e97f3 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -269,16 +269,16 @@ namespace MediaBrowser.Server.Implementations.Library // Need to use DistinctBy Id because there could be multiple instances with the same id // due to sharing the default library var userRootFolders = _userManager.Users.Select(i => i.RootFolder) - .DistinctBy(i => i.Id) + .Distinct() .ToList(); items.AddRange(userRootFolders); // Get all user collection folders + // Skip BasePluginFolders because we already got them from RootFolder.RecursiveChildren var userFolders = - _userManager.Users.SelectMany(i => i.RootFolder.Children) + userRootFolders.SelectMany(i => i.Children) .Where(i => !(i is BasePluginFolder)) - .DistinctBy(i => i.Id) .ToList(); items.AddRange(userFolders); diff --git a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs index b0a0f8760..cc586ccbf 100644 --- a/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs +++ b/MediaBrowser.Server.Implementations/Providers/ProviderManager.cs @@ -408,7 +408,7 @@ namespace MediaBrowser.Server.Implementations.Providers { return (saveLocally && item.MetaLocation != null) ? Path.Combine(item.MetaLocation, targetFileName) : - _remoteImageCache.GetResourcePath(item.GetType().FullName + item.Path.ToLower(), targetFileName); + _remoteImageCache.GetResourcePath(item.GetType().FullName + item.Id.ToString(), targetFileName); } /// <summary> diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs index d3ed270b8..c56a2b54a 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs @@ -46,14 +46,14 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks private readonly List<Audio> _newlyAddedItems = new List<Audio>(); - private const int NewItemDelay = 300000; + private const int NewItemDelay = 60000; /// <summary> /// The current new item timer /// </summary> /// <value>The new item timer.</value> private Timer NewItemTimer { get; set; } - + /// <summary> /// Initializes a new instance of the <see cref="AudioImagesTask" /> class. /// </summary> @@ -118,7 +118,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks foreach (var item in newSongs .Where(i => i.LocationType == LocationType.FileSystem && string.IsNullOrEmpty(i.PrimaryImagePath) && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video)) - .Take(20)) + .Take(10)) { try { @@ -130,7 +130,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks } } } - + /// <summary> /// Gets the name of the task /// </summary> @@ -216,7 +216,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var filename = item.Album ?? string.Empty; - filename += album == null ? item.Id.ToString("N") + item.DateModified.Ticks : album.Id.ToString() + album.DateModified.Ticks; + filename += album == null ? item.Id.ToString("N") + item.DateModified.Ticks : album.Id.ToString("N") + album.DateModified.Ticks; var path = ImageCache.GetResourcePath(filename + "_primary", ".jpg"); @@ -232,7 +232,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks { try { - await _mediaEncoder.ExtractImage(new[] {item.Path}, InputType.AudioFile, null, path, cancellationToken).ConfigureAwait(false); + await _mediaEncoder.ExtractImage(new[] { item.Path }, InputType.AudioFile, null, path, cancellationToken).ConfigureAwait(false); } finally { diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 87b99973d..4178d4f8b 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -33,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks private readonly List<Video> _newlyAddedItems = new List<Video>(); - private const int NewItemDelay = 300000; + private const int NewItemDelay = 60000; /// <summary> /// The current new item timer @@ -95,7 +95,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks foreach (var item in newItems .Where(i => i.LocationType == LocationType.FileSystem && string.IsNullOrEmpty(i.PrimaryImagePath) && i.MediaStreams.Any(m => m.Type == MediaStreamType.Video)) - .Take(5)) + .Take(1)) { try { diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs index 6082b629e..a343943f7 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs @@ -1,11 +1,11 @@ using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; +using MediaBrowser.Server.Implementations.Library; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; -using MediaBrowser.Server.Implementations.Library; namespace MediaBrowser.Server.Implementations.ScheduledTasks { diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs index dcceb382c..f0afe6358 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks private readonly List<BaseItem> _newlyAddedItems = new List<BaseItem>(); - private const int NewItemDelay = 300000; + private const int NewItemDelay = 60000; /// <summary> /// The current new item timer @@ -124,7 +124,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks NewItemTimer = null; } - foreach (var item in GetItemsForExtraction(newItems.Take(5))) + foreach (var item in GetItemsForExtraction(newItems.Take(3))) { try { @@ -215,7 +215,8 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks var videos = allItems.OfType<Video>().ToList(); - var items = videos; + var items = videos.ToList(); + items.AddRange(localTrailers); items.AddRange(themeVideos); diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs index 2f9c7e389..d3dbbc62b 100644 --- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs +++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs @@ -200,7 +200,7 @@ namespace MediaBrowser.Server.Implementations.Session /// <param name="deviceName">Name of the device.</param> /// <exception cref="System.ArgumentNullException"> /// </exception> - public void OnPlaybackStart(User user, BaseItem item, string clientType, string deviceId, string deviceName) + public async Task OnPlaybackStart(User user, BaseItem item, string clientType, string deviceId, string deviceName) { if (user == null) { @@ -213,6 +213,15 @@ namespace MediaBrowser.Server.Implementations.Session UpdateNowPlayingItemId(user, clientType, deviceId, deviceName, item, false); + var key = item.GetUserDataKey(); + + var data = await _userDataRepository.GetUserData(user.Id, key).ConfigureAwait(false); + + data.PlayCount++; + data.LastPlayedDate = DateTime.UtcNow; + + await _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None).ConfigureAwait(false); + // Nothing to save here // Fire events to inform plugins EventHelper.QueueEventIfNotNull(PlaybackStart, this, new PlaybackProgressEventArgs @@ -254,7 +263,7 @@ namespace MediaBrowser.Server.Implementations.Session { var data = await _userDataRepository.GetUserData(user.Id, key).ConfigureAwait(false); - UpdatePlayState(item, data, positionTicks.Value, false); + UpdatePlayState(item, data, positionTicks.Value); await _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None).ConfigureAwait(false); } @@ -297,7 +306,7 @@ namespace MediaBrowser.Server.Implementations.Session if (positionTicks.HasValue) { - UpdatePlayState(item, data, positionTicks.Value, true); + UpdatePlayState(item, data, positionTicks.Value); } else { @@ -322,11 +331,12 @@ namespace MediaBrowser.Server.Implementations.Session /// <param name="item">The item</param> /// <param name="data">User data for the item</param> /// <param name="positionTicks">The current playback position</param> - /// <param name="incrementPlayCount">Whether or not to increment playcount</param> - private void UpdatePlayState(BaseItem item, UserItemData data, long positionTicks, bool incrementPlayCount) + private void UpdatePlayState(BaseItem item, UserItemData data, long positionTicks) { + var hasRuntime = item.RunTimeTicks.HasValue && item.RunTimeTicks > 0; + // If a position has been reported, and if we know the duration - if (positionTicks > 0 && item.RunTimeTicks.HasValue && item.RunTimeTicks > 0) + if (positionTicks > 0 && hasRuntime) { var pctIn = Decimal.Divide(positionTicks, item.RunTimeTicks.Value) * 100; @@ -334,7 +344,6 @@ namespace MediaBrowser.Server.Implementations.Session if (pctIn < _configurationManager.Configuration.MinResumePct) { positionTicks = 0; - incrementPlayCount = false; } // If we're at the end, assume completed @@ -356,19 +365,19 @@ namespace MediaBrowser.Server.Implementations.Session } } } + else if (!hasRuntime) + { + // If we don't know the runtime we'll just have to assume it was fully played + data.Played = true; + positionTicks = 0; + } if (item is Audio) { - data.PlaybackPositionTicks = 0; + positionTicks = 0; } data.PlaybackPositionTicks = positionTicks; - - if (incrementPlayCount) - { - data.PlayCount++; - data.LastPlayedDate = DateTime.UtcNow; - } } } } |
