Skip to content

Commit

Permalink
fix: suppress ignored episode titles
Browse files Browse the repository at this point in the history
  • Loading branch information
revam committed Feb 4, 2025
1 parent e0b473c commit a07ec77
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 10 deletions.
20 changes: 18 additions & 2 deletions Shokofin/Providers/EpisodeProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,15 @@ private static Episode CreateMetadata(Info.ShowInfo showInfo, Info.SeasonInfo se
// Movies
(seasonInfo.Type == SeriesType.Movie && eI.Type is EpisodeType.Normal or EpisodeType.Special) ||
// All other ignored types.
(eI.Type is EpisodeType.Normal && eI.EpisodeNumber == 1 && eI.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value is { } mainTitle && Text.IgnoredSubTitles.Contains(mainTitle))
(
eI.Type is EpisodeType.Normal &&
eI.EpisodeNumber == 1 &&
eI.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value is { } mainTitle &&
Text.IgnoredSubTitles.Contains(mainTitle) &&
Text.GetEpisodeTitles(eI, seasonInfo, metadataLanguage) is { } episodeTitles && (
string.IsNullOrEmpty(episodeTitles.displayTitle) || Text.IgnoredSubTitles.Contains(episodeTitles.displayTitle)
)
)
) {
var (dTitle, aTitle) = Text.GetMovieTitles(eI, seasonInfo, metadataLanguage);
displayTitles.Add(dTitle);
Expand All @@ -133,7 +141,15 @@ private static Episode CreateMetadata(Info.ShowInfo showInfo, Info.SeasonInfo se
// Movies
(seasonInfo.Type == SeriesType.Movie && episodeInfo.Type is EpisodeType.Normal or EpisodeType.Special) ||
// All other ignored types.
(episodeInfo.Type is EpisodeType.Normal && episodeInfo.EpisodeNumber == 1 && episodeInfo.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value is { } mainTitle && Text.IgnoredSubTitles.Contains(mainTitle))
(
episodeInfo.Type is EpisodeType.Normal &&
episodeInfo.EpisodeNumber == 1 &&
episodeInfo.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value is { } mainTitle &&
Text.IgnoredSubTitles.Contains(mainTitle) &&
Text.GetEpisodeTitles(episodeInfo, seasonInfo, metadataLanguage) is { } episodeTitles && (
string.IsNullOrEmpty(episodeTitles.displayTitle) || Text.IgnoredSubTitles.Contains(episodeTitles.displayTitle)
)
)
) {
(displayTitle, alternateTitle) = Text.GetMovieTitles(episodeInfo, seasonInfo, metadataLanguage);
}
Expand Down
16 changes: 8 additions & 8 deletions Shokofin/Utils/Text.cs
Original file line number Diff line number Diff line change
Expand Up @@ -260,16 +260,16 @@ public static string SanitizeAnidbDescription(string summary) {
return outputText;
}

public static (string?, string?) GetEpisodeTitles(EpisodeInfo episodeInfo, SeasonInfo seasonInfo, string? metadataLanguage)
public static (string? displayTitle, string? alternateTitle) GetEpisodeTitles(EpisodeInfo episodeInfo, SeasonInfo seasonInfo, string? metadataLanguage)
=> (
GetEpisodeTitleByType(episodeInfo, seasonInfo, TitleProviderType.Main, metadataLanguage),
GetEpisodeTitleByType(episodeInfo, seasonInfo, TitleProviderType.Alternate, metadataLanguage)
);

public static (string?, string?) GetSeasonTitles(SeasonInfo seasonInfo, string? metadataLanguage)
public static (string? displayTitle, string? alternateTitle) GetSeasonTitles(SeasonInfo seasonInfo, string? metadataLanguage)
=> GetSeasonTitles(seasonInfo, 0, metadataLanguage);

public static (string?, string?) GetSeasonTitles(SeasonInfo seasonInfo, int baseSeasonOffset, string? metadataLanguage) {
public static (string? displayTitle, string? alternateTitle) GetSeasonTitles(SeasonInfo seasonInfo, int baseSeasonOffset, string? metadataLanguage) {
var displayTitle = GetSeriesTitleByType(seasonInfo, TitleProviderType.Main, metadataLanguage);
var alternateTitle = GetSeriesTitleByType(seasonInfo, TitleProviderType.Alternate, metadataLanguage);
if (baseSeasonOffset > 0) {
Expand All @@ -289,13 +289,13 @@ public static (string?, string?) GetSeasonTitles(SeasonInfo seasonInfo, int base
return (displayTitle, alternateTitle);
}

public static (string?, string?) GetShowTitles(IBaseItemInfo showInfo, string? metadataLanguage)
public static (string? displayTitle, string? alternateTitle) GetShowTitles(IBaseItemInfo showInfo, string? metadataLanguage)
=> (
GetSeriesTitleByType(showInfo, TitleProviderType.Main, metadataLanguage),
GetSeriesTitleByType(showInfo, TitleProviderType.Alternate, metadataLanguage)
);

public static (string?, string?) GetMovieTitles(EpisodeInfo episodeInfo, SeasonInfo seasonInfo, string? metadataLanguage)
public static (string? displayTitle, string? alternateTitle) GetMovieTitles(EpisodeInfo episodeInfo, SeasonInfo seasonInfo, string? metadataLanguage)
=> (
GetMovieTitleByType(episodeInfo, seasonInfo, TitleProviderType.Main, metadataLanguage),
GetMovieTitleByType(episodeInfo, seasonInfo, TitleProviderType.Alternate, metadataLanguage)
Expand Down Expand Up @@ -329,9 +329,9 @@ private static TitleProvider[] GetOrderedTitleProvidersByType(TitleProviderType
foreach (var provider in GetOrderedTitleProvidersByType(type)) {
var title = provider switch {
TitleProvider.Shoko_Default =>
episodeInfo.Title,
IgnoredSubTitles.Contains(episodeInfo.Title) ? null : episodeInfo.Title,
TitleProvider.AniDB_Default =>
episodeInfo.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value,
episodeInfo.Titles.FirstOrDefault(title => title.Source is "AniDB" && title.LanguageCode is "en")?.Value is { } anidbDefault && !IgnoredSubTitles.Contains(anidbDefault) ? anidbDefault : null,
TitleProvider.AniDB_LibraryLanguage =>
GetTitlesForLanguage(episodeInfo.Titles.Where(t => t.Source is "AniDB").ToList(), false, metadataLanguage),
TitleProvider.AniDB_CountryOfOrigin =>
Expand Down Expand Up @@ -404,7 +404,7 @@ private static TitleProvider[] GetOrderedTitleProvidersByType(TitleProviderType
else {
title = titles.FirstOrDefault()?.Value;
}
if (!string.IsNullOrWhiteSpace(title) && !EpisodeNameRegex().IsMatch(title))
if (!string.IsNullOrWhiteSpace(title) && !EpisodeNameRegex().IsMatch(title) && !IgnoredSubTitles.Contains(title))
return title;
}
return null;
Expand Down

0 comments on commit a07ec77

Please sign in to comment.