mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-07-09 15:20:34 +02:00
update lists
This commit is contained in:
parent
63129b467c
commit
d3583c1460
|
@ -2329,7 +2329,8 @@ namespace MediaBrowser.Api.Playback
|
||||||
state.TargetRefFrames,
|
state.TargetRefFrames,
|
||||||
state.TargetVideoStreamCount,
|
state.TargetVideoStreamCount,
|
||||||
state.TargetAudioStreamCount,
|
state.TargetAudioStreamCount,
|
||||||
state.TargetVideoCodecTag);
|
state.TargetVideoCodecTag,
|
||||||
|
state.IsTargetAVC);
|
||||||
|
|
||||||
if (mediaProfile != null)
|
if (mediaProfile != null)
|
||||||
{
|
{
|
||||||
|
@ -2547,7 +2548,8 @@ namespace MediaBrowser.Api.Playback
|
||||||
state.TargetRefFrames,
|
state.TargetRefFrames,
|
||||||
state.TargetVideoStreamCount,
|
state.TargetVideoStreamCount,
|
||||||
state.TargetAudioStreamCount,
|
state.TargetAudioStreamCount,
|
||||||
state.TargetVideoCodecTag
|
state.TargetVideoCodecTag,
|
||||||
|
state.IsTargetAVC
|
||||||
|
|
||||||
).FirstOrDefault() ?? string.Empty;
|
).FirstOrDefault() ?? string.Empty;
|
||||||
}
|
}
|
||||||
|
|
|
@ -516,5 +516,18 @@ namespace MediaBrowser.Api.Playback
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool? IsTargetAVC
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (Request.Static)
|
||||||
|
{
|
||||||
|
return VideoStream == null ? null : VideoStream.IsAVC;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,6 +154,9 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public List<Tuple<string, SortOrder>> OrderBy { get; set; }
|
public List<Tuple<string, SortOrder>> OrderBy { get; set; }
|
||||||
|
|
||||||
|
public DateTime? MinDateCreated { get; set; }
|
||||||
|
public DateTime? MinDateLastSaved { get; set; }
|
||||||
|
|
||||||
public InternalItemsQuery()
|
public InternalItemsQuery()
|
||||||
{
|
{
|
||||||
GroupByPresentationUniqueKey = true;
|
GroupByPresentationUniqueKey = true;
|
||||||
|
|
|
@ -177,7 +177,8 @@ namespace MediaBrowser.Dlna.Didl
|
||||||
streamInfo.TargetRefFrames,
|
streamInfo.TargetRefFrames,
|
||||||
streamInfo.TargetVideoStreamCount,
|
streamInfo.TargetVideoStreamCount,
|
||||||
streamInfo.TargetAudioStreamCount,
|
streamInfo.TargetAudioStreamCount,
|
||||||
streamInfo.TargetVideoCodecTag);
|
streamInfo.TargetVideoCodecTag,
|
||||||
|
streamInfo.IsTargetAVC);
|
||||||
|
|
||||||
foreach (var contentFeature in contentFeatureList)
|
foreach (var contentFeature in contentFeatureList)
|
||||||
{
|
{
|
||||||
|
@ -322,7 +323,8 @@ namespace MediaBrowser.Dlna.Didl
|
||||||
streamInfo.TargetRefFrames,
|
streamInfo.TargetRefFrames,
|
||||||
streamInfo.TargetVideoStreamCount,
|
streamInfo.TargetVideoStreamCount,
|
||||||
streamInfo.TargetAudioStreamCount,
|
streamInfo.TargetAudioStreamCount,
|
||||||
streamInfo.TargetVideoCodecTag);
|
streamInfo.TargetVideoCodecTag,
|
||||||
|
streamInfo.IsTargetAVC);
|
||||||
|
|
||||||
var filename = url.Substring(0, url.IndexOf('?'));
|
var filename = url.Substring(0, url.IndexOf('?'));
|
||||||
|
|
||||||
|
|
|
@ -540,7 +540,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
streamInfo.TargetRefFrames,
|
streamInfo.TargetRefFrames,
|
||||||
streamInfo.TargetVideoStreamCount,
|
streamInfo.TargetVideoStreamCount,
|
||||||
streamInfo.TargetAudioStreamCount,
|
streamInfo.TargetAudioStreamCount,
|
||||||
streamInfo.TargetVideoCodecTag);
|
streamInfo.TargetVideoCodecTag,
|
||||||
|
streamInfo.IsTargetAVC);
|
||||||
|
|
||||||
return list.FirstOrDefault();
|
return list.FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
|
@ -392,6 +392,19 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool? IsTargetAVC
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (Options.Static)
|
||||||
|
{
|
||||||
|
return VideoStream == null ? null : VideoStream.IsAVC;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int? TargetVideoStreamCount
|
public int? TargetVideoStreamCount
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -823,7 +823,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
state.TargetRefFrames,
|
state.TargetRefFrames,
|
||||||
state.TargetVideoStreamCount,
|
state.TargetVideoStreamCount,
|
||||||
state.TargetAudioStreamCount,
|
state.TargetAudioStreamCount,
|
||||||
state.TargetVideoCodecTag);
|
state.TargetVideoCodecTag,
|
||||||
|
state.IsTargetAVC);
|
||||||
|
|
||||||
if (mediaProfile != null)
|
if (mediaProfile != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,12 +20,15 @@ namespace MediaBrowser.Model.Dlna
|
||||||
int? refFrames,
|
int? refFrames,
|
||||||
int? numVideoStreams,
|
int? numVideoStreams,
|
||||||
int? numAudioStreams,
|
int? numAudioStreams,
|
||||||
string videoCodecTag)
|
string videoCodecTag,
|
||||||
|
bool? isAvc)
|
||||||
{
|
{
|
||||||
switch (condition.Property)
|
switch (condition.Property)
|
||||||
{
|
{
|
||||||
case ProfileConditionValue.IsAnamorphic:
|
case ProfileConditionValue.IsAnamorphic:
|
||||||
return IsConditionSatisfied(condition, isAnamorphic);
|
return IsConditionSatisfied(condition, isAnamorphic);
|
||||||
|
case ProfileConditionValue.IsAvc:
|
||||||
|
return IsConditionSatisfied(condition, isAvc);
|
||||||
case ProfileConditionValue.VideoFramerate:
|
case ProfileConditionValue.VideoFramerate:
|
||||||
return IsConditionSatisfied(condition, videoFramerate);
|
return IsConditionSatisfied(condition, videoFramerate);
|
||||||
case ProfileConditionValue.VideoLevel:
|
case ProfileConditionValue.VideoLevel:
|
||||||
|
|
|
@ -118,7 +118,8 @@ namespace MediaBrowser.Model.Dlna
|
||||||
int? refFrames,
|
int? refFrames,
|
||||||
int? numVideoStreams,
|
int? numVideoStreams,
|
||||||
int? numAudioStreams,
|
int? numAudioStreams,
|
||||||
string videoCodecTag)
|
string videoCodecTag,
|
||||||
|
bool? isAvc)
|
||||||
{
|
{
|
||||||
// first bit means Time based seek supported, second byte range seek supported (not sure about the order now), so 01 = only byte seek, 10 = time based, 11 = both, 00 = none
|
// first bit means Time based seek supported, second byte range seek supported (not sure about the order now), so 01 = only byte seek, 10 = time based, 11 = both, 00 = none
|
||||||
string orgOp = ";DLNA.ORG_OP=" + DlnaMaps.GetOrgOpValue(runtimeTicks.HasValue, isDirectStream, transcodeSeekInfo);
|
string orgOp = ";DLNA.ORG_OP=" + DlnaMaps.GetOrgOpValue(runtimeTicks.HasValue, isDirectStream, transcodeSeekInfo);
|
||||||
|
@ -159,7 +160,8 @@ namespace MediaBrowser.Model.Dlna
|
||||||
refFrames,
|
refFrames,
|
||||||
numVideoStreams,
|
numVideoStreams,
|
||||||
numAudioStreams,
|
numAudioStreams,
|
||||||
videoCodecTag);
|
videoCodecTag,
|
||||||
|
isAvc);
|
||||||
|
|
||||||
List<string> orgPnValues = new List<string>();
|
List<string> orgPnValues = new List<string>();
|
||||||
|
|
||||||
|
|
|
@ -285,7 +285,8 @@ namespace MediaBrowser.Model.Dlna
|
||||||
int? refFrames,
|
int? refFrames,
|
||||||
int? numVideoStreams,
|
int? numVideoStreams,
|
||||||
int? numAudioStreams,
|
int? numAudioStreams,
|
||||||
string videoCodecTag)
|
string videoCodecTag,
|
||||||
|
bool? isAvc)
|
||||||
{
|
{
|
||||||
container = StringHelper.TrimStart(container ?? string.Empty, '.');
|
container = StringHelper.TrimStart(container ?? string.Empty, '.');
|
||||||
|
|
||||||
|
@ -319,7 +320,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
var anyOff = false;
|
var anyOff = false;
|
||||||
foreach (ProfileCondition c in i.Conditions)
|
foreach (ProfileCondition c in i.Conditions)
|
||||||
{
|
{
|
||||||
if (!conditionProcessor.IsVideoConditionSatisfied(c, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag))
|
if (!conditionProcessor.IsVideoConditionSatisfied(c, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))
|
||||||
{
|
{
|
||||||
anyOff = true;
|
anyOff = true;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
NumAudioStreams = 16,
|
NumAudioStreams = 16,
|
||||||
NumVideoStreams = 17,
|
NumVideoStreams = 17,
|
||||||
IsSecondaryAudio = 18,
|
IsSecondaryAudio = 18,
|
||||||
VideoCodecTag = 19
|
VideoCodecTag = 19,
|
||||||
|
IsAvc = 20
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -541,6 +541,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
float? videoFramerate = videoStream == null ? null : videoStream.AverageFrameRate ?? videoStream.AverageFrameRate;
|
float? videoFramerate = videoStream == null ? null : videoStream.AverageFrameRate ?? videoStream.AverageFrameRate;
|
||||||
bool? isAnamorphic = videoStream == null ? null : videoStream.IsAnamorphic;
|
bool? isAnamorphic = videoStream == null ? null : videoStream.IsAnamorphic;
|
||||||
string videoCodecTag = videoStream == null ? null : videoStream.CodecTag;
|
string videoCodecTag = videoStream == null ? null : videoStream.CodecTag;
|
||||||
|
bool? isAvc = videoStream == null ? null : videoStream.IsAVC;
|
||||||
|
|
||||||
TransportStreamTimestamp? timestamp = videoStream == null ? TransportStreamTimestamp.None : item.Timestamp;
|
TransportStreamTimestamp? timestamp = videoStream == null ? TransportStreamTimestamp.None : item.Timestamp;
|
||||||
int? packetLength = videoStream == null ? null : videoStream.PacketLength;
|
int? packetLength = videoStream == null ? null : videoStream.PacketLength;
|
||||||
|
@ -549,7 +550,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio);
|
int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio);
|
||||||
int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video);
|
int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video);
|
||||||
|
|
||||||
if (!conditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag))
|
if (!conditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))
|
||||||
{
|
{
|
||||||
LogConditionFailure(options.Profile, "VideoCodecProfile", applyCondition, item);
|
LogConditionFailure(options.Profile, "VideoCodecProfile", applyCondition, item);
|
||||||
applyConditions = false;
|
applyConditions = false;
|
||||||
|
@ -718,6 +719,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
float? videoFramerate = videoStream == null ? null : videoStream.AverageFrameRate ?? videoStream.AverageFrameRate;
|
float? videoFramerate = videoStream == null ? null : videoStream.AverageFrameRate ?? videoStream.AverageFrameRate;
|
||||||
bool? isAnamorphic = videoStream == null ? null : videoStream.IsAnamorphic;
|
bool? isAnamorphic = videoStream == null ? null : videoStream.IsAnamorphic;
|
||||||
string videoCodecTag = videoStream == null ? null : videoStream.CodecTag;
|
string videoCodecTag = videoStream == null ? null : videoStream.CodecTag;
|
||||||
|
bool? isAvc = videoStream == null ? null : videoStream.IsAVC;
|
||||||
|
|
||||||
int? audioBitrate = audioStream == null ? null : audioStream.BitRate;
|
int? audioBitrate = audioStream == null ? null : audioStream.BitRate;
|
||||||
int? audioChannels = audioStream == null ? null : audioStream.Channels;
|
int? audioChannels = audioStream == null ? null : audioStream.Channels;
|
||||||
|
@ -733,7 +735,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
// Check container conditions
|
// Check container conditions
|
||||||
foreach (ProfileCondition i in conditions)
|
foreach (ProfileCondition i in conditions)
|
||||||
{
|
{
|
||||||
if (!conditionProcessor.IsVideoConditionSatisfied(i, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag))
|
if (!conditionProcessor.IsVideoConditionSatisfied(i, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))
|
||||||
{
|
{
|
||||||
LogConditionFailure(profile, "VideoContainerProfile", i, mediaSource);
|
LogConditionFailure(profile, "VideoContainerProfile", i, mediaSource);
|
||||||
|
|
||||||
|
@ -760,7 +762,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
bool applyConditions = true;
|
bool applyConditions = true;
|
||||||
foreach (ProfileCondition applyCondition in i.ApplyConditions)
|
foreach (ProfileCondition applyCondition in i.ApplyConditions)
|
||||||
{
|
{
|
||||||
if (!conditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag))
|
if (!conditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))
|
||||||
{
|
{
|
||||||
LogConditionFailure(profile, "VideoCodecProfile", applyCondition, mediaSource);
|
LogConditionFailure(profile, "VideoCodecProfile", applyCondition, mediaSource);
|
||||||
applyConditions = false;
|
applyConditions = false;
|
||||||
|
@ -780,7 +782,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
|
|
||||||
foreach (ProfileCondition i in conditions)
|
foreach (ProfileCondition i in conditions)
|
||||||
{
|
{
|
||||||
if (!conditionProcessor.IsVideoConditionSatisfied(i, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag))
|
if (!conditionProcessor.IsVideoConditionSatisfied(i, width, height, bitDepth, videoBitrate, videoProfile, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))
|
||||||
{
|
{
|
||||||
LogConditionFailure(profile, "VideoCodecProfile", i, mediaSource);
|
LogConditionFailure(profile, "VideoCodecProfile", i, mediaSource);
|
||||||
|
|
||||||
|
|
|
@ -676,6 +676,19 @@ namespace MediaBrowser.Model.Dlna
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool? IsTargetAVC
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (IsDirectStream)
|
||||||
|
{
|
||||||
|
return TargetVideoStream == null ? null : TargetVideoStream.IsAVC;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public int? TargetWidth
|
public int? TargetWidth
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -211,6 +211,20 @@ namespace MediaBrowser.Providers.Manager
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
var retry = !string.IsNullOrWhiteSpace(retryPath) &&
|
||||||
|
!string.Equals(path, retryPath, StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
if (retry)
|
||||||
|
{
|
||||||
|
_logger.Error("IOException saving to {0}. {2}. Will retry saving to {1}", path, retryPath, ex.Message);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
source.Position = 0;
|
source.Position = 0;
|
||||||
await SaveImageToLocation(source, retryPath, cancellationToken).ConfigureAwait(false);
|
await SaveImageToLocation(source, retryPath, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
|
@ -606,15 +606,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
ActiveRecordingInfo activeRecordingInfo;
|
ActiveRecordingInfo activeRecordingInfo;
|
||||||
if (!_activeRecordings.TryGetValue(updatedTimer.Id, out activeRecordingInfo))
|
if (!_activeRecordings.TryGetValue(updatedTimer.Id, out activeRecordingInfo))
|
||||||
{
|
{
|
||||||
UpdateExistingTimerWithNewData(existingTimer, updatedTimer);
|
existingTimer.PrePaddingSeconds = updatedTimer.PrePaddingSeconds;
|
||||||
|
existingTimer.PostPaddingSeconds = updatedTimer.PostPaddingSeconds;
|
||||||
_timerProvider.Update(existingTimer);
|
existingTimer.IsPostPaddingRequired = updatedTimer.IsPostPaddingRequired;
|
||||||
|
existingTimer.IsPrePaddingRequired = updatedTimer.IsPrePaddingRequired;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.FromResult(true);
|
return Task.FromResult(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateExistingTimerWithNewData(TimerInfo existingTimer, TimerInfo updatedTimer)
|
private void UpdateExistingTimerWithNewMetadata(TimerInfo existingTimer, TimerInfo updatedTimer)
|
||||||
{
|
{
|
||||||
// Update the program info but retain the status
|
// Update the program info but retain the status
|
||||||
existingTimer.ChannelId = updatedTimer.ChannelId;
|
existingTimer.ChannelId = updatedTimer.ChannelId;
|
||||||
|
@ -1430,7 +1431,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
SaveSeriesNfo(timer, recordingPath, seriesPath);
|
SaveSeriesNfo(timer, recordingPath, seriesPath);
|
||||||
}
|
}
|
||||||
else if (!timer.IsMovie || timer.IsSports)
|
else if (!timer.IsMovie || timer.IsSports || timer.IsNews)
|
||||||
{
|
{
|
||||||
SaveVideoNfo(timer, recordingPath);
|
SaveVideoNfo(timer, recordingPath);
|
||||||
}
|
}
|
||||||
|
@ -1620,7 +1621,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
ActiveRecordingInfo activeRecordingInfo;
|
ActiveRecordingInfo activeRecordingInfo;
|
||||||
if (!_activeRecordings.TryGetValue(timer.Id, out activeRecordingInfo))
|
if (!_activeRecordings.TryGetValue(timer.Id, out activeRecordingInfo))
|
||||||
{
|
{
|
||||||
UpdateExistingTimerWithNewData(existingTimer, timer);
|
UpdateExistingTimerWithNewMetadata(existingTimer, timer);
|
||||||
|
|
||||||
if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer))
|
if (ShouldCancelTimerForSeriesTimer(seriesTimer, timer))
|
||||||
{
|
{
|
||||||
|
|
|
@ -104,7 +104,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
Action onStarted = null;
|
Action onStarted = null;
|
||||||
if (isFirstAttempt)
|
if (isFirstAttempt)
|
||||||
{
|
{
|
||||||
onStarted = () => openTaskCompletionSource.TrySetResult(true);
|
onStarted = () => ResolveWhenExists(openTaskCompletionSource, tempFilePath, cancellationToken);
|
||||||
}
|
}
|
||||||
await DirectRecorder.CopyUntilCancelled(response.Content, outputStream, onStarted, cancellationToken).ConfigureAwait(false);
|
await DirectRecorder.CopyUntilCancelled(response.Content, outputStream, onStarted, cancellationToken).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
@ -137,6 +137,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
}).ConfigureAwait(false);
|
}).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void ResolveWhenExists(TaskCompletionSource<bool> taskCompletionSource, string file, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
while (!File.Exists(file) && !cancellationToken.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
await Task.Delay(50).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
taskCompletionSource.TrySetResult(true);
|
||||||
|
}
|
||||||
|
|
||||||
private async void DeleteTempFile(string path)
|
private async void DeleteTempFile(string path)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < 10; i++)
|
for (var i = 0; i < 10; i++)
|
||||||
|
|
|
@ -2724,6 +2724,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
cmd.Parameters.Add(cmd, "@MinIndexNumber", DbType.Int32).Value = query.MinIndexNumber.Value;
|
cmd.Parameters.Add(cmd, "@MinIndexNumber", DbType.Int32).Value = query.MinIndexNumber.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (query.MinDateCreated.HasValue)
|
||||||
|
{
|
||||||
|
whereClauses.Add("DateCreated>=@MinDateCreated");
|
||||||
|
cmd.Parameters.Add(cmd, "@MinDateCreated", DbType.DateTime).Value = query.MinDateCreated.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (query.MinDateLastSaved.HasValue)
|
||||||
|
{
|
||||||
|
whereClauses.Add("DateLastSaved>=@MinDateLastSaved");
|
||||||
|
cmd.Parameters.Add(cmd, "@MinDateLastSaved", DbType.DateTime).Value = query.MinDateLastSaved.Value;
|
||||||
|
}
|
||||||
|
|
||||||
//if (query.MinPlayers.HasValue)
|
//if (query.MinPlayers.HasValue)
|
||||||
//{
|
//{
|
||||||
// whereClauses.Add("Players>=@MinPlayers");
|
// whereClauses.Add("Players>=@MinPlayers");
|
||||||
|
|
Loading…
Reference in a new issue