mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update series timers
This commit is contained in:
parent
8a4f86aefe
commit
2acd1665c9
@ -336,10 +336,16 @@ namespace MediaBrowser.Api.Playback
|
|||||||
var maxBitrate = clientMaxBitrate;
|
var maxBitrate = clientMaxBitrate;
|
||||||
var remoteClientMaxBitrate = _config.Configuration.RemoteClientBitrateLimit;
|
var remoteClientMaxBitrate = _config.Configuration.RemoteClientBitrateLimit;
|
||||||
|
|
||||||
if (remoteClientMaxBitrate > 0 && !_networkManager.IsInLocalNetwork(Request.RemoteIp))
|
if (remoteClientMaxBitrate > 0)
|
||||||
|
{
|
||||||
|
var isInLocalNetwork = _networkManager.IsInLocalNetwork(Request.RemoteIp);
|
||||||
|
|
||||||
|
Logger.Info("RemoteClientBitrateLimit: {0}, RemoteIp: {1}, IsInLocalNetwork: {2}", remoteClientMaxBitrate, Request.RemoteIp, isInLocalNetwork);
|
||||||
|
if (!isInLocalNetwork)
|
||||||
{
|
{
|
||||||
maxBitrate = Math.Min(maxBitrate ?? remoteClientMaxBitrate, remoteClientMaxBitrate);
|
maxBitrate = Math.Min(maxBitrate ?? remoteClientMaxBitrate, remoteClientMaxBitrate);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return maxBitrate;
|
return maxBitrate;
|
||||||
}
|
}
|
||||||
|
@ -130,6 +130,33 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
|||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<ChannelInfo> _channelCache = null;
|
private List<ChannelInfo> _channelCache = null;
|
||||||
private async Task<IEnumerable<ChannelInfo>> GetChannelsAsync(bool enableCache, CancellationToken cancellationToken)
|
private async Task<IEnumerable<ChannelInfo>> GetChannelsAsync(bool enableCache, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
@ -237,8 +237,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||||||
ScheduleDirect.ProgramDetails details)
|
ScheduleDirect.ProgramDetails details)
|
||||||
{
|
{
|
||||||
//_logger.Debug("Show type is: " + (details.showType ?? "No ShowType"));
|
//_logger.Debug("Show type is: " + (details.showType ?? "No ShowType"));
|
||||||
DateTime startAt = DateTime.ParseExact(programInfo.airDateTime, "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'",
|
DateTime startAt = GetDate(programInfo.airDateTime);
|
||||||
CultureInfo.InvariantCulture);
|
|
||||||
DateTime endAt = startAt.AddSeconds(programInfo.duration);
|
DateTime endAt = startAt.AddSeconds(programInfo.duration);
|
||||||
ProgramAudio audioType = ProgramAudio.Stereo;
|
ProgramAudio audioType = ProgramAudio.Stereo;
|
||||||
|
|
||||||
@ -361,6 +360,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DateTime GetDate(string value)
|
||||||
|
{
|
||||||
|
var date = DateTime.ParseExact(value, "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'", CultureInfo.InvariantCulture);
|
||||||
|
|
||||||
|
if (date.Kind != DateTimeKind.Utc)
|
||||||
|
{
|
||||||
|
date = DateTime.SpecifyKind(date, DateTimeKind.Utc);
|
||||||
|
}
|
||||||
|
return date;
|
||||||
|
}
|
||||||
|
|
||||||
private string GetProgramLogo(string apiUrl, ScheduleDirect.ShowImages images)
|
private string GetProgramLogo(string apiUrl, ScheduleDirect.ShowImages images)
|
||||||
{
|
{
|
||||||
string url = "";
|
string url = "";
|
||||||
@ -400,7 +410,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
|||||||
{
|
{
|
||||||
imageIdString += "\"" + i.Substring(0, 10) + "\",";
|
imageIdString += "\"" + i.Substring(0, 10) + "\",";
|
||||||
}
|
}
|
||||||
;
|
|
||||||
});
|
});
|
||||||
imageIdString = imageIdString.TrimEnd(',') + "]";
|
imageIdString = imageIdString.TrimEnd(',') + "]";
|
||||||
|
|
||||||
|
@ -1082,6 +1082,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|||||||
await CleanDatabaseInternal(newChannelIdList, new[] { typeof(LiveTvChannel).Name }, progress, cancellationToken).ConfigureAwait(false);
|
await CleanDatabaseInternal(newChannelIdList, new[] { typeof(LiveTvChannel).Name }, progress, cancellationToken).ConfigureAwait(false);
|
||||||
await CleanDatabaseInternal(newProgramIdList, new[] { typeof(LiveTvProgram).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
|
// Load these now which will prefetch metadata
|
||||||
var dtoOptions = new DtoOptions();
|
var dtoOptions = new DtoOptions();
|
||||||
dtoOptions.Fields.Remove(ItemFields.SyncInfo);
|
dtoOptions.Fields.Remove(ItemFields.SyncInfo);
|
||||||
@ -1155,7 +1162,17 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|||||||
|
|
||||||
foreach (var program in channelPrograms)
|
foreach (var program in channelPrograms)
|
||||||
{
|
{
|
||||||
|
if (program.StartDate.Kind != DateTimeKind.Utc)
|
||||||
|
{
|
||||||
|
_logger.Error("{0} returned StartDate.DateTimeKind.{1} instead of UTC for program {2}", service.Name, program.StartDate.Kind.ToString(), program.Name);
|
||||||
|
}
|
||||||
|
else if (program.EndDate.Kind != DateTimeKind.Utc)
|
||||||
|
{
|
||||||
|
_logger.Error("{0} returned EndDate.DateTimeKind.{1} instead of UTC for program {2}", service.Name, program.EndDate.Kind.ToString(), program.Name);
|
||||||
|
}
|
||||||
|
|
||||||
var programItem = await GetProgram(program, channelId, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false);
|
var programItem = await GetProgram(program, channelId, currentChannel.ChannelType, service.Name, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
programs.Add(programItem.Id);
|
programs.Add(programItem.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user