mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
Properly handle file access issues in some cases (#14272)
This commit is contained in:
parent
1c4c9cf733
commit
c22f24319b
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
@ -6,6 +7,7 @@ using MediaBrowser.Controller.Entities;
|
|||||||
using MediaBrowser.Controller.IO;
|
using MediaBrowser.Controller.IO;
|
||||||
using MediaBrowser.Controller.MediaSegments;
|
using MediaBrowser.Controller.MediaSegments;
|
||||||
using MediaBrowser.Controller.Trickplay;
|
using MediaBrowser.Controller.Trickplay;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Library;
|
namespace Emby.Server.Implementations.Library;
|
||||||
|
|
||||||
@ -18,6 +20,7 @@ public class ExternalDataManager : IExternalDataManager
|
|||||||
private readonly IMediaSegmentManager _mediaSegmentManager;
|
private readonly IMediaSegmentManager _mediaSegmentManager;
|
||||||
private readonly IPathManager _pathManager;
|
private readonly IPathManager _pathManager;
|
||||||
private readonly ITrickplayManager _trickplayManager;
|
private readonly ITrickplayManager _trickplayManager;
|
||||||
|
private readonly ILogger<ExternalDataManager> _logger;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="ExternalDataManager"/> class.
|
/// Initializes a new instance of the <see cref="ExternalDataManager"/> class.
|
||||||
@ -26,16 +29,19 @@ public class ExternalDataManager : IExternalDataManager
|
|||||||
/// <param name="mediaSegmentManager">The media segment manager.</param>
|
/// <param name="mediaSegmentManager">The media segment manager.</param>
|
||||||
/// <param name="pathManager">The path manager.</param>
|
/// <param name="pathManager">The path manager.</param>
|
||||||
/// <param name="trickplayManager">The trickplay manager.</param>
|
/// <param name="trickplayManager">The trickplay manager.</param>
|
||||||
|
/// <param name="logger">The logger.</param>
|
||||||
public ExternalDataManager(
|
public ExternalDataManager(
|
||||||
IKeyframeManager keyframeManager,
|
IKeyframeManager keyframeManager,
|
||||||
IMediaSegmentManager mediaSegmentManager,
|
IMediaSegmentManager mediaSegmentManager,
|
||||||
IPathManager pathManager,
|
IPathManager pathManager,
|
||||||
ITrickplayManager trickplayManager)
|
ITrickplayManager trickplayManager,
|
||||||
|
ILogger<ExternalDataManager> logger)
|
||||||
{
|
{
|
||||||
_keyframeManager = keyframeManager;
|
_keyframeManager = keyframeManager;
|
||||||
_mediaSegmentManager = mediaSegmentManager;
|
_mediaSegmentManager = mediaSegmentManager;
|
||||||
_pathManager = pathManager;
|
_pathManager = pathManager;
|
||||||
_trickplayManager = trickplayManager;
|
_trickplayManager = trickplayManager;
|
||||||
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
@ -47,7 +53,14 @@ public class ExternalDataManager : IExternalDataManager
|
|||||||
{
|
{
|
||||||
foreach (var path in validPaths)
|
foreach (var path in validPaths)
|
||||||
{
|
{
|
||||||
Directory.Delete(path, true);
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(path, true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogWarning("Unable to prune external item data at {Path}: {Exception}", path, ex);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
|
|||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(result.strArtist))
|
if (!string.IsNullOrWhiteSpace(result.strArtist))
|
||||||
{
|
{
|
||||||
item.AlbumArtists = new string[] { result.strArtist };
|
item.AlbumArtists = [result.strArtist];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(result.intYearReleased))
|
if (!string.IsNullOrEmpty(result.intYearReleased))
|
||||||
@ -104,7 +104,7 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
|
|||||||
|
|
||||||
if (!string.IsNullOrEmpty(result.strGenre))
|
if (!string.IsNullOrEmpty(result.strGenre))
|
||||||
{
|
{
|
||||||
item.Genres = new[] { result.strGenre };
|
item.Genres = [result.strGenre];
|
||||||
}
|
}
|
||||||
|
|
||||||
item.SetProviderId(MetadataProvider.AudioDbArtist, result.idArtist);
|
item.SetProviderId(MetadataProvider.AudioDbArtist, result.idArtist);
|
||||||
@ -170,6 +170,11 @@ namespace MediaBrowser.Providers.Plugins.AudioDb
|
|||||||
var url = AudioDbArtistProvider.BaseUrl + "/album-mb.php?i=" + musicBrainzReleaseGroupId;
|
var url = AudioDbArtistProvider.BaseUrl + "/album-mb.php?i=" + musicBrainzReleaseGroupId;
|
||||||
|
|
||||||
var path = GetAlbumInfoPath(_config.ApplicationPaths, musicBrainzReleaseGroupId);
|
var path = GetAlbumInfoPath(_config.ApplicationPaths, musicBrainzReleaseGroupId);
|
||||||
|
var fileInfo = _fileSystem.GetFileSystemInfo(path);
|
||||||
|
if (fileInfo.Exists && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(fileInfo)).TotalDays <= 2)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user