using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using Shared.Engine.RxEnumerate; using Shared.Models.Online.Settings; using Shared.PlaywrightCore; namespace Online.Controllers { public class Kinogo : BaseOnlineController { public Kinogo() : base(AppInit.conf.Kinogo) { } public class SearchModel { public string link { get; set; } public SimilarTpl similar { get; set; } } [HttpGet] [Route("lite/kinogo")] async public Task Index(string title, string original_title, int year, bool rjson, string href, bool similar, int s = -1, int t = -1) { if (await IsRequestBlocked(rch: true)) return badInitMsg; #region search if (string.IsNullOrEmpty(href)) { if (string.IsNullOrEmpty(title)) return OnError("search params"); reset_search: var search = await InvokeCacheResult($"kinogo:search:{title}:{year}", 20, async e => { string search = rch?.enable == true ? await rch.Get($"{init.corsHost()}/search/{title}") : await PlaywrightBrowser.Get(init, $"{init.corsHost()}/search/{title}", proxy: proxy_data); var result = SearchResult(search, title, year); if (result == null) return e.Fail("search-result", refresh_proxy: true); return e.Success(result); }); if (similar || string.IsNullOrEmpty(search.Value?.link)) return await ContentTpl(search, () => search.Value.similar); if (string.IsNullOrEmpty(search.Value?.link)) { if (IsRhubFallback(search)) goto reset_search; return OnError(); } href = search.Value?.link; } #endregion if (string.IsNullOrEmpty(href)) return OnError("href"); #region embed reset_embed: var cache = await InvokeCacheResult(ipkey(href), 20, async e => { string embedUrl = null; string targetHref = $"{init.corsHost()}/{href}"; string iframe = rch?.enable == true ? await rch.Get(init.cors(targetHref)) : await PlaywrightBrowser.Get(init, init.cors(targetHref)); string iframeUri = Regex.Match(iframe, "