diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index fc07f67788..083ec0cb4c 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -100,12 +100,7 @@ namespace MediaBrowser.Controller.Entities.Movies
/// System.String.
protected override string CreateUserDataKey()
{
- var key = this.GetProviderId(MetadataProviders.Tmdb);
-
- if (string.IsNullOrWhiteSpace(key))
- {
- key = this.GetProviderId(MetadataProviders.Imdb);
- }
+ var key = GetMovieUserDataKey(this);
if (string.IsNullOrWhiteSpace(key))
{
@@ -115,6 +110,18 @@ namespace MediaBrowser.Controller.Entities.Movies
return key;
}
+ public static string GetMovieUserDataKey(BaseItem movie)
+ {
+ var key = movie.GetProviderId(MetadataProviders.Tmdb);
+
+ if (string.IsNullOrWhiteSpace(key))
+ {
+ key = movie.GetProviderId(MetadataProviders.Imdb);
+ }
+
+ return key;
+ }
+
protected override async Task RefreshedOwnedItems(MetadataRefreshOptions options, List fileSystemChildren, CancellationToken cancellationToken)
{
var hasChanges = await base.RefreshedOwnedItems(options, fileSystemChildren, cancellationToken).ConfigureAwait(false);
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index b54a7aaeeb..14944d36fa 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.LiveTv;
@@ -17,6 +18,15 @@ namespace MediaBrowser.Controller.LiveTv
/// System.String.
protected override string CreateUserDataKey()
{
+ if (IsMovie)
+ {
+ var key = Movie.GetMovieUserDataKey(this);
+
+ if (!string.IsNullOrWhiteSpace(key))
+ {
+ return key;
+ }
+ }
return GetClientTypeName() + "-" + Name;
}
diff --git a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
index aaaff6bdb9..960f8054a1 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvVideoRecording.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
@@ -40,6 +41,16 @@ namespace MediaBrowser.Controller.LiveTv
/// System.String.
protected override string CreateUserDataKey()
{
+ if (IsMovie)
+ {
+ var key = Movie.GetMovieUserDataKey(this);
+
+ if (!string.IsNullOrWhiteSpace(key))
+ {
+ return key;
+ }
+ }
+
var name = GetClientTypeName();
if (!string.IsNullOrEmpty(ProgramId))
diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index 355597fcf1..ebb5037d04 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -495,10 +495,23 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
var info = GetProgramInfoFromCache(timer.ChannelId, timer.ProgramId);
var recordPath = RecordingPath;
+
if (info.IsMovie)
{
recordPath = Path.Combine(recordPath, "Movies", _fileSystem.GetValidFilename(info.Name));
}
+ else if (info.IsSeries)
+ {
+ recordPath = Path.Combine(recordPath, "Series", _fileSystem.GetValidFilename(info.Name));
+ }
+ else if (info.IsKids)
+ {
+ recordPath = Path.Combine(recordPath, "Kids", _fileSystem.GetValidFilename(info.Name));
+ }
+ else if (info.IsSports)
+ {
+ recordPath = Path.Combine(recordPath, "Sports", _fileSystem.GetValidFilename(info.Name));
+ }
else
{
recordPath = Path.Combine(recordPath, "TV", _fileSystem.GetValidFilename(info.Name));
diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
index 09a5a3912b..1b8cd2e618 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/RecordingHelper.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.LiveTv;
using System;
+using System.Globalization;
namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
@@ -36,26 +37,33 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
if (info == null)
{
- return (timer.ProgramId + ".ts");
+ return timer.ProgramId + ".ts";
}
- var fancyName = info.Name;
- if (info.ProductionYear != null)
+
+ var name = info.Name;
+
+ if (info.IsSeries)
{
- fancyName += "_(" + info.ProductionYear + ")";
+ if (info.SeasonNumber.HasValue && info.EpisodeNumber.HasValue)
+ {
+ name += string.Format(" S{0}E{1}", info.SeasonNumber.Value.ToString("00", CultureInfo.InvariantCulture), info.EpisodeNumber.Value.ToString("00", CultureInfo.InvariantCulture));
+ }
+ else if (info.OriginalAirDate.HasValue)
+ {
+ name += " " + info.OriginalAirDate.Value.ToString("yyyy-MM-dd");
+ }
+ else if (!string.IsNullOrWhiteSpace(info.EpisodeTitle))
+ {
+ name += " " + info.EpisodeTitle;
+ }
}
- if (info.IsSeries && !string.IsNullOrWhiteSpace(info.EpisodeTitle))
+
+ else if (info.ProductionYear != null)
{
- fancyName += "_" + info.EpisodeTitle.Replace("Season: ", "S").Replace(" Episode: ", "E");
+ name += " (" + info.ProductionYear + ")";
}
- if (info.IsHD ?? false)
- {
- fancyName += "_HD";
- }
- if (info.OriginalAirDate != null)
- {
- fancyName += "_" + info.OriginalAirDate.Value.ToString("yyyy-MM-dd");
- }
- return fancyName + ".ts";
+
+ return name + ".ts";
}
}
}