track progress for any item that supports the feature

This commit is contained in:
dkanada 2019-12-14 11:36:06 +09:00
parent f1fc6ef59f
commit 02928128b9
2 changed files with 5 additions and 11 deletions

View File

@ -226,24 +226,21 @@ namespace Emby.Server.Implementations.Library
{ {
var pctIn = decimal.Divide(positionTicks, runtimeTicks) * 100; var pctIn = decimal.Divide(positionTicks, runtimeTicks) * 100;
// Don't track in very beginning
if (pctIn < _config.Configuration.MinResumePct) if (pctIn < _config.Configuration.MinResumePct)
{ {
// ignore progress during the beginning
positionTicks = 0; positionTicks = 0;
} }
// If we're at the end, assume completed
else if (pctIn > _config.Configuration.MaxResumePct || positionTicks >= runtimeTicks) else if (pctIn > _config.Configuration.MaxResumePct || positionTicks >= runtimeTicks)
{ {
// mark as completed close to the end
positionTicks = 0; positionTicks = 0;
data.Played = playedToCompletion = true; data.Played = playedToCompletion = true;
} }
else else
{ {
// Enforce MinResumeDuration // Enforce MinResumeDuration
var durationSeconds = TimeSpan.FromTicks(runtimeTicks).TotalSeconds; var durationSeconds = TimeSpan.FromTicks(runtimeTicks).TotalSeconds;
if (durationSeconds < _config.Configuration.MinResumeDurationSeconds) if (durationSeconds < _config.Configuration.MinResumeDurationSeconds)
{ {
positionTicks = 0; positionTicks = 0;
@ -263,6 +260,7 @@ namespace Emby.Server.Implementations.Library
positionTicks = 0; positionTicks = 0;
data.Played = false; data.Played = false;
} }
if (!item.SupportsPositionTicksResume) if (!item.SupportsPositionTicksResume)
{ {
positionTicks = 0; positionTicks = 0;

View File

@ -667,13 +667,10 @@ namespace Emby.Server.Implementations.Session
data.PlayCount++; data.PlayCount++;
data.LastPlayedDate = DateTime.UtcNow; data.LastPlayedDate = DateTime.UtcNow;
if (item.SupportsPlayedStatus) if (item.SupportsPlayedStatus && !item.SupportsPositionTicksResume)
{
if (!(item is Video))
{ {
data.Played = true; data.Played = true;
} }
}
else else
{ {
data.Played = false; data.Played = false;
@ -769,7 +766,6 @@ namespace Emby.Server.Implementations.Session
{ {
_userDataManager.SaveUserData(user, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None); _userDataManager.SaveUserData(user, item, data, UserDataSaveReason.PlaybackProgress, CancellationToken.None);
} }
} }
private static bool UpdatePlaybackSettings(User user, PlaybackProgressInfo info, UserItemData data) private static bool UpdatePlaybackSettings(User user, PlaybackProgressInfo info, UserItemData data)