|
|
@ -7,8 +7,9 @@ namespace ErsatzTV.Core.Extensions; |
|
|
|
|
|
|
|
|
|
|
|
public static class MediaItemExtensions |
|
|
|
public static class MediaItemExtensions |
|
|
|
{ |
|
|
|
{ |
|
|
|
public static Option<TimeSpan> GetDuration(this MediaItem mediaItem) => |
|
|
|
public static Option<TimeSpan> GetNonZeroDuration(this MediaItem mediaItem) |
|
|
|
mediaItem switch |
|
|
|
{ |
|
|
|
|
|
|
|
Option<TimeSpan> maybeDuration = mediaItem switch |
|
|
|
{ |
|
|
|
{ |
|
|
|
Movie m => m.MediaVersions.HeadOrNone().Map(v => v.Duration), |
|
|
|
Movie m => m.MediaVersions.HeadOrNone().Map(v => v.Duration), |
|
|
|
Episode e => e.MediaVersions.HeadOrNone().Map(v => v.Duration), |
|
|
|
Episode e => e.MediaVersions.HeadOrNone().Map(v => v.Duration), |
|
|
@ -18,6 +19,10 @@ public static class MediaItemExtensions |
|
|
|
_ => None |
|
|
|
_ => None |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// zero duration is invalid, so return none in that case
|
|
|
|
|
|
|
|
return maybeDuration.Any(duration => duration == TimeSpan.Zero) ? Option<TimeSpan>.None : maybeDuration; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static MediaVersion GetHeadVersion(this MediaItem mediaItem) => |
|
|
|
public static MediaVersion GetHeadVersion(this MediaItem mediaItem) => |
|
|
|
mediaItem switch |
|
|
|
mediaItem switch |
|
|
|
{ |
|
|
|
{ |
|
|
|