From 2a91e2076e45c8fdfc352c8ae96f8686a118f142 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 8 Mar 2026 08:45:44 +0200 Subject: [PATCH] refactor(nmoonanime): modify ResolveMalId to handle source parameter Update ResolveMalId method to accept and process a source parameter, enabling different resolution logic for tmdb and hikka sources. TMDB source now returns null, while HIKKA source uses kinopoiskId when available. --- NMoonAnime/Controller.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/NMoonAnime/Controller.cs b/NMoonAnime/Controller.cs index df1afee..cdf81f0 100644 --- a/NMoonAnime/Controller.cs +++ b/NMoonAnime/Controller.cs @@ -35,7 +35,7 @@ namespace NMoonAnime.Controllers return Forbid(); var invoke = new NMoonAnimeInvoke(init, hybridCache, OnLog, proxyManager); - string effectiveMalId = ResolveMalId(mal_id, kinopoisk_id); + string effectiveMalId = ResolveMalId(mal_id, kinopoisk_id, source); if (checksearch) { @@ -49,7 +49,7 @@ namespace NMoonAnime.Controllers return OnError("nmoonanime", proxyManager); } - OnLog($"NMoonAnime: назва={title}, imdb={imdb_id}, kinopoisk_id(як mal_id)={kinopoisk_id}, mal_id_ефективний={effectiveMalId}, рік={year}, серіал={serial}, сезон={s}, озвучка={t}"); + OnLog($"NMoonAnime: назва={title}, source={source}, imdb={imdb_id}, kinopoisk_id(як mal_id)={kinopoisk_id}, mal_id_ефективний={effectiveMalId}, рік={year}, серіал={serial}, сезон={s}, озвучка={t}"); var seasons = await invoke.Search(imdb_id, effectiveMalId, title, year); if (seasons == null || seasons.Count == 0) @@ -298,12 +298,18 @@ namespace NMoonAnime.Controllers return index; } - private static string ResolveMalId(string malId, long kinopoiskId) + private static string ResolveMalId(string malId, long kinopoiskId, string source) { + if (!string.IsNullOrWhiteSpace(source) && source.Equals("tmdb", StringComparison.OrdinalIgnoreCase)) + return null; + if (!string.IsNullOrWhiteSpace(malId)) return malId.Trim(); - return kinopoiskId > 0 ? kinopoiskId.ToString() : null; + if (!string.IsNullOrWhiteSpace(source) && source.Equals("hikka", StringComparison.OrdinalIgnoreCase) && kinopoiskId > 0) + return kinopoiskId.ToString(); + + return null; } private string BuildStreamUrl(OnlinesSettings init, string streamLink)