Fix dummy chapter handling for videos with a single chapter.

This commit is contained in:
ExpctING
2026-04-25 03:30:55 +08:00
parent 461662f1ff
commit 857e730168
3 changed files with 6 additions and 9 deletions

View File

@@ -128,7 +128,7 @@ public class ChapterManager : IChapterManager
var averageChapterDuration = GetAverageDurationBetweenChapters(chapters);
var threshold = TimeSpan.FromSeconds(1).Ticks;
if (averageChapterDuration < threshold)
if (chapters.Count >= 2 && averageChapterDuration < threshold)
{
_logger.LogInformation("Skipping chapter image extraction for {Video} as the average chapter duration {AverageDuration} was lower than the minimum threshold {Threshold}", video.Name, averageChapterDuration, threshold);
extractImages = false;

View File

@@ -278,7 +278,7 @@ namespace MediaBrowser.Providers.MediaInfo
if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh
|| options.MetadataRefreshMode == MetadataRefreshMode.Default)
{
if (_config.Configuration.DummyChapterDuration > 0 && chapters.Length == 0 && mediaStreams.Any(i => i.Type == MediaStreamType.Video))
if (_config.Configuration.DummyChapterDuration > 0 && chapters.Length <= 1 && mediaStreams.Any(i => i.Type == MediaStreamType.Video))
{
chapters = CreateDummyChapters(video);
}
@@ -620,12 +620,8 @@ namespace MediaBrowser.Providers.MediaInfo
}
long dummyChapterDuration = TimeSpan.FromSeconds(_config.Configuration.DummyChapterDuration).Ticks;
if (runtime <= dummyChapterDuration)
{
return [];
}
int chapterCount = (int)(runtime / dummyChapterDuration);
int chapterCount = Math.Max(1, (int)(runtime / dummyChapterDuration));
var chapters = new ChapterInfo[chapterCount];
long currentChapterTicks = 0;

View File

@@ -45,8 +45,9 @@ public class FFProbeVideoInfoTests
[Theory]
[InlineData(null, 0)]
[InlineData(0L, 0)]
[InlineData(1L, 0)]
[InlineData(TimeSpan.TicksPerMinute * 5, 0)]
[InlineData(1L, 1)]
[InlineData(TimeSpan.TicksPerMinute * 3, 1)]
[InlineData(TimeSpan.TicksPerMinute * 5, 1)]
[InlineData((TimeSpan.TicksPerMinute * 5) + 1, 1)]
[InlineData(TimeSpan.TicksPerMinute * 50, 10)]
public void CreateDummyChapters_ValidRuntime_CorrectChaptersCount(long? runtime, int chaptersCount)