Browse Source

add jellyfin season number fallback (#1497)

pull/1499/head
Jason Dove 2 years ago committed by GitHub
parent
commit
b287c0d6ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      CHANGELOG.md
  2. 14
      ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs

2
CHANGELOG.md

@ -49,6 +49,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Test QSV acceleration if configured, and fallback to software mode if test fails - Test QSV acceleration if configured, and fallback to software mode if test fails
- Detect QSV capabilities on Linux (supported decoders, encoders) - Detect QSV capabilities on Linux (supported decoders, encoders)
- Use hardware acceleration for error messages/offline messages - Use hardware acceleration for error messages/offline messages
- Try to parse season number from season folder when Jellyfin does not provide season number
- This *may* fix issues where Jellyfin libraries show all season numbers as 0 (specials)
## [0.8.2-beta] - 2023-09-14 ## [0.8.2-beta] - 2023-09-14
### Added ### Added

14
ErsatzTV.Infrastructure/Jellyfin/JellyfinApiClient.cs

@ -2,6 +2,7 @@
using ErsatzTV.Core; using ErsatzTV.Core;
using ErsatzTV.Core.Domain; using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Interfaces.Jellyfin; using ErsatzTV.Core.Interfaces.Jellyfin;
using ErsatzTV.Core.Interfaces.Metadata;
using ErsatzTV.Core.Jellyfin; using ErsatzTV.Core.Jellyfin;
using ErsatzTV.Core.Metadata; using ErsatzTV.Core.Metadata;
using ErsatzTV.Infrastructure.Jellyfin.Models; using ErsatzTV.Infrastructure.Jellyfin.Models;
@ -14,16 +15,19 @@ namespace ErsatzTV.Infrastructure.Jellyfin;
public class JellyfinApiClient : IJellyfinApiClient public class JellyfinApiClient : IJellyfinApiClient
{ {
private readonly IJellyfinPathReplacementService _jellyfinPathReplacementService; private readonly IJellyfinPathReplacementService _jellyfinPathReplacementService;
private readonly IFallbackMetadataProvider _fallbackMetadataProvider;
private readonly ILogger<JellyfinApiClient> _logger; private readonly ILogger<JellyfinApiClient> _logger;
private readonly IMemoryCache _memoryCache; private readonly IMemoryCache _memoryCache;
public JellyfinApiClient( public JellyfinApiClient(
IMemoryCache memoryCache, IMemoryCache memoryCache,
IJellyfinPathReplacementService jellyfinPathReplacementService, IJellyfinPathReplacementService jellyfinPathReplacementService,
IFallbackMetadataProvider fallbackMetadataProvider,
ILogger<JellyfinApiClient> logger) ILogger<JellyfinApiClient> logger)
{ {
_memoryCache = memoryCache; _memoryCache = memoryCache;
_jellyfinPathReplacementService = jellyfinPathReplacementService; _jellyfinPathReplacementService = jellyfinPathReplacementService;
_fallbackMetadataProvider = fallbackMetadataProvider;
_logger = logger; _logger = logger;
} }
@ -721,6 +725,16 @@ public class JellyfinApiClient : IJellyfinApiClient
{ {
season.SeasonNumber = item.IndexNumber.Value; season.SeasonNumber = item.IndexNumber.Value;
} }
else
{
Option<int> maybeSeasonNumber =
_fallbackMetadataProvider.GetSeasonNumberForFolder(item.Path ?? string.Empty);
foreach (int seasonNumber in maybeSeasonNumber)
{
season.SeasonNumber = seasonNumber;
}
}
return season; return season;
} }

Loading…
Cancel
Save