timeline rendering

This commit is contained in:
2026-01-28 21:30:47 -05:00
parent c3ddcf16bf
commit dc5dc4bff4
6 changed files with 143 additions and 21 deletions

View File

@@ -32,8 +32,10 @@ public class FileScannerService(MediaService mediaService, IConfiguration config
{
if (_isRunning)
return;
logger.LogInformation("Starting file scan");
_isRunning = true;
ScanFilesAsync(path).Wait();
logger.LogInformation("File scan complete");
_isRunning = false;
}, null, TimeSpan.FromMinutes(0), TimeSpan.FromHours(1));
return Task.CompletedTask;
@@ -57,7 +59,7 @@ public class FileScannerService(MediaService mediaService, IConfiguration config
foreach (var chunk in files.Chunk(50))
{
total += await ScanFileChunkAsync(path, chunk, existingFiles, cancellationToken);
logger.LogInformation("Added {updated} of {count}", total, existingFiles.Count);
logger.LogInformation("Added {updated} of {count}", total, files.Length);
}
}
catch (Exception ex)
@@ -80,7 +82,7 @@ public class FileScannerService(MediaService mediaService, IConfiguration config
var isUpgrade = false;
if (existingFiles.TryGetValue(relativePath, out var version))
{
if (version < MediaEntry.CUR_VERSION)
if (version <= MediaEntry.CUR_VERSION)
continue;
isUpgrade = true;
}
@@ -111,7 +113,7 @@ public class FileScannerService(MediaService mediaService, IConfiguration config
{
await mediaService.DeleteAllEntriesAsync(upgradeEntries.Select(e => e.Filepath), cancellationToken);
await mediaService.AddMediaBulkAsync(upgradeEntries, cancellationToken);
logger.LogInformation("Upgraded {count} file entries", entries.Count);
logger.LogInformation("Upgraded {count} file entries", upgradeEntries.Count);
}
return entries.Count + upgradeEntries.Count;
}
@@ -143,9 +145,16 @@ public class FileScannerService(MediaService mediaService, IConfiguration config
private static Maybe<MediaMetadata> ReadVideoMetadata(string filePath)
{
var info = FFProbe.Analyse(filePath);
if (info.PrimaryVideoStream == null)
return new Error($"Could not find a primirary video stream in file.");
return new MediaMetadata((int)info.Duration.TotalSeconds, info.PrimaryVideoStream.Height, info.PrimaryVideoStream.Width);
try
{
var info = FFProbe.Analyse(filePath);
if (info.PrimaryVideoStream == null)
return new Error($"Could not find a primirary video stream in file.");
return new MediaMetadata((int)info.Duration.TotalSeconds, info.PrimaryVideoStream.Height, info.PrimaryVideoStream.Width);
}
catch(Exception ex)
{
return ex;
}
}
}