2026-02-01 09:31:38 +01:00

57 lines
1.5 KiB
Python

"""Provide classes related to inline media."""
from __future__ import annotations
from ..util import _deprecate_args
class InlineMedia:
"""Provides a way to embed media in self posts."""
TYPE = None
def __eq__(self, other: InlineMedia) -> bool:
"""Return whether the other instance equals the current."""
return all(
getattr(self, attr) == getattr(other, attr)
for attr in ["TYPE", "path", "caption", "media_id"]
)
@_deprecate_args("path", "caption")
def __init__(self, *, caption: str = None, path: str):
"""Initialize an :class:`.InlineMedia` instance.
:param caption: An optional caption to add to the image (default: ``None``).
:param path: The path to a media file.
"""
self.path = path
self.caption = caption
self.media_id = None
def __repr__(self) -> str:
"""Return an object initialization representation of the instance."""
return f"<{self.__class__.__name__} caption={self.caption!r}>"
def __str__(self) -> str:
"""Return a string representation of the media in Markdown format."""
return f'\n\n![{self.TYPE}]({self.media_id} "{self.caption if self.caption else ""}")\n\n'
class InlineGif(InlineMedia):
"""Class to provide a gif to embed in text."""
TYPE = "gif"
class InlineImage(InlineMedia):
"""Class to provide am image to embed in text."""
TYPE = "img"
class InlineVideo(InlineMedia):
"""Class to provide a video to embed in text."""
TYPE = "video"