From 371a54f759b23cbacfeaf44d5ab607d8d966ddb3 Mon Sep 17 00:00:00 2001 From: baliasnyifeliks Date: Fri, 6 Feb 2026 17:14:54 +0200 Subject: [PATCH] feat(controllers): add checksearch parameter support across all streaming service controllers Add checksearch functionality to validate online search availability for multiple streaming services including AnimeON, Bamboo, CikavaIdeya, Makhno, Mikai, StarLight, UAKino, UaTUT, Uaflix, and Unimay controllers. Each controller now supports a checksearch parameter that returns appropriate responses when online search validation is enabled. --- AnimeON/Controller.cs | 15 ++++++++++++++- Bamboo/Controller.cs | 14 +++++++++++++- CikavaIdeya/Controller.cs | 14 +++++++++++++- Makhno/Controller.cs | 7 ++++++- Mikai/Controller.cs | 15 ++++++++++++++- StarLight/Controller.cs | 14 +++++++++++++- UAKino/Controller.cs | 14 +++++++++++++- UaTUT/Controller.cs | 13 ++++++++++++- Uaflix/Controller.cs | 3 +++ Unimay/Controllers/Controller.cs | 14 +++++++++++++- 10 files changed, 114 insertions(+), 9 deletions(-) diff --git a/AnimeON/Controller.cs b/AnimeON/Controller.cs index ef8ca26..a4307db 100644 --- a/AnimeON/Controller.cs +++ b/AnimeON/Controller.cs @@ -28,7 +28,7 @@ namespace AnimeON.Controllers [HttpGet] [Route("animeon")] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -37,6 +37,19 @@ namespace AnimeON.Controllers return Forbid(); var invoke = new AnimeONInvoke(init, hybridCache, OnLog, proxyManager); + + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("animeon", proxyManager); + + var seasons = await invoke.Search(imdb_id, kinopoisk_id, title, original_title, year, serial); + if (seasons != null && seasons.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("animeon", proxyManager); + } + OnLog($"AnimeON Index: title={title}, original_title={original_title}, serial={serial}, s={s}, t={t}, year={year}, imdb_id={imdb_id}, kp={kinopoisk_id}"); var seasons = await invoke.Search(imdb_id, kinopoisk_id, title, original_title, year, serial); diff --git a/Bamboo/Controller.cs b/Bamboo/Controller.cs index 2d069db..f2a993b 100644 --- a/Bamboo/Controller.cs +++ b/Bamboo/Controller.cs @@ -24,7 +24,7 @@ namespace Bamboo.Controllers [HttpGet] [Route("bamboo")] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false, string href = null) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false, string href = null, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -34,6 +34,18 @@ namespace Bamboo.Controllers var invoke = new BambooInvoke(init, hybridCache, OnLog, proxyManager); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("bamboo", proxyManager); + + var searchResults = await invoke.Search(title, original_title); + if (searchResults != null && searchResults.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("bamboo", proxyManager); + } + string itemUrl = href; if (string.IsNullOrEmpty(itemUrl)) { diff --git a/CikavaIdeya/Controller.cs b/CikavaIdeya/Controller.cs index 25fb9c3..e0612dd 100644 --- a/CikavaIdeya/Controller.cs +++ b/CikavaIdeya/Controller.cs @@ -27,7 +27,7 @@ namespace CikavaIdeya.Controllers [HttpGet] [Route("cikavaideya")] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, int e = -1, bool play = false, bool rjson = false) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, int e = -1, bool play = false, bool rjson = false, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -37,6 +37,18 @@ namespace CikavaIdeya.Controllers var invoke = new CikavaIdeyaInvoke(init, hybridCache, OnLog, proxyManager); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("cikavaideya", proxyManager); + + var episodesInfo = await invoke.Search(imdb_id, kinopoisk_id, title, original_title, year, serial == 0); + if (episodesInfo != null && episodesInfo.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("cikavaideya", proxyManager); + } + var episodesInfo = await invoke.Search(imdb_id, kinopoisk_id, title, original_title, year, serial == 0); if (episodesInfo == null) return Content("CikavaIdeya", "text/html; charset=utf-8"); diff --git a/Makhno/Controller.cs b/Makhno/Controller.cs index 810e86e..c320836 100644 --- a/Makhno/Controller.cs +++ b/Makhno/Controller.cs @@ -27,7 +27,12 @@ namespace Makhno public async Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, int season = -1, bool rjson = false, bool checksearch = false) { if (checksearch) - return Content("data-json="); + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError(); + + return Content("data-json=", "text/plain; charset=utf-8"); + } await UpdateService.ConnectAsync(host); diff --git a/Mikai/Controller.cs b/Mikai/Controller.cs index 90fdaef..d0384d5 100644 --- a/Mikai/Controller.cs +++ b/Mikai/Controller.cs @@ -24,7 +24,7 @@ namespace Mikai.Controllers [HttpGet] [Route("mikai")] - public async Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false) + public async Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, bool rjson = false, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -33,6 +33,19 @@ namespace Mikai.Controllers return Forbid(); var invoke = new MikaiInvoke(init, hybridCache, OnLog, _proxyManager); + + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("mikai", _proxyManager); + + var searchResults = await invoke.Search(title, original_title, year); + if (searchResults != null && searchResults.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("mikai", _proxyManager); + } + OnLog($"Mikai Index: title={title}, original_title={original_title}, serial={serial}, s={s}, t={t}, year={year}"); var searchResults = await invoke.Search(title, original_title, year); diff --git a/StarLight/Controller.cs b/StarLight/Controller.cs index 0dadfb4..cc15189 100644 --- a/StarLight/Controller.cs +++ b/StarLight/Controller.cs @@ -25,7 +25,7 @@ namespace StarLight.Controllers [HttpGet] [Route("starlight")] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, int s = -1, bool rjson = false, string href = null) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, int s = -1, bool rjson = false, string href = null, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -35,6 +35,18 @@ namespace StarLight.Controllers var invoke = new StarLightInvoke(init, hybridCache, OnLog, proxyManager); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("starlight", proxyManager); + + var searchResults = await invoke.Search(title, original_title); + if (searchResults != null && searchResults.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("starlight", proxyManager); + } + string itemUrl = href; if (string.IsNullOrEmpty(itemUrl)) { diff --git a/UAKino/Controller.cs b/UAKino/Controller.cs index f10ea6e..3df6ad4 100644 --- a/UAKino/Controller.cs +++ b/UAKino/Controller.cs @@ -23,7 +23,7 @@ namespace UAKino.Controllers [HttpGet] [Route("uakino")] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, bool rjson = false, string href = null) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, bool rjson = false, string href = null, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -33,6 +33,18 @@ namespace UAKino.Controllers var invoke = new UAKinoInvoke(init, hybridCache, OnLog, proxyManager); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("uakino", proxyManager); + + var searchResults = await invoke.Search(title, original_title, serial); + if (searchResults != null && searchResults.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("uakino", proxyManager); + } + string itemUrl = href; if (string.IsNullOrEmpty(itemUrl)) { diff --git a/UaTUT/Controller.cs b/UaTUT/Controller.cs index 13dac3a..ecb64f3 100644 --- a/UaTUT/Controller.cs +++ b/UaTUT/Controller.cs @@ -25,7 +25,7 @@ namespace UaTUT } [HttpGet] - async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, int season = -1, bool rjson = false) + async public Task Index(long id, string imdb_id, long kinopoisk_id, string title, string original_title, string original_language, int year, string source, int serial, string account_email, string t, int s = -1, int season = -1, bool rjson = false, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -45,6 +45,17 @@ namespace UaTUT return await invoke.Search(original_title ?? title, imdb_id); }); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError(); + + if (searchResults != null && searchResults.Any()) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError(); + } + if (searchResults == null || !searchResults.Any()) { OnLog("UaTUT: No search results found"); diff --git a/Uaflix/Controller.cs b/Uaflix/Controller.cs index 4ca2558..7512907 100644 --- a/Uaflix/Controller.cs +++ b/Uaflix/Controller.cs @@ -47,6 +47,9 @@ namespace Uaflix.Controllers // Обробка параметра checksearch - повертаємо спеціальну відповідь для валідації if (checksearch) { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("uaflix", proxyManager); + try { string filmTitle = !string.IsNullOrEmpty(title) ? title : original_title; diff --git a/Unimay/Controllers/Controller.cs b/Unimay/Controllers/Controller.cs index 0c692f9..5242090 100644 --- a/Unimay/Controllers/Controller.cs +++ b/Unimay/Controllers/Controller.cs @@ -23,7 +23,7 @@ namespace Unimay.Controllers [HttpGet] [Route("unimay")] - async public ValueTask Index(string title, string original_title, string code, int serial = -1, int s = -1, int e = -1, bool play = false, bool rjson = false) + async public ValueTask Index(string title, string original_title, string code, int serial = -1, int s = -1, int e = -1, bool play = false, bool rjson = false, bool checksearch = false) { await UpdateService.ConnectAsync(host); @@ -33,6 +33,18 @@ namespace Unimay.Controllers var invoke = new UnimayInvoke(init, hybridCache, OnLog, proxyManager); + if (checksearch) + { + if (AppInit.conf?.online?.checkOnlineSearch != true) + return OnError("unimay"); + + var searchResults = await invoke.Search(title, original_title, serial); + if (searchResults?.Content != null && searchResults.Content.Count > 0) + return Content("data-json=", "text/plain; charset=utf-8"); + + return OnError("unimay"); + } + if (!string.IsNullOrEmpty(code)) { // Fetch release details