mirror of
https://github.com/jellyfin/jellyfin.git
synced 2024-09-06 11:34:57 +02:00
commit
2a49fa631a
7 changed files with 49 additions and 22 deletions
|
@ -479,7 +479,7 @@ namespace MediaBrowser.Dlna.Ssdp
|
||||||
|
|
||||||
var msg = new SsdpMessageBuilder().BuildMessage(header, values);
|
var msg = new SsdpMessageBuilder().BuildMessage(header, values);
|
||||||
|
|
||||||
SendDatagram(msg, _ssdpEndp, new IPEndPoint(dev.Address, 0), true, 1);
|
SendDatagram(msg, _ssdpEndp, new IPEndPoint(dev.Address, 0), true, 2);
|
||||||
//SendUnicastRequest(msg, 1);
|
//SendUnicastRequest(msg, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
|
||||||
|
{
|
||||||
|
return targetFile;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
|
public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var httpRequestOptions = new HttpRequestOptions()
|
var httpRequestOptions = new HttpRequestOptions()
|
||||||
|
|
|
@ -898,10 +898,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
|
|
||||||
var recorder = await GetRecorder().ConfigureAwait(false);
|
var recorder = await GetRecorder().ConfigureAwait(false);
|
||||||
|
|
||||||
if (recorder is EncodedRecorder)
|
recordPath = recorder.GetOutputPath(mediaStreamInfo, recordPath);
|
||||||
{
|
|
||||||
recordPath = Path.ChangeExtension(recordPath, ".mp4");
|
|
||||||
}
|
|
||||||
recordPath = EnsureFileUnique(recordPath, timer.Id);
|
recordPath = EnsureFileUnique(recordPath, timer.Id);
|
||||||
_fileSystem.CreateDirectory(Path.GetDirectoryName(recordPath));
|
_fileSystem.CreateDirectory(Path.GetDirectoryName(recordPath));
|
||||||
activeRecordingInfo.Path = recordPath;
|
activeRecordingInfo.Path = recordPath;
|
||||||
|
@ -1154,7 +1151,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
IncludeItemTypes = new[] { typeof(Episode).Name },
|
IncludeItemTypes = new[] { typeof(Episode).Name },
|
||||||
ParentIndexNumber = program.SeasonNumber.Value,
|
ParentIndexNumber = program.SeasonNumber.Value,
|
||||||
IndexNumber = program.EpisodeNumber.Value,
|
IndexNumber = program.EpisodeNumber.Value,
|
||||||
AncestorIds = seriesIds
|
AncestorIds = seriesIds,
|
||||||
|
ExcludeLocationTypes = new[] { LocationType.Virtual }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result.TotalRecordCount > 0)
|
if (result.TotalRecordCount > 0)
|
||||||
|
@ -1169,7 +1167,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
IncludeItemTypes = new[] { typeof(Episode).Name },
|
IncludeItemTypes = new[] { typeof(Episode).Name },
|
||||||
Name = program.EpisodeTitle,
|
Name = program.EpisodeTitle,
|
||||||
AncestorIds = seriesIds
|
AncestorIds = seriesIds,
|
||||||
|
ExcludeLocationTypes = new[] { LocationType.Virtual }
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result.TotalRecordCount > 0)
|
if (result.TotalRecordCount > 0)
|
||||||
|
|
|
@ -42,6 +42,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
_liveTvOptions = liveTvOptions;
|
_liveTvOptions = liveTvOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
|
||||||
|
{
|
||||||
|
if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings)
|
||||||
|
{
|
||||||
|
return Path.ChangeExtension(targetFile, ".mkv");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Path.ChangeExtension(targetFile, ".mp4");
|
||||||
|
}
|
||||||
|
|
||||||
public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
|
public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
if (mediaSource.RunTimeTicks.HasValue)
|
if (mediaSource.RunTimeTicks.HasValue)
|
||||||
|
|
|
@ -17,5 +17,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
|
||||||
/// <param name="cancellationToken">The cancellation token.</param>
|
/// <param name="cancellationToken">The cancellation token.</param>
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken);
|
Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
string GetOutputPath(MediaSourceInfo mediaSource, string targetFile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2058,7 +2058,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
|
|
||||||
if (EnableJoinUserData(query))
|
if (EnableJoinUserData(query))
|
||||||
{
|
{
|
||||||
whereClauses.Add("UserId=@UserId");
|
whereClauses.Add("(UserId is null or UserId=@UserId)");
|
||||||
}
|
}
|
||||||
if (query.IsCurrentSchema.HasValue)
|
if (query.IsCurrentSchema.HasValue)
|
||||||
{
|
{
|
||||||
|
@ -2363,27 +2363,38 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
{
|
{
|
||||||
if (query.IsFavoriteOrLiked.Value)
|
if (query.IsFavoriteOrLiked.Value)
|
||||||
{
|
{
|
||||||
whereClauses.Add("(IsFavorite=@IsFavoriteOrLiked or rating>=@UserRatingIsFavoriteOrLiked)");
|
whereClauses.Add("IsFavorite=@IsFavoriteOrLiked");
|
||||||
cmd.Parameters.Add(cmd, "@IsFavoriteOrLiked", DbType.Boolean).Value = true;
|
|
||||||
cmd.Parameters.Add(cmd, "@UserRatingIsFavoriteOrLiked", DbType.Double).Value = UserItemData.MinLikeValue;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
whereClauses.Add("(IsFavorite=@IsFavoriteOrLiked or rating is null or rating<@UserRatingIsFavoriteOrLiked)");
|
whereClauses.Add("(IsFavorite is null or IsFavorite=@IsFavoriteOrLiked)");
|
||||||
cmd.Parameters.Add(cmd, "@IsFavoriteOrLiked", DbType.Boolean).Value = false;
|
|
||||||
cmd.Parameters.Add(cmd, "@UserRatingIsFavoriteOrLiked", DbType.Double).Value = UserItemData.MinLikeValue;
|
|
||||||
}
|
}
|
||||||
|
cmd.Parameters.Add(cmd, "@IsFavoriteOrLiked", DbType.Boolean).Value = query.IsFavoriteOrLiked.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query.IsFavorite.HasValue)
|
if (query.IsFavorite.HasValue)
|
||||||
{
|
{
|
||||||
whereClauses.Add("IsFavorite=@IsFavorite");
|
if (query.IsFavorite.Value)
|
||||||
|
{
|
||||||
|
whereClauses.Add("IsFavorite=@IsFavorite");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
whereClauses.Add("(IsFavorite is null or IsFavorite=@IsFavorite)");
|
||||||
|
}
|
||||||
cmd.Parameters.Add(cmd, "@IsFavorite", DbType.Boolean).Value = query.IsFavorite.Value;
|
cmd.Parameters.Add(cmd, "@IsFavorite", DbType.Boolean).Value = query.IsFavorite.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (query.IsPlayed.HasValue)
|
if (query.IsPlayed.HasValue)
|
||||||
{
|
{
|
||||||
whereClauses.Add("played=@IsPlayed");
|
if (query.IsPlayed.Value)
|
||||||
|
{
|
||||||
|
whereClauses.Add("(played=@IsPlayed)");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
whereClauses.Add("(played is null or played=@IsPlayed)");
|
||||||
|
}
|
||||||
cmd.Parameters.Add(cmd, "@IsPlayed", DbType.Boolean).Value = query.IsPlayed.Value;
|
cmd.Parameters.Add(cmd, "@IsPlayed", DbType.Boolean).Value = query.IsPlayed.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -146,6 +146,12 @@
|
||||||
<Content Include="dashboard-ui\components\recordingcreator\recordingcreator.template.html">
|
<Content Include="dashboard-ui\components\recordingcreator\recordingcreator.template.html">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="dashboard-ui\components\recordingeditor\recordingeditor.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
<Content Include="dashboard-ui\components\recordingeditor\recordingeditor.template.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="dashboard-ui\components\remotecontrol.js">
|
<Content Include="dashboard-ui\components\remotecontrol.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
@ -959,9 +965,6 @@
|
||||||
<Content Include="dashboard-ui\scripts\livetvchannel.js">
|
<Content Include="dashboard-ui\scripts\livetvchannel.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="dashboard-ui\livetvtimer.html">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="dashboard-ui\scripts\livetvrecordinglist.js">
|
<Content Include="dashboard-ui\scripts\livetvrecordinglist.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
@ -974,9 +977,6 @@
|
||||||
<Content Include="dashboard-ui\scripts\livetvstatus.js">
|
<Content Include="dashboard-ui\scripts\livetvstatus.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="dashboard-ui\scripts\livetvtimer.js">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<Content Include="dashboard-ui\scripts\editorsidebar.js">
|
<Content Include="dashboard-ui\scripts\editorsidebar.js">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
Loading…
Reference in a new issue