rework tuner channel id

This commit is contained in:
Luke Pulverenti 2017-03-26 00:21:32 -04:00
parent ce0547abde
commit e6178a65f9
4 changed files with 50 additions and 32 deletions

View File

@ -498,11 +498,17 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
if (!string.IsNullOrWhiteSpace(tunerChannel.TunerChannelId)) if (!string.IsNullOrWhiteSpace(tunerChannel.TunerChannelId))
{ {
var mappedTunerChannelId = GetMappedChannel(tunerChannel.TunerChannelId, mappings); var tunerChannelId = tunerChannel.TunerChannelId;
if (tunerChannelId.IndexOf(".json.schedulesdirect.org", StringComparison.OrdinalIgnoreCase) != -1)
{
tunerChannelId = tunerChannelId.Replace(".json.schedulesdirect.org", string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart('I');
}
var mappedTunerChannelId = GetMappedChannel(tunerChannelId, mappings);
if (string.IsNullOrWhiteSpace(mappedTunerChannelId)) if (string.IsNullOrWhiteSpace(mappedTunerChannelId))
{ {
mappedTunerChannelId = tunerChannel.TunerChannelId; mappedTunerChannelId = tunerChannelId;
} }
var channel = epgChannels.FirstOrDefault(i => string.Equals(mappedTunerChannelId, i.Id, StringComparison.OrdinalIgnoreCase)); var channel = epgChannels.FirstOrDefault(i => string.Equals(mappedTunerChannelId, i.Id, StringComparison.OrdinalIgnoreCase));
@ -644,8 +650,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
public Task<string> CreateTimer(TimerInfo timer, CancellationToken cancellationToken) public Task<string> CreateTimer(TimerInfo timer, CancellationToken cancellationToken)
{ {
var existingTimer = _timerProvider.GetAll() var existingTimer = string.IsNullOrWhiteSpace(timer.ProgramId) ?
.FirstOrDefault(i => string.Equals(timer.ProgramId, i.ProgramId, StringComparison.OrdinalIgnoreCase)); null :
_timerProvider.GetTimerByProgramId(timer.ProgramId);
if (existingTimer != null) if (existingTimer != null)
{ {
@ -724,10 +731,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
return true; return true;
} }
//if (string.Equals(i.SeriesId, info.SeriesId, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(info.SeriesId)) if (string.Equals(i.SeriesId, info.SeriesId, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(info.SeriesId))
//{ {
// return true; return true;
//} }
return false; return false;
}) })
@ -740,7 +747,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
timer.SeriesTimerId = info.Id; timer.SeriesTimerId = info.Id;
timer.IsManual = true; timer.IsManual = true;
_timerProvider.AddOrUpdate(timer); _timerProvider.AddOrUpdate(timer, false);
} }
await UpdateTimersForSeriesTimer(epgData, info, true, false).ConfigureAwait(false); await UpdateTimersForSeriesTimer(epgData, info, true, false).ConfigureAwait(false);
@ -2340,6 +2347,13 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{ {
var existingTimer = _timerProvider.GetTimer(timer.Id); var existingTimer = _timerProvider.GetTimer(timer.Id);
if (existingTimer == null)
{
existingTimer = string.IsNullOrWhiteSpace(timer.ProgramId)
? null
: _timerProvider.GetTimerByProgramId(timer.ProgramId);
}
if (existingTimer == null) if (existingTimer == null)
{ {
if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer)) if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer))
@ -2354,9 +2368,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
} }
else else
{ {
// Only update if not currently active // Only update if not currently active - test both new timer and existing in case Id's are different
// Id's could be different if the timer was created manually prior to series timer creation
ActiveRecordingInfo activeRecordingInfo; ActiveRecordingInfo activeRecordingInfo;
if (!_activeRecordings.TryGetValue(timer.Id, out activeRecordingInfo)) if (!_activeRecordings.TryGetValue(timer.Id, out activeRecordingInfo) && !_activeRecordings.TryGetValue(existingTimer.Id, out activeRecordingInfo))
{ {
UpdateExistingTimerWithNewMetadata(existingTimer, timer); UpdateExistingTimerWithNewMetadata(existingTimer, timer);

View File

@ -166,5 +166,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
{ {
return GetAll().FirstOrDefault(r => string.Equals(r.Id, id, StringComparison.OrdinalIgnoreCase)); return GetAll().FirstOrDefault(r => string.Equals(r.Id, id, StringComparison.OrdinalIgnoreCase));
} }
public TimerInfo GetTimerByProgramId(string programId)
{
return GetAll().FirstOrDefault(r => string.Equals(r.ProgramId, programId, StringComparison.OrdinalIgnoreCase));
}
} }
} }

View File

@ -1078,25 +1078,28 @@ namespace Emby.Server.Implementations.LiveTv
var channel = GetInternalChannel(program.ChannelId); var channel = GetInternalChannel(program.ChannelId);
var channelUserdata = _userDataManager.GetUserData(userId, channel); if (channel != null)
{
var channelUserdata = _userDataManager.GetUserData(userId, channel);
if (channelUserdata.Likes ?? false) if (channelUserdata.Likes ?? false)
{ {
score += 2; score += 2;
} }
else if (!(channelUserdata.Likes ?? true)) else if (!(channelUserdata.Likes ?? true))
{ {
score -= 2; score -= 2;
} }
if (channelUserdata.IsFavorite) if (channelUserdata.IsFavorite)
{ {
score += 3; score += 3;
} }
if (factorChannelWatchCount) if (factorChannelWatchCount)
{ {
score += channelUserdata.PlayCount; score += channelUserdata.PlayCount;
}
} }
return score; return score;

View File

@ -144,11 +144,6 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
channel.TunerChannelId = string.IsNullOrWhiteSpace(tvgId) ? channelId : tvgId; channel.TunerChannelId = string.IsNullOrWhiteSpace(tvgId) ? channelId : tvgId;
if (!string.IsNullOrWhiteSpace(channel.TunerChannelId) && channel.TunerChannelId.IndexOf(".json.schedulesdirect.org", StringComparison.OrdinalIgnoreCase) != -1)
{
channel.TunerChannelId = channel.TunerChannelId.Replace(".json.schedulesdirect.org", string.Empty, StringComparison.OrdinalIgnoreCase).TrimStart('I');
}
var channelIdValues = new List<string>(); var channelIdValues = new List<string>();
if (!string.IsNullOrWhiteSpace(channelId)) if (!string.IsNullOrWhiteSpace(channelId))
{ {