import re
from django import template

register = template.Library()


@register.filter
def get_item(dictionary, key):
    """
    Obtener un valor de un diccionario usando una clave en plantillas de Django.
    Ejemplo: {{ progress_map|get_item:item.id }}
    """
    if isinstance(dictionary, dict):
        return dictionary.get(key)
    return None


@register.filter
def youtube_embed_url(url):
    """
    Convierte cualquier URL de YouTube en un embed limpio.
    """
    if not url:
        return ""
    url_str = str(url)
    match = re.search(r'(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))([\w-]{11})', url_str)
    if match:
        video_id = match.group(1)
        return f"https://www.youtube.com/embed/{video_id}"
    return url_str
