11 Commits

Author SHA1 Message Date
Felix
d145313c5b fix(uakino): always request ashdi vod with multivoice parameter
Ensure Ashdi VOD fetches include the `multivoice` query flag so the response
contains the full stream array instead of a single variant. This restores
complete track availability for downstream parsing and labeling logic.
2026-05-15 20:08:08 +03:00
Felix
b6a884d6e3 feat(uakino): return all Ashdi VOD streams with per-track labels
Add a dedicated resolver that parses the Ashdi multivoice JSON array and
returns every available stream entry instead of a single resolved URL.

Update controller fallback handling to build MovieTpl output from the full
stream list, preserving optional item titles as display labels and defaulting
to "Фільм" when absent. This exposes separate playable variants in results
and avoids collapsing multivoice entries into one stream link.
2026-05-15 20:03:34 +03:00
Felix
460f527a6f refactor(uakino): stop appending multivoice query in Ashdi VOD resolver
Remove automatic `?multivoice` query injection when resolving Ashdi VOD
URLs. Each VOD now resolves through its own stream endpoint without
forcing voice aggregation into a single mixed array.

This keeps stream selection isolated per item and avoids unintended
cross-voice merging during direct link resolution.
2026-05-15 19:58:20 +03:00
Felix
6800c5d393 fix(uakino): parse Ashdi file arrays to resolve direct stream URL
Handle Ashdi responses where `file` contains a JSON array encoded in the
page script instead of a plain URL. Extract the balanced array payload,
parse it safely, and return the first stream `file` entry when present.

This prevents unresolved VOD links when complex playlist structures are
embedded inline and keeps existing simple URL handling unchanged.
2026-05-15 19:53:00 +03:00
Felix
a2071449f9 fix(uakino): group movie stream entries when voice tabs are absent
Handle playlist items differently when `playlists-lists` voice tabs are
missing so film pages no longer collapse multiple stream versions into a
single fallback voice group.

When tabs are absent, treat each `li` as a stream variant and resolve its
target voice by `data-voice` (or item text) with on-demand group creation.
Keep existing tab-based matching logic unchanged for serial/episode layouts.
2026-05-15 19:40:06 +03:00
Felix
9e677b4113 refactor(uakino): remove PlayerJS decode fallback from Ashdi resolver
Drop the secondary PlayerJsDecoder extraction path and keep complex VOD
payloads untouched by returning the original value. Align the module
manifest by removing the now-unused shared PlayerJsDecoder dependency.
2026-05-15 19:30:42 +03:00
Felix
90e7ec4602 build(uakino): include PlayerJs decoder shared dependency
Add `PlayerJsDecoder.cs` to the UAKino module manifest so the module ships
with the shared PlayerJS decoding utility required at runtime.
2026-05-15 19:28:13 +03:00
Felix
15ff1ee10c refactor(uakino): centralize Ashdi VOD resolution and dedupe movie streams
Move Ashdi URL handling into a dedicated resolver in `UAKinoInvoke` and
reuse it from controller paths instead of appending query params inline.

Resolve Ashdi pages to direct player file URLs, with fallback extraction
strategies and safe error handling, then build stream links from resolved
targets.

Avoid duplicate movie entries by skipping already processed resolved URLs,
and propagate the selected season number when rendering episode metadata.
2026-05-15 19:26:55 +03:00
Felix
80f0869401 fix(uakino): add HTML page fallback when playlist API returns no data
Handle cases where UAKino playlist requests return empty results by
resolving stream URLs directly from the content page HTML.

Add a fallback parser that extracts video sources from `link[itemprop=video]`
or `iframe#pre`, and use it to return playable movie or single-episode
responses instead of failing immediately.

Ensure Ashdi links consistently include `multivoice` for movie playback,
including episode file URLs, to improve stream compatibility.
2026-05-15 19:06:29 +03:00
Felix
a54bc0e435 refactor(uakino): restructure search results into grouped season entries
Replace flat search result handling with a grouped model where each show
contains a list of season entries, enabling deterministic serial flow for
single-show and multi-season matches.

Update controller logic to branch serial/movie processing against grouped
results, add explicit season selection handling, and reuse selected season
URLs on follow-up requests.

Adjust search parsing to collect raw items, filter non-content entries, and
group by normalized show identity before caching, removing early year-based
filtering from cached returns.
2026-05-15 19:05:01 +03:00
Felix
317cb6292c feat(uakino): add UAKino online source module
Add new online source module for UAKino website providing movie and series search and playback functionality. Includes controller, model definitions, online API integration, search implementation with caching, and module initialization. Implements similar result handling for multiple search results and serial/movie playback differentiation.
2026-05-15 18:46:00 +03:00