aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorEric Reed <ebr@mediabrowser3.com>2013-05-18 18:18:41 -0400
committerEric Reed <ebr@mediabrowser3.com>2013-05-18 18:18:41 -0400
commit00449ff66dbbaba9901c47c65070868ca111ac45 (patch)
tree14980d9711cbcc5d5d92a02031715d8f79b0eaf8 /MediaBrowser.Server.Implementations
parent584641a6f43fee18f65dc9c8abd24b88742922ce (diff)
parent407016a30702694e39505afbb599791ed7c2dcfe (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ProviderManager.cs2
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/AudioImagesTask.cs12
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs4
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs2
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs37
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;
- }
}
}
}