diff --git a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
index 0a1735c238..b54a7aaeeb 100644
--- a/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
+++ b/MediaBrowser.Controller/LiveTv/LiveTvProgram.cs
@@ -60,12 +60,6 @@ namespace MediaBrowser.Controller.LiveTv
/// true if this instance is repeat; otherwise, false.
public bool IsRepeat { get; set; }
- ///
- /// Gets or sets the external series identifier.
- ///
- /// The external series identifier.
- public string ExternalSeriesId { get; set; }
-
///
/// Gets or sets the episode title.
///
diff --git a/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs b/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs
index 70c6892ef2..4b88e42f31 100644
--- a/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs
+++ b/MediaBrowser.Model/LiveTv/SeriesTimerInfoDto.cs
@@ -48,12 +48,6 @@ namespace MediaBrowser.Model.LiveTv
/// The image tags.
public Dictionary ImageTags { get; set; }
- ///
- /// Gets or sets the external series identifier.
- ///
- /// The external series identifier.
- public string ExternalSeriesId { get; set; }
-
///
/// Gets a value indicating whether this instance has primary image.
///
diff --git a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
index 177a64ddc5..7273ac88ec 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs
@@ -251,14 +251,50 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
{
info.Id = Guid.NewGuid().ToString("N");
- await UpdateTimersForSeriesTimer(info).ConfigureAwait(false);
+ List epgData;
+ if (info.RecordAnyChannel)
+ {
+ var channels = await GetChannelsAsync(true, CancellationToken.None).ConfigureAwait(false);
+ var channelIds = channels.Select(i => i.Id).ToList();
+ epgData = GetEpgDataForChannels(channelIds);
+ }
+ else
+ {
+ epgData = GetEpgDataForChannel(info.ChannelId);
+ }
+
+ // populate info.seriesID
+ var program = epgData.FirstOrDefault(i => string.Equals(i.Id, info.ProgramId, StringComparison.OrdinalIgnoreCase));
+
+ if (program != null)
+ {
+ info.SeriesId = program.SeriesId;
+ }
+ else
+ {
+ throw new InvalidOperationException("SeriesId for program not found");
+ }
+
_seriesTimerProvider.Add(info);
+ await UpdateTimersForSeriesTimer(epgData, info).ConfigureAwait(false);
}
public async Task UpdateSeriesTimerAsync(SeriesTimerInfo info, CancellationToken cancellationToken)
{
_seriesTimerProvider.Update(info);
- await UpdateTimersForSeriesTimer(info).ConfigureAwait(false);
+ List epgData;
+ if (info.RecordAnyChannel)
+ {
+ var channels = await GetChannelsAsync(true, CancellationToken.None).ConfigureAwait(false);
+ var channelIds = channels.Select(i => i.Id).ToList();
+ epgData = GetEpgDataForChannels(channelIds);
+ }
+ else
+ {
+ epgData = GetEpgDataForChannel(info.ChannelId);
+ }
+
+ await UpdateTimersForSeriesTimer(epgData, info).ConfigureAwait(false);
}
public Task UpdateTimerAsync(TimerInfo info, CancellationToken cancellationToken)
@@ -597,20 +633,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
return _config.GetConfiguration("livetv");
}
- private async Task UpdateTimersForSeriesTimer(SeriesTimerInfo seriesTimer)
+ private async Task UpdateTimersForSeriesTimer(List epgData, SeriesTimerInfo seriesTimer)
{
- List epgData;
- if (seriesTimer.RecordAnyChannel)
- {
- var channels = await GetChannelsAsync(true, CancellationToken.None).ConfigureAwait(false);
- var channelIds = channels.Select(i => i.Id).ToList();
- epgData = GetEpgDataForChannels(channelIds);
- }
- else
- {
- epgData = GetEpgDataForChannel(seriesTimer.ChannelId);
- }
-
var newTimers = GetTimersForSeries(seriesTimer, epgData, _recordingProvider.GetAll()).ToList();
var existingTimers = _timerProvider.GetAll()
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 2587b10059..9ffd8a500e 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -105,8 +105,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
ExternalProgramId = info.ProgramId,
ServiceName = service.Name,
ChannelName = channelName,
- ServerId = _appHost.SystemId,
- ExternalSeriesId = info.SeriesId
+ ServerId = _appHost.SystemId
};
if (!string.IsNullOrEmpty(info.ChannelId))
@@ -377,8 +376,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
RecordNewOnly = dto.RecordNewOnly,
ProgramId = dto.ExternalProgramId,
ChannelId = dto.ExternalChannelId,
- Id = dto.ExternalId,
- SeriesId = dto.ExternalSeriesId
+ Id = dto.ExternalId
};
// Convert internal server id's to external tv provider id's
diff --git a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
index 9065a8ac2a..782473bea6 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs
@@ -627,7 +627,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
item.ProductionYear = info.ProductionYear;
item.PremiereDate = item.PremiereDate ?? info.OriginalAirDate;
- item.ExternalSeriesId = info.SeriesId;
if (isNew)
{
@@ -1787,8 +1786,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
ImagePath = program.ProviderImagePath,
ImageUrl = program.ProviderImageUrl,
Name = program.Name,
- OfficialRating = program.OfficialRating,
- SeriesId = program.ExternalSeriesId
+ OfficialRating = program.OfficialRating
};
}
@@ -1831,7 +1829,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv
info.Overview = program.Overview;
info.ProgramId = programDto.Id;
info.ExternalProgramId = program.ExternalId;
- info.ExternalSeriesId = program.ExternalSeriesId;
if (program.EndDate.HasValue)
{