aboutsummaryrefslogtreecommitdiff
path: root/core/image.py
blob: e699d799560f355eb6f9c49c394fe0b2701a2a19 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from bs4 import BeautifulSoup
from typing import Optional


def contains_image(html: str) -> Optional[str]:
    """
    Extracts the source URL of the first image found in the given HTML content.

    This function parses the provided HTML string to locate the first image
    (`<img>`) tag. If an image tag is found, it returns the value of the `src`
    attribute. If no image is found, it returns None.

    :param html: A string containing HTML content to be parsed.
    :type html: str
    :return: The `src` attribute value of the first found image tag, or None if
        no image tag is found.
    :rtype: Optional[str]
    """
    soup = BeautifulSoup(html, "html.parser")
    image = soup.find("img", recursive=True)
    if image:
        src = image.get("src")
        if src and src.lower().split('.')[-1] in ['png', 'jpeg', 'gif', 'webp']:
            return src
    return None