
from __future__ import annotations
from typing import Dict, List
from bs4 import BeautifulSoup
from ..registry import extractor

@extractor
def ex_stickers(soup: BeautifulSoup, url: str) -> Dict:
    """
    <div class="stickers">
      <span class="sticker xxx"></span>
      ...
    </div>
    """
    root = soup.select_one("div.stickers")
    if not root:
        return {"stickers": []}
    stickers: List[str] = []
    seen = set()
    for sp in root.select("span.sticker"):
        classes = sp.get("class") or []
        extras = [c.strip() for c in classes if c and c.lower() != "sticker"]
        data_name = (sp.get("data-sticker") or "").strip()
        if data_name:
            extras.append(data_name)
        for x in extras:
            if x and x not in seen:
                seen.add(x)
                stickers.append(x)
    return {"stickers": stickers}
