aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-23 12:03:12 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-10-23 12:03:12 -0400
commit6415776cd16be6068367273367e35188b26b97db (patch)
tree3d582203b2a93d79669232da0a42a150a50e8a96
parent77cff18dce6f07aa46d2f0d89fb444cd95203134 (diff)
add item to user data save event
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs4
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs4
-rw-r--r--MediaBrowser.Controller/Library/IUserDataManager.cs4
-rw-r--r--MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs6
-rw-r--r--MediaBrowser.Controller/Providers/BaseMetadataProvider.cs5
-rw-r--r--MediaBrowser.Providers/TV/SeriesPostScanTask.cs45
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserDataManager.cs23
-rw-r--r--MediaBrowser.Server.Implementations/Session/SessionManager.cs6
9 files changed, 53 insertions, 48 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs b/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs
index 4834dcbef..7913b8c8a 100644
--- a/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemByNameUserDataService.cs
@@ -228,7 +228,7 @@ namespace MediaBrowser.Api.UserLibrary
// Set favorite status
data.IsFavorite = isFavorite;
- await UserDataRepository.SaveUserData(userId, key, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
+ await UserDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
data = UserDataRepository.GetUserData(userId, key);
@@ -254,7 +254,7 @@ namespace MediaBrowser.Api.UserLibrary
data.Likes = likes;
- await UserDataRepository.SaveUserData(userId, key, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
+ await UserDataRepository.SaveUserData(userId, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
data = UserDataRepository.GetUserData(userId, key);
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index 4b3f35e96..6b7980b1f 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -608,7 +608,7 @@ namespace MediaBrowser.Api.UserLibrary
// Set favorite status
data.IsFavorite = isFavorite;
- await _userDataRepository.SaveUserData(user.Id, key, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
data = _userDataRepository.GetUserData(user.Id, key);
@@ -657,7 +657,7 @@ namespace MediaBrowser.Api.UserLibrary
data.Likes = likes;
- await _userDataRepository.SaveUserData(user.Id, key, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
data = _userDataRepository.GetUserData(user.Id, key);
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 6832ca714..3f670b807 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1339,7 +1339,7 @@ namespace MediaBrowser.Controller.Entities
data.LastPlayedDate = datePlayed ?? data.LastPlayedDate;
data.Played = true;
- await userManager.SaveUserData(user.Id, key, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
+ await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}
/// <summary>
@@ -1368,7 +1368,7 @@ namespace MediaBrowser.Controller.Entities
data.LastPlayedDate = null;
data.Played = false;
- await userManager.SaveUserData(user.Id, key, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
+ await userManager.SaveUserData(user.Id, this, data, UserDataSaveReason.TogglePlayed, CancellationToken.None).ConfigureAwait(false);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Library/IUserDataManager.cs b/MediaBrowser.Controller/Library/IUserDataManager.cs
index 5a4dcd55d..d6d5f99aa 100644
--- a/MediaBrowser.Controller/Library/IUserDataManager.cs
+++ b/MediaBrowser.Controller/Library/IUserDataManager.cs
@@ -20,12 +20,12 @@ namespace MediaBrowser.Controller.Library
/// Saves the user data.
/// </summary>
/// <param name="userId">The user id.</param>
- /// <param name="key">The key.</param>
+ /// <param name="item">The item.</param>
/// <param name="userData">The user data.</param>
/// <param name="reason">The reason.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- Task SaveUserData(Guid userId, string key, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken);
+ Task SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken);
/// <summary>
/// Gets the user data.
diff --git a/MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs b/MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs
index 752bed618..87e7f647a 100644
--- a/MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs
+++ b/MediaBrowser.Controller/Library/UserDataSaveEventArgs.cs
@@ -32,5 +32,11 @@ namespace MediaBrowser.Controller.Library
/// </summary>
/// <value>The user data.</value>
public UserItemData UserData { get; set; }
+
+ /// <summary>
+ /// Gets or sets the item.
+ /// </summary>
+ /// <value>The item.</value>
+ public BaseItem Item { get; set; }
}
}
diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
index ee854018b..de7e8e98d 100644
--- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
+++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs
@@ -248,11 +248,6 @@ namespace MediaBrowser.Controller.Providers
return true;
}
- if (RequiresInternet && DateTime.UtcNow > (providerInfo.LastRefreshed.AddDays(ConfigurationManager.Configuration.MetadataRefreshDays)))
- {
- return true;
- }
-
if (providerInfo.LastRefreshStatus != ProviderRefreshStatus.Success)
{
return true;
diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
index b17ff6268..b15414fdd 100644
--- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
+++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs
@@ -123,17 +123,13 @@ namespace MediaBrowser.Providers.TV
if (parts.Length == 3)
{
- var seasonNumberString = parts[1];
-
int seasonNumber;
- if (int.TryParse(seasonNumberString, NumberStyles.Integer, UsCulture, out seasonNumber))
+ if (int.TryParse(parts[1], NumberStyles.Integer, UsCulture, out seasonNumber))
{
- var episodeNumberString = parts[2];
-
int episodeNumber;
- if (int.TryParse(episodeNumberString, NumberStyles.Integer, UsCulture, out episodeNumber))
+ if (int.TryParse(parts[2], NumberStyles.Integer, UsCulture, out episodeNumber))
{
return new Tuple<int, int>(seasonNumber, episodeNumber);
}
@@ -145,22 +141,17 @@ namespace MediaBrowser.Providers.TV
.Where(i => i.Item1 != -1 && i.Item2 != -1)
.ToList();
- var existingEpisodes = series.RecursiveChildren
- .OfType<Episode>()
- .Where(i => i.IndexNumber.HasValue && i.ParentIndexNumber.HasValue)
- .ToList();
-
var hasChanges = false;
if (_config.Configuration.CreateVirtualMissingEpisodes || _config.Configuration.CreateVirtualFutureEpisodes)
{
if (_config.Configuration.EnableInternetProviders)
{
- hasChanges = await AddMissingEpisodes(series, seriesDataPath, existingEpisodes, episodeLookup, cancellationToken).ConfigureAwait(false);
+ hasChanges = await AddMissingEpisodes(series, seriesDataPath, episodeLookup, cancellationToken).ConfigureAwait(false);
}
}
- var anyRemoved = await RemoveObsoleteMissingEpisodes(series, existingEpisodes, cancellationToken).ConfigureAwait(false);
+ var anyRemoved = await RemoveObsoleteMissingEpisodes(series, cancellationToken).ConfigureAwait(false);
if (hasChanges || anyRemoved)
{
@@ -174,12 +165,15 @@ namespace MediaBrowser.Providers.TV
/// </summary>
/// <param name="series">The series.</param>
/// <param name="seriesDataPath">The series data path.</param>
- /// <param name="existingEpisodes">The existing episodes.</param>
/// <param name="episodeLookup">The episode lookup.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- private async Task<bool> AddMissingEpisodes(Series series, string seriesDataPath, List<Episode> existingEpisodes, IEnumerable<Tuple<int, int>> episodeLookup, CancellationToken cancellationToken)
+ private async Task<bool> AddMissingEpisodes(Series series, string seriesDataPath, IEnumerable<Tuple<int, int>> episodeLookup, CancellationToken cancellationToken)
{
+ var existingEpisodes = series.RecursiveChildren
+ .OfType<Episode>()
+ .ToList();
+
var hasChanges = false;
foreach (var tuple in episodeLookup)
@@ -209,8 +203,9 @@ namespace MediaBrowser.Providers.TV
{
continue;
}
+ var now = DateTime.UtcNow;
- if (airDate.Value < DateTime.UtcNow && _config.Configuration.CreateVirtualMissingEpisodes)
+ if (airDate.Value < now && _config.Configuration.CreateVirtualMissingEpisodes)
{
// tvdb has a lot of nearly blank episodes
_logger.Info("Creating virtual missing episode {0} {1}x{2}", series.Name, tuple.Item1, tuple.Item2);
@@ -219,7 +214,7 @@ namespace MediaBrowser.Providers.TV
hasChanges = true;
}
- else if (airDate.Value > DateTime.UtcNow && _config.Configuration.CreateVirtualFutureEpisodes)
+ else if (airDate.Value > now && _config.Configuration.CreateVirtualFutureEpisodes)
{
// tvdb has a lot of nearly blank episodes
_logger.Info("Creating virtual future episode {0} {1}x{2}", series.Name, tuple.Item1, tuple.Item2);
@@ -236,14 +231,21 @@ namespace MediaBrowser.Providers.TV
/// <summary>
/// Removes the virtual entry after a corresponding physical version has been added
/// </summary>
- private async Task<bool> RemoveObsoleteMissingEpisodes(Series series, List<Episode> existingEpisodes, CancellationToken cancellationToken)
+ private async Task<bool> RemoveObsoleteMissingEpisodes(Series series, CancellationToken cancellationToken)
{
+ var existingEpisodes = series.RecursiveChildren
+ .OfType<Episode>()
+ .ToList();
+
var physicalEpisodes = existingEpisodes
.Where(i => i.LocationType != LocationType.Virtual)
.ToList();
- var episodesToRemove = existingEpisodes
+ var virtualEpisodes = existingEpisodes
.Where(i => i.LocationType == LocationType.Virtual)
+ .ToList();
+
+ var episodesToRemove = virtualEpisodes
.Where(i =>
{
if (i.IndexNumber.HasValue && i.ParentIndexNumber.HasValue)
@@ -279,7 +281,8 @@ namespace MediaBrowser.Providers.TV
/// <returns>Task.</returns>
private async Task AddEpisode(Series series, int seasonNumber, int episodeNumber, CancellationToken cancellationToken)
{
- var season = series.Children.OfType<Season>().FirstOrDefault(i => i.IndexNumber.HasValue && i.IndexNumber.Value == seasonNumber);
+ var season = series.Children.OfType<Season>()
+ .FirstOrDefault(i => i.IndexNumber.HasValue && i.IndexNumber.Value == seasonNumber);
if (season == null)
{
@@ -290,7 +293,7 @@ namespace MediaBrowser.Providers.TV
var episode = new Episode
{
- Name = string.Format("Episode {0}", episodeNumber.ToString(UsCulture)),
+ Name = name,
IndexNumber = episodeNumber,
ParentIndexNumber = seasonNumber,
Parent = season,
diff --git a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
index bf62e09c3..8d010aecc 100644
--- a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
@@ -37,37 +37,37 @@ namespace MediaBrowser.Server.Implementations.Library
/// Saves the user data.
/// </summary>
/// <param name="userId">The user id.</param>
- /// <param name="key">The key.</param>
+ /// <param name="item">The item.</param>
/// <param name="userData">The user data.</param>
/// <param name="reason">The reason.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- /// <exception cref="System.ArgumentNullException">
- /// userData
+ /// <exception cref="System.ArgumentNullException">userData
/// or
/// cancellationToken
/// or
/// userId
/// or
- /// key
- /// </exception>
- public async Task SaveUserData(Guid userId, string key, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
+ /// key</exception>
+ public async Task SaveUserData(Guid userId, BaseItem item, UserItemData userData, UserDataSaveReason reason, CancellationToken cancellationToken)
{
if (userData == null)
{
throw new ArgumentNullException("userData");
}
- if (userId == Guid.Empty)
+ if (item == null)
{
- throw new ArgumentNullException("userId");
+ throw new ArgumentNullException("item");
}
- if (string.IsNullOrEmpty(key))
+ if (userId == Guid.Empty)
{
- throw new ArgumentNullException("key");
+ throw new ArgumentNullException("userId");
}
cancellationToken.ThrowIfCancellationRequested();
+ var key = item.GetUserDataKey();
+
try
{
await Repository.SaveUserData(userId, key, userData, cancellationToken).ConfigureAwait(false);
@@ -89,7 +89,8 @@ namespace MediaBrowser.Server.Implementations.Library
Key = key,
UserData = userData,
SaveReason = reason,
- UserId = userId
+ UserId = userId,
+ Item = item
}, _logger);
}
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 473f2c67a..47a9ab1bd 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -254,7 +254,7 @@ namespace MediaBrowser.Server.Implementations.Session
data.Played = true;
}
- await _userDataRepository.SaveUserData(user.Id, key, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, info.Item, data, UserDataSaveReason.PlaybackStart, CancellationToken.None).ConfigureAwait(false);
// Nothing to save here
// Fire events to inform plugins
@@ -298,7 +298,7 @@ namespace MediaBrowser.Server.Implementations.Session
UpdatePlayState(info.Item, data, info.PositionTicks.Value);
- await _userDataRepository.SaveUserData(user.Id, key, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, info.Item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None).ConfigureAwait(false);
}
EventHelper.QueueEventIfNotNull(PlaybackProgress, this, new PlaybackProgressEventArgs
@@ -361,7 +361,7 @@ namespace MediaBrowser.Server.Implementations.Session
data.PlaybackPositionTicks = 0;
}
- await _userDataRepository.SaveUserData(user.Id, key, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false);
+ await _userDataRepository.SaveUserData(user.Id, info.Item, data, UserDataSaveReason.PlaybackFinished, CancellationToken.None).ConfigureAwait(false);
EventHelper.QueueEventIfNotNull(PlaybackStopped, this, new PlaybackProgressEventArgs
{