diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
index 77b1f4c542..79ee27df62 100644
--- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
@@ -1,6 +1,5 @@
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Persistence;
using MediaBrowser.Model.Dto;
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 47b5247c37..c887f69779 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.Controller.Entities
///
/// Class BaseItem
///
- public abstract class BaseItem : IHasProviderIds, IBaseItem, IHasImages, IHasUserData
+ public abstract class BaseItem : IHasProviderIds, ILibraryItem, IHasImages, IHasUserData
{
protected BaseItem()
{
@@ -504,28 +504,6 @@ namespace MediaBrowser.Controller.Entities
/// The people.
public List People { get; set; }
- ///
- /// Override this if you need to combine/collapse person information
- ///
- /// All people.
- [IgnoreDataMember]
- public virtual IEnumerable AllPeople
- {
- get { return People; }
- }
-
- [IgnoreDataMember]
- public virtual IEnumerable AllStudios
- {
- get { return Studios; }
- }
-
- [IgnoreDataMember]
- public virtual IEnumerable AllGenres
- {
- get { return Genres; }
- }
-
///
/// Gets or sets the studios.
///
diff --git a/MediaBrowser.Controller/Entities/IBaseItem.cs b/MediaBrowser.Controller/Entities/ILibraryItem.cs
similarity index 94%
rename from MediaBrowser.Controller/Entities/IBaseItem.cs
rename to MediaBrowser.Controller/Entities/ILibraryItem.cs
index 83ccd55b0a..b2f39608f3 100644
--- a/MediaBrowser.Controller/Entities/IBaseItem.cs
+++ b/MediaBrowser.Controller/Entities/ILibraryItem.cs
@@ -5,7 +5,7 @@ namespace MediaBrowser.Controller.Entities
///
/// Interface ILibraryItem
///
- public interface IBaseItem
+ public interface ILibraryItem
{
///
/// Gets the name.
diff --git a/MediaBrowser.Controller/Entities/TV/Episode.cs b/MediaBrowser.Controller/Entities/TV/Episode.cs
index 42897e09fe..61bf14543f 100644
--- a/MediaBrowser.Controller/Entities/TV/Episode.cs
+++ b/MediaBrowser.Controller/Entities/TV/Episode.cs
@@ -122,48 +122,6 @@ namespace MediaBrowser.Controller.Entities.TV
return base.GetUserDataKey();
}
- ///
- /// Override this if you need to combine/collapse person information
- ///
- /// All people.
- [IgnoreDataMember]
- public override IEnumerable AllPeople
- {
- get
- {
- if (People == null) return Series != null ? Series.People : People;
- return Series != null && Series.People != null ? People.Concat(Series.People) : base.AllPeople;
- }
- }
-
- ///
- /// Gets all genres.
- ///
- /// All genres.
- [IgnoreDataMember]
- public override IEnumerable AllGenres
- {
- get
- {
- if (Genres == null) return Series != null ? Series.Genres : Genres;
- return Series != null && Series.Genres != null ? Genres.Concat(Series.Genres) : base.AllGenres;
- }
- }
-
- ///
- /// Gets all studios.
- ///
- /// All studios.
- [IgnoreDataMember]
- public override IEnumerable AllStudios
- {
- get
- {
- if (Studios == null) return Series != null ? Series.Studios : Studios;
- return Series != null && Series.Studios != null ? Studios.Concat(Series.Studios) : base.AllStudios;
- }
- }
-
///
/// Our rating comes from our series
///
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index bb5e97621b..af3857f178 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -99,7 +99,7 @@
-
+
diff --git a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs b/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs
index 389df2248f..c1161f4ec1 100644
--- a/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs
+++ b/MediaBrowser.Model/LiveTv/RecordingInfoDto.cs
@@ -107,7 +107,13 @@ namespace MediaBrowser.Model.LiveTv
///
/// The name of the status.
public string StatusName { get; set; }
-
+
+ ///
+ /// Gets or sets the completion percentage.
+ ///
+ /// The completion percentage.
+ public double? CompletionPercentage { get; set; }
+
///
/// Genre of the program.
///
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
index ad9f769eb1..55fa47ff77 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -231,6 +231,18 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}).ToList()
};
+ if (info.Status == RecordingStatus.InProgress)
+ {
+ var now = DateTime.UtcNow.Ticks;
+ var start = info.StartDate.Ticks;
+ var end = info.EndDate.Ticks;
+
+ var pct = now - start;
+ pct /= end;
+ pct *= 100;
+ dto.CompletionPercentage = pct;
+ }
+
var imageTag = GetImageTag(recording);
if (imageTag.HasValue)