aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs15
-rw-r--r--Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs6
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs2
-rw-r--r--Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs2
-rw-r--r--Emby.Server.Implementations/Net/UdpSocket.cs4
-rw-r--r--MediaBrowser.Common/Extensions/ProcessExtensions.cs2
-rw-r--r--MediaBrowser.Model/Dto/BaseItemDto.cs8
-rw-r--r--MediaBrowser.Model/Dto/BaseItemPerson.cs3
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs35
10 files changed, 41 insertions, 38 deletions
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 88d9303a5..f5ca006dd 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -458,11 +458,6 @@ namespace Emby.Server.Implementations.Dto
}
}
- private string GetDtoId(BaseItem item)
- {
- return item.Id.ToString("N", CultureInfo.InvariantCulture);
- }
-
private void SetMusicVideoProperties(BaseItemDto dto, MusicVideo item)
{
if (!string.IsNullOrEmpty(item.Album))
@@ -584,7 +579,7 @@ namespace Emby.Server.Implementations.Dto
if (dictionary.TryGetValue(person.Name, out Person entity))
{
baseItemPerson.PrimaryImageTag = GetTagAndFillBlurhash(dto, entity, ImageType.Primary);
- baseItemPerson.Id = entity.Id.ToString("N", CultureInfo.InvariantCulture);
+ baseItemPerson.Id = entity.Id;
if (dto.ImageBlurHashes != null)
{
// Only add BlurHash for the person's image.
@@ -1324,7 +1319,7 @@ namespace Emby.Server.Implementations.Dto
if (image != null)
{
- dto.ParentLogoItemId = GetDtoId(parent);
+ dto.ParentLogoItemId = parent.Id;
dto.ParentLogoImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
@@ -1335,7 +1330,7 @@ namespace Emby.Server.Implementations.Dto
if (image != null)
{
- dto.ParentArtItemId = GetDtoId(parent);
+ dto.ParentArtItemId = parent.Id;
dto.ParentArtImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
@@ -1346,7 +1341,7 @@ namespace Emby.Server.Implementations.Dto
if (image != null)
{
- dto.ParentThumbItemId = GetDtoId(parent);
+ dto.ParentThumbItemId = parent.Id;
dto.ParentThumbImageTag = GetTagAndFillBlurhash(dto, parent, image);
}
}
@@ -1357,7 +1352,7 @@ namespace Emby.Server.Implementations.Dto
if (images.Count > 0)
{
- dto.ParentBackdropItemId = GetDtoId(parent);
+ dto.ParentBackdropItemId = parent.Id;
dto.ParentBackdropImageTags = GetTagsAndFillBlurhashes(dto, parent, ImageType.Backdrop, images);
}
}
diff --git a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
index 7fa47e7db..f1d4b6097 100644
--- a/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
+++ b/Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs
@@ -29,7 +29,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
private readonly ILogger _logger;
private readonly IMediaEncoder _mediaEncoder;
private readonly IServerApplicationPaths _appPaths;
- private readonly TaskCompletionSource<bool> _taskCompletionSource = new TaskCompletionSource<bool>();
+ private readonly TaskCompletionSource<bool> _taskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
private readonly IServerConfigurationManager _serverConfigurationManager;
private readonly JsonSerializerOptions _jsonOptions = JsonDefaults.Options;
private bool _hasExited;
diff --git a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
index 323b96021..fbce7af2d 100644
--- a/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
+++ b/Emby.Server.Implementations/LiveTv/LiveTvDtoService.cs
@@ -176,7 +176,7 @@ namespace Emby.Server.Implementations.LiveTv
try
{
dto.ParentThumbImageTag = _imageProcessor.GetImageCacheTag(librarySeries, image);
- dto.ParentThumbItemId = librarySeries.Id.ToString("N", CultureInfo.InvariantCulture);
+ dto.ParentThumbItemId = librarySeries.Id;
}
catch (Exception ex)
{
@@ -193,7 +193,7 @@ namespace Emby.Server.Implementations.LiveTv
{
_imageProcessor.GetImageCacheTag(librarySeries, image)
};
- dto.ParentBackdropItemId = librarySeries.Id.ToString("N", CultureInfo.InvariantCulture);
+ dto.ParentBackdropItemId = librarySeries.Id;
}
catch (Exception ex)
{
@@ -240,7 +240,7 @@ namespace Emby.Server.Implementations.LiveTv
_imageProcessor.GetImageCacheTag(program, image)
};
- dto.ParentBackdropItemId = program.Id.ToString("N", CultureInfo.InvariantCulture);
+ dto.ParentBackdropItemId = program.Id;
}
catch (Exception ex)
{
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
index a5edd35cc..f43304cb6 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunUdpStream.cs
@@ -133,7 +133,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
}
}
- var taskCompletionSource = new TaskCompletionSource<bool>();
+ var taskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
_ = StartStreaming(
udpClient,
diff --git a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
index ab4beb15b..e84e1e074 100644
--- a/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
+++ b/Emby.Server.Implementations/LiveTv/TunerHosts/SharedHttpStream.cs
@@ -73,7 +73,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
SetTempFilePath("ts");
- var taskCompletionSource = new TaskCompletionSource<bool>();
+ var taskCompletionSource = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
_ = StartStreaming(response, taskCompletionSource, LiveStreamCancellationTokenSource.Token);
diff --git a/Emby.Server.Implementations/Net/UdpSocket.cs b/Emby.Server.Implementations/Net/UdpSocket.cs
index 0c451ccb6..bbbca4fc0 100644
--- a/Emby.Server.Implementations/Net/UdpSocket.cs
+++ b/Emby.Server.Implementations/Net/UdpSocket.cs
@@ -159,7 +159,7 @@ namespace Emby.Server.Implementations.Net
{
ThrowIfDisposed();
- var taskCompletion = new TaskCompletionSource<SocketReceiveResult>();
+ var taskCompletion = new TaskCompletionSource<SocketReceiveResult>(TaskCreationOptions.RunContinuationsAsynchronously);
bool isResultSet = false;
Action<IAsyncResult> callback = callbackResult =>
@@ -195,7 +195,7 @@ namespace Emby.Server.Implementations.Net
{
ThrowIfDisposed();
- var taskCompletion = new TaskCompletionSource<int>();
+ var taskCompletion = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
bool isResultSet = false;
Action<IAsyncResult> callback = callbackResult =>
diff --git a/MediaBrowser.Common/Extensions/ProcessExtensions.cs b/MediaBrowser.Common/Extensions/ProcessExtensions.cs
index 08e01bfd6..c3a7cb394 100644
--- a/MediaBrowser.Common/Extensions/ProcessExtensions.cs
+++ b/MediaBrowser.Common/Extensions/ProcessExtensions.cs
@@ -39,7 +39,7 @@ namespace MediaBrowser.Common.Extensions
}
// Add an event handler for the process exit event
- var tcs = new TaskCompletionSource<bool>();
+ var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);
process.Exited += (_, _) => tcs.TrySetResult(true);
// Return immediately if the process has already exited
diff --git a/MediaBrowser.Model/Dto/BaseItemDto.cs b/MediaBrowser.Model/Dto/BaseItemDto.cs
index a784025e3..094dc73b2 100644
--- a/MediaBrowser.Model/Dto/BaseItemDto.cs
+++ b/MediaBrowser.Model/Dto/BaseItemDto.cs
@@ -297,13 +297,13 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets wether the item has a logo, this will hold the Id of the Parent that has one.
/// </summary>
/// <value>The parent logo item id.</value>
- public string ParentLogoItemId { get; set; }
+ public Guid? ParentLogoItemId { get; set; }
/// <summary>
/// Gets or sets wether the item has any backdrops, this will hold the Id of the Parent that has one.
/// </summary>
/// <value>The parent backdrop item id.</value>
- public string ParentBackdropItemId { get; set; }
+ public Guid? ParentBackdropItemId { get; set; }
/// <summary>
/// Gets or sets the parent backdrop image tags.
@@ -509,7 +509,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets wether the item has fan art, this will hold the Id of the Parent that has one.
/// </summary>
/// <value>The parent art item id.</value>
- public string ParentArtItemId { get; set; }
+ public Guid? ParentArtItemId { get; set; }
/// <summary>
/// Gets or sets the parent art image tag.
@@ -540,7 +540,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets the parent thumb item id.
/// </summary>
/// <value>The parent thumb item id.</value>
- public string ParentThumbItemId { get; set; }
+ public Guid? ParentThumbItemId { get; set; }
/// <summary>
/// Gets or sets the parent thumb image tag.
diff --git a/MediaBrowser.Model/Dto/BaseItemPerson.cs b/MediaBrowser.Model/Dto/BaseItemPerson.cs
index ddd7667ef..6b920b0ef 100644
--- a/MediaBrowser.Model/Dto/BaseItemPerson.cs
+++ b/MediaBrowser.Model/Dto/BaseItemPerson.cs
@@ -1,4 +1,5 @@
#nullable disable
+using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
using MediaBrowser.Model.Entities;
@@ -20,7 +21,7 @@ namespace MediaBrowser.Model.Dto
/// Gets or sets the identifier.
/// </summary>
/// <value>The identifier.</value>
- public string Id { get; set; }
+ public Guid Id { get; set; }
/// <summary>
/// Gets or sets the role.
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
index 77372e063..a2fb2a3c9 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs
@@ -368,11 +368,11 @@ namespace MediaBrowser.Providers.MediaInfo
private void FetchEmbeddedInfo(Video video, Model.MediaInfo.MediaInfo data, MetadataRefreshOptions refreshOptions, LibraryOptions libraryOptions)
{
- var isFullRefresh = refreshOptions.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
+ var replaceData = refreshOptions.ReplaceAllMetadata;
if (!video.IsLocked && !video.LockedFields.Contains(MetadataField.OfficialRating))
{
- if (!string.IsNullOrWhiteSpace(data.OfficialRating) || isFullRefresh)
+ if (string.IsNullOrWhiteSpace(video.OfficialRating) || replaceData)
{
video.OfficialRating = data.OfficialRating;
}
@@ -380,7 +380,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (!video.IsLocked && !video.LockedFields.Contains(MetadataField.Genres))
{
- if (video.Genres.Length == 0 || isFullRefresh)
+ if (video.Genres.Length == 0 || replaceData)
{
video.Genres = Array.Empty<string>();
@@ -393,21 +393,28 @@ namespace MediaBrowser.Providers.MediaInfo
if (!video.IsLocked && !video.LockedFields.Contains(MetadataField.Studios))
{
- if (video.Studios.Length == 0 || isFullRefresh)
+ if (video.Studios.Length == 0 || replaceData)
{
video.SetStudios(data.Studios);
}
}
- if (video is MusicVideo musicVideo)
+ if (!video.IsLocked && video is MusicVideo musicVideo)
{
- musicVideo.Album = data.Album;
- musicVideo.Artists = data.Artists;
+ if (string.IsNullOrEmpty(musicVideo.Album) || replaceData)
+ {
+ musicVideo.Album = data.Album;
+ }
+
+ if (musicVideo.Artists.Count == 0 || replaceData)
+ {
+ musicVideo.Artists = data.Artists;
+ }
}
if (data.ProductionYear.HasValue)
{
- if (!video.ProductionYear.HasValue || isFullRefresh)
+ if (!video.ProductionYear.HasValue || replaceData)
{
video.ProductionYear = data.ProductionYear;
}
@@ -415,7 +422,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (data.PremiereDate.HasValue)
{
- if (!video.PremiereDate.HasValue || isFullRefresh)
+ if (!video.PremiereDate.HasValue || replaceData)
{
video.PremiereDate = data.PremiereDate;
}
@@ -423,7 +430,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (data.IndexNumber.HasValue)
{
- if (!video.IndexNumber.HasValue || isFullRefresh)
+ if (!video.IndexNumber.HasValue || replaceData)
{
video.IndexNumber = data.IndexNumber;
}
@@ -431,7 +438,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (data.ParentIndexNumber.HasValue)
{
- if (!video.ParentIndexNumber.HasValue || isFullRefresh)
+ if (!video.ParentIndexNumber.HasValue || replaceData)
{
video.ParentIndexNumber = data.ParentIndexNumber;
}
@@ -462,7 +469,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (!video.IsLocked && !video.LockedFields.Contains(MetadataField.Overview))
{
- if (string.IsNullOrWhiteSpace(video.Overview) || isFullRefresh)
+ if (string.IsNullOrWhiteSpace(video.Overview) || replaceData)
{
video.Overview = data.Overview;
}
@@ -471,11 +478,11 @@ namespace MediaBrowser.Providers.MediaInfo
private void FetchPeople(Video video, Model.MediaInfo.MediaInfo data, MetadataRefreshOptions options)
{
- var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
+ var replaceData = options.ReplaceAllMetadata;
if (!video.IsLocked && !video.LockedFields.Contains(MetadataField.Cast))
{
- if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0)
+ if (replaceData || _libraryManager.GetPeople(video).Count == 0)
{
var people = new List<PersonInfo>();