mirror of
https://github.com/Lidarr/Lidarr
synced 2026-05-08 12:33:04 +02:00
Fix cover caching
This commit is contained in:
parent
da8c60d8db
commit
fd4a5624f5
1 changed files with 57 additions and 23 deletions
|
|
@ -18,7 +18,7 @@ namespace NzbDrone.Core.MediaCover
|
|||
{
|
||||
public interface IMapCoversToLocal
|
||||
{
|
||||
void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, IEnumerable<MediaCover> covers);
|
||||
void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, ICollection<MediaCover> covers);
|
||||
string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCoverTypes coverType, string extension, int? height = null);
|
||||
bool EnsureAlbumCovers(Album album);
|
||||
}
|
||||
|
|
@ -82,7 +82,7 @@ public string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCove
|
|||
return Path.Combine(GetArtistCoverPath(entityId), coverType.ToString().ToLower() + heightSuffix + GetExtension(coverType, extension));
|
||||
}
|
||||
|
||||
public void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, IEnumerable<MediaCover> covers)
|
||||
public void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, ICollection<MediaCover> covers)
|
||||
{
|
||||
if (entityId == 0)
|
||||
{
|
||||
|
|
@ -92,34 +92,39 @@ public void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, IEnum
|
|||
mediaCover.RemoteUrl = mediaCover.Url;
|
||||
mediaCover.Url = _mediaCoverProxy.RegisterUrl(mediaCover.RemoteUrl);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
if (!covers.Any())
|
||||
{
|
||||
foreach (var mediaCover in covers)
|
||||
PopulateCoverWithCache(entityId, coverEntity, covers);
|
||||
}
|
||||
|
||||
foreach (var mediaCover in covers)
|
||||
{
|
||||
if (mediaCover.CoverType == MediaCoverTypes.Unknown)
|
||||
{
|
||||
if (mediaCover.CoverType == MediaCoverTypes.Unknown)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
var filePath = GetCoverPath(entityId, coverEntity, mediaCover.CoverType, mediaCover.Extension, null);
|
||||
var filePath = GetCoverPath(entityId, coverEntity, mediaCover.CoverType, mediaCover.Extension, null);
|
||||
|
||||
mediaCover.RemoteUrl = mediaCover.Url;
|
||||
mediaCover.RemoteUrl = mediaCover.Url;
|
||||
|
||||
if (coverEntity == MediaCoverEntity.Album)
|
||||
{
|
||||
mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/Albums/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension);
|
||||
}
|
||||
else
|
||||
{
|
||||
mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension);
|
||||
}
|
||||
if (coverEntity == MediaCoverEntity.Album)
|
||||
{
|
||||
mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/Albums/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension);
|
||||
}
|
||||
else
|
||||
{
|
||||
mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension);
|
||||
}
|
||||
|
||||
if (_diskProvider.FileExists(filePath))
|
||||
{
|
||||
var lastWrite = _diskProvider.FileGetLastWrite(filePath);
|
||||
mediaCover.Url += "?lastWrite=" + lastWrite.Ticks;
|
||||
}
|
||||
if (_diskProvider.FileExists(filePath))
|
||||
{
|
||||
var lastWrite = _diskProvider.FileGetLastWrite(filePath);
|
||||
mediaCover.Url += "?lastWrite=" + lastWrite.Ticks;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -194,6 +199,35 @@ private bool EnsureArtistCovers(Artist artist)
|
|||
return updated;
|
||||
}
|
||||
|
||||
private void PopulateCoverWithCache(int entityId, MediaCoverEntity coverEntity, ICollection<MediaCover> covers)
|
||||
{
|
||||
var folderPath = coverEntity == MediaCoverEntity.Album ? GetAlbumCoverPath(entityId) : GetArtistCoverPath(entityId);
|
||||
|
||||
if (_diskProvider.FolderExists(folderPath))
|
||||
{
|
||||
foreach (var fileInfo in _diskProvider.GetFileInfos(folderPath))
|
||||
{
|
||||
var fileName = Path.GetFileNameWithoutExtension(fileInfo.Name);
|
||||
var extension = Path.GetExtension(fileInfo.Name);
|
||||
if (fileName.Contains('-'))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Enum.TryParse(fileName, true, out MediaCoverTypes coverType) && !covers.Any(c => c.CoverType == coverType))
|
||||
{
|
||||
var filePath = fileInfo.FullName;
|
||||
var diskCover = new MediaCover(coverType, filePath)
|
||||
{
|
||||
RemoteUrl = filePath
|
||||
};
|
||||
|
||||
covers.Add(diskCover);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool EnsureAlbumCovers(Album album)
|
||||
{
|
||||
var updated = false;
|
||||
|
|
|
|||
Loading…
Reference in a new issue