diff --git a/dumas_h3_longvideos.py b/dumas_h3_longvideos.py index 5cc4d23..9e1e54f 100644 --- a/dumas_h3_longvideos.py +++ b/dumas_h3_longvideos.py @@ -4462,46 +4462,25 @@ def _slot_refs_for_text(text, ref_slots): return refs -def _named_character_refs_for_text(text, ref_slots): - haystack = str(text or "") - matched = [] - for slot_number, raw in enumerate(ref_slots or [], 1): - ref = _reference_slot(raw, slot_number) +def _named_character_refs_for_text(text, ref_slots): + haystack = str(text or "") + matched = [] + for slot_number, raw in enumerate(ref_slots or [], 1): + ref = _reference_slot(raw, slot_number) if ref.get("kind") != "character" or _reference_image(ref) is None: continue for name in _reference_name_keys(ref): if re.search(r"\b" + re.escape(name) + r"\b", haystack, re.I): - matched.append((slot_number, ref)) - break - return matched - - -def _named_refs_for_text(text, ref_slots, kinds=None): - haystack = str(text or "") - matched = [] - wanted = {str(k).strip().lower() for k in (kinds or ()) if str(k).strip()} - by_name = {} - for slot_number, ref in enumerate(ref_slots or [], 1): - if ref is None or _reference_image(ref) is None: - continue - if wanted and str(ref.get("kind") or "").strip().lower() not in wanted: - continue - for name in _reference_name_keys(ref): - by_name.setdefault(name.lower(), []).append((slot_number, ref, name)) - for entries in by_name.values(): - if len(entries) != 1: - continue - slot_number, ref, name = entries[0] - if re.search(r"\b" + re.escape(name) + r"\b", haystack, re.I): - matched.append((slot_number, ref)) - return matched - - -def _matched_reference_slots(text, ref_slots): - matched = [] - seen = set() - for slot_number, ref in _slot_refs_for_text(text, ref_slots) + _named_character_refs_for_text(text, ref_slots): - if slot_number in seen: + matched.append((slot_number, ref)) + break + return matched + + +def _matched_reference_slots(text, ref_slots): + matched = [] + seen = set() + for slot_number, ref in _slot_refs_for_text(text, ref_slots) + _named_character_refs_for_text(text, ref_slots): + if slot_number in seen: continue seen.add(slot_number) matched.append((slot_number, ref))