mirror of
https://github.com/lampame/lampac-ukraine.git
synced 2026-06-17 12:08:54 +00:00
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.
This commit is contained in:
parent
9e677b4113
commit
a2071449f9
@ -461,7 +461,8 @@ namespace LME.UAKino
|
|||||||
|
|
||||||
// Парсимо голоси (озвучки) з вкладки playlists-lists
|
// Парсимо голоси (озвучки) з вкладки playlists-lists
|
||||||
var voiceItems = playerDiv.SelectNodes(".//div[@class='playlists-lists']//ul/li");
|
var voiceItems = playerDiv.SelectNodes(".//div[@class='playlists-lists']//ul/li");
|
||||||
if (voiceItems != null)
|
bool hasVoiceTabs = voiceItems != null && voiceItems.Count > 0;
|
||||||
|
if (hasVoiceTabs)
|
||||||
{
|
{
|
||||||
foreach (var li in voiceItems)
|
foreach (var li in voiceItems)
|
||||||
{
|
{
|
||||||
@ -496,6 +497,26 @@ namespace LME.UAKino
|
|||||||
|
|
||||||
VoiceGroup targetVoice = null;
|
VoiceGroup targetVoice = null;
|
||||||
|
|
||||||
|
if (!hasVoiceTabs)
|
||||||
|
{
|
||||||
|
// Фільм: вкладок голосів нема — кожен li це окремий стрім (версія)
|
||||||
|
// Групуємо за data-voice або створюємо нову групу
|
||||||
|
string groupName = !string.IsNullOrEmpty(voiceAttr) ? voiceAttr : text;
|
||||||
|
targetVoice = voices.FirstOrDefault(v =>
|
||||||
|
v.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase));
|
||||||
|
if (targetVoice == null)
|
||||||
|
{
|
||||||
|
targetVoice = new VoiceGroup
|
||||||
|
{
|
||||||
|
Name = groupName,
|
||||||
|
DataId = dataId,
|
||||||
|
Episodes = new List<EpisodeItem>()
|
||||||
|
};
|
||||||
|
voices.Add(targetVoice);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (!string.IsNullOrEmpty(dataId))
|
if (!string.IsNullOrEmpty(dataId))
|
||||||
targetVoice = voices.FirstOrDefault(v => v.DataId == dataId);
|
targetVoice = voices.FirstOrDefault(v => v.DataId == dataId);
|
||||||
|
|
||||||
@ -504,6 +525,7 @@ namespace LME.UAKino
|
|||||||
v.Name.Equals(voiceAttr, StringComparison.OrdinalIgnoreCase));
|
v.Name.Equals(voiceAttr, StringComparison.OrdinalIgnoreCase));
|
||||||
|
|
||||||
targetVoice ??= voices.FirstOrDefault();
|
targetVoice ??= voices.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
int? epNum = ExtractEpisodeNumber(text);
|
int? epNum = ExtractEpisodeNumber(text);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user