@ -498,11 +498,17 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
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 ) )
{
mappedTunerChannelId = tunerChannel . TunerChannelId ;
mappedTunerChannelId = tunerChannel Id;
}
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 )
{
var existingTimer = _timerProvider . GetAll ( )
. FirstOrDefault ( i = > string . Equals ( timer . ProgramId , i . ProgramId , StringComparison . OrdinalIgnoreCase ) ) ;
var existingTimer = string . IsNullOrWhiteSpace ( timer . ProgramId ) ?
null :
_timerProvider . GetTimerByProgramId ( timer . ProgramId ) ;
if ( existingTimer ! = null )
{
@ -724,10 +731,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
return true ;
}
//if (string.Equals(i.SeriesId, info.SeriesId, StringComparison.OrdinalIgnoreCase) && !string.IsNullOrWhiteSpace(info.SeriesId) )
// {
// return true;
// }
if ( string . Equals ( i . SeriesId , info . SeriesId , StringComparison . OrdinalIgnoreCase ) & & ! string . IsNullOrWhiteSpace ( info . SeriesId ) )
{
return true ;
}
return false ;
} )
@ -740,7 +747,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
timer . SeriesTimerId = info . Id ;
timer . IsManual = true ;
_timerProvider . AddOrUpdate ( timer );
_timerProvider . AddOrUpdate ( timer , 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 ) ;
if ( existingTimer = = null )
{
existingTimer = string . IsNullOrWhiteSpace ( timer . ProgramId )
? null
: _timerProvider . GetTimerByProgramId ( timer . ProgramId ) ;
}
if ( existingTimer = = null )
{
if ( ShouldCancelTimerForSeriesTimer ( seriesTimer , timer ) )
@ -2354,9 +2368,10 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
}
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 ;
if ( ! _activeRecordings . TryGetValue ( timer . Id , out activeRecordingInfo ) )
if ( ! _activeRecordings . TryGetValue ( timer . Id , out activeRecordingInfo ) & & ! _activeRecordings . TryGetValue ( existingTimer . Id , out activeRecordingInfo ) )
{
UpdateExistingTimerWithNewMetadata ( existingTimer , timer ) ;