|
|
|
@ -66,8 +66,11 @@ namespace ErsatzTV.Infrastructure.Images |
|
|
|
try |
|
|
|
try |
|
|
|
{ |
|
|
|
{ |
|
|
|
string tempFileName = _tempFilePool.GetNextTempFile(TempFileCategory.CachedArtwork); |
|
|
|
string tempFileName = _tempFilePool.GetNextTempFile(TempFileCategory.CachedArtwork); |
|
|
|
await using var fs = new FileStream(tempFileName, FileMode.OpenOrCreate); |
|
|
|
// ReSharper disable once UseAwaitUsing
|
|
|
|
await stream.CopyToAsync(fs); |
|
|
|
using (var fs = new FileStream(tempFileName, FileMode.OpenOrCreate, FileAccess.Write)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
await stream.CopyToAsync(fs); |
|
|
|
|
|
|
|
} |
|
|
|
byte[] hash = await ComputeFileHash(tempFileName); |
|
|
|
byte[] hash = await ComputeFileHash(tempFileName); |
|
|
|
string hex = BitConverter.ToString(hash).Replace("-", string.Empty); |
|
|
|
string hex = BitConverter.ToString(hash).Replace("-", string.Empty); |
|
|
|
string subfolder = hex[..2]; |
|
|
|
string subfolder = hex[..2]; |
|
|
|
@ -100,9 +103,13 @@ namespace ErsatzTV.Infrastructure.Images |
|
|
|
private static async Task<byte[]> ComputeFileHash(string fileName) |
|
|
|
private static async Task<byte[]> ComputeFileHash(string fileName) |
|
|
|
{ |
|
|
|
{ |
|
|
|
using var md5 = MD5.Create(); |
|
|
|
using var md5 = MD5.Create(); |
|
|
|
await using var fs = new FileStream(fileName, FileMode.Open); |
|
|
|
// ReSharper disable once UseAwaitUsing
|
|
|
|
fs.Position = 0; |
|
|
|
// ReSharper disable once ConvertToUsingDeclaration
|
|
|
|
return await md5.ComputeHashAsync(fs); |
|
|
|
using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read)) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
fs.Position = 0; |
|
|
|
|
|
|
|
return await md5.ComputeHashAsync(fs); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public async Task<Either<BaseError, string>> CopyArtworkToCache(string path, ArtworkKind artworkKind) |
|
|
|
public async Task<Either<BaseError, string>> CopyArtworkToCache(string path, ArtworkKind artworkKind) |
|
|
|
|