update embytv
This commit is contained in:
parent
fe430acfc9
commit
671b861193
|
@ -58,7 +58,7 @@ namespace MediaBrowser.Common.ScheduledTasks
|
|||
{
|
||||
if (isApplicationStartup)
|
||||
{
|
||||
triggerDate = DateTime.UtcNow.AddMinutes(2);
|
||||
triggerDate = DateTime.UtcNow.AddMinutes(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -364,7 +364,47 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||
return Task.FromResult((IEnumerable<SeriesTimerInfo>)_seriesTimerProvider.GetAll());
|
||||
}
|
||||
|
||||
public async Task RefreshSeriesTimers(CancellationToken cancellationToken, IProgress<double> progress)
|
||||
{
|
||||
var timers = await GetSeriesTimersAsync(cancellationToken).ConfigureAwait(false);
|
||||
|
||||
List<ChannelInfo> channels = null;
|
||||
|
||||
foreach (var timer in timers)
|
||||
{
|
||||
List<ProgramInfo> epgData;
|
||||
|
||||
if (timer.RecordAnyChannel)
|
||||
{
|
||||
if (channels == null)
|
||||
{
|
||||
channels = (await GetChannelsAsync(true, CancellationToken.None).ConfigureAwait(false)).ToList();
|
||||
}
|
||||
var channelIds = channels.Select(i => i.Id).ToList();
|
||||
epgData = GetEpgDataForChannels(channelIds);
|
||||
}
|
||||
else
|
||||
{
|
||||
epgData = GetEpgDataForChannel(timer.ChannelId);
|
||||
}
|
||||
await UpdateTimersForSeriesTimer(epgData, timer).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<ProgramInfo>> GetProgramsAsync(string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await GetProgramsAsyncInternal(channelId, startDateUtc, endDateUtc, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.ErrorException("Error getting programs", ex);
|
||||
return GetEpgDataForChannel(channelId).Where(i => i.StartDate <= endDateUtc && i.EndDate >= startDateUtc);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<IEnumerable<ProgramInfo>> GetProgramsAsyncInternal(string channelId, DateTime startDateUtc, DateTime endDateUtc, CancellationToken cancellationToken)
|
||||
{
|
||||
var channels = await GetChannelsAsync(true, cancellationToken).ConfigureAwait(false);
|
||||
var channel = channels.First(i => string.Equals(i.Id, channelId, StringComparison.OrdinalIgnoreCase));
|
||||
|
@ -373,6 +413,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||
{
|
||||
var programs = await provider.Item1.GetProgramsAsync(provider.Item2, channel.Number, startDateUtc, endDateUtc, cancellationToken)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
var list = programs.ToList();
|
||||
|
||||
// Replace the value that came from the provider with a normalized value
|
||||
|
@ -483,7 +524,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||
var timer = e.Argument;
|
||||
|
||||
_logger.Info("Recording timer fired.");
|
||||
|
||||
|
||||
try
|
||||
{
|
||||
var cancellationTokenSource = new CancellationTokenSource();
|
||||
|
@ -500,14 +541,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||
catch (Exception ex)
|
||||
{
|
||||
_logger.ErrorException("Error recording stream", ex);
|
||||
|
||||
if (DateTime.UtcNow < timer.EndDate)
|
||||
{
|
||||
const int retryIntervalSeconds = 60;
|
||||
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
|
||||
|
||||
_timerProvider.StartTimer(timer, TimeSpan.FromSeconds(retryIntervalSeconds));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -626,15 +659,31 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||
_logger.ErrorException("Error recording", ex);
|
||||
recording.Status = RecordingStatus.Error;
|
||||
}
|
||||
finally
|
||||
{
|
||||
CancellationTokenSource removed;
|
||||
_activeRecordings.TryRemove(timer.Id, out removed);
|
||||
}
|
||||
|
||||
recording.DateLastUpdated = DateTime.UtcNow;
|
||||
_recordingProvider.Update(recording);
|
||||
_timerProvider.Delete(timer);
|
||||
_logger.Info("Recording was a success");
|
||||
|
||||
if (recording.Status == RecordingStatus.Completed)
|
||||
{
|
||||
OnSuccessfulRecording(recording);
|
||||
_timerProvider.Delete(timer);
|
||||
}
|
||||
else if (DateTime.UtcNow < timer.EndDate)
|
||||
{
|
||||
const int retryIntervalSeconds = 60;
|
||||
_logger.Info("Retrying recording in {0} seconds.", retryIntervalSeconds);
|
||||
|
||||
_timerProvider.StartTimer(timer, TimeSpan.FromSeconds(retryIntervalSeconds));
|
||||
}
|
||||
else
|
||||
{
|
||||
_timerProvider.Delete(timer);
|
||||
_recordingProvider.Delete(recording);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -216,20 +216,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||
// Helper.logger.Info("Modifyin channel " + channel.Number);
|
||||
if (_channelPair.ContainsKey(channel.Number))
|
||||
{
|
||||
string channelName;
|
||||
if (_channelPair[channel.Number].logo != null)
|
||||
{
|
||||
channel.ImageUrl = _channelPair[channel.Number].logo.URL;
|
||||
channel.HasImage = true;
|
||||
}
|
||||
if (_channelPair[channel.Number].affiliate != null)
|
||||
{
|
||||
channelName = _channelPair[channel.Number].affiliate;
|
||||
}
|
||||
else
|
||||
{
|
||||
channelName = _channelPair[channel.Number].name;
|
||||
}
|
||||
string channelName = _channelPair[channel.Number].name;
|
||||
channel.Name = channelName;
|
||||
}
|
||||
else
|
||||
|
@ -245,8 +237,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||
ScheduleDirect.ProgramDetails details)
|
||||
{
|
||||
//_logger.Debug("Show type is: " + (details.showType ?? "No ShowType"));
|
||||
DateTime startAt = DateTime.ParseExact(programInfo.airDateTime, "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'",
|
||||
CultureInfo.InvariantCulture);
|
||||
DateTime startAt = GetDate(programInfo.airDateTime);
|
||||
DateTime endAt = startAt.AddSeconds(programInfo.duration);
|
||||
ProgramAudio audioType = ProgramAudio.Stereo;
|
||||
|
||||
|
@ -369,6 +360,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||
return info;
|
||||
}
|
||||
|
||||
private DateTime GetDate(string value)
|
||||
{
|
||||
return DateTime.ParseExact(value, "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'",
|
||||
CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
private string GetProgramLogo(string apiUrl, ScheduleDirect.ShowImages images)
|
||||
{
|
||||
string url = "";
|
||||
|
@ -408,7 +405,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||
{
|
||||
imageIdString += "\"" + i.Substring(0, 10) + "\",";
|
||||
}
|
||||
;
|
||||
});
|
||||
imageIdString = imageIdString.TrimEnd(',') + "]";
|
||||
|
||||
|
@ -979,4 +975,4 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1082,6 +1082,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|||
await CleanDatabaseInternal(newChannelIdList, new[] { typeof(LiveTvChannel).Name }, progress, cancellationToken).ConfigureAwait(false);
|
||||
await CleanDatabaseInternal(newProgramIdList, new[] { typeof(LiveTvProgram).Name }, progress, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
var coreService = _services.OfType<EmbyTV.EmbyTV>().FirstOrDefault();
|
||||
|
||||
if (coreService != null)
|
||||
{
|
||||
await coreService.RefreshSeriesTimers(cancellationToken, new Progress<double>()).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
// Load these now which will prefetch metadata
|
||||
var dtoOptions = new DtoOptions();
|
||||
dtoOptions.Fields.Remove(ItemFields.SyncInfo);
|
||||
|
|
Loading…
Reference in New Issue
Block a user