mirror of
https://github.com/home-assistant/core.git
synced 2025-07-26 22:57:17 +00:00
Add optional media description to Mastodon post action (#137224)
Add optional media description
This commit is contained in:
parent
c8b4e62710
commit
31d2d968c4
@ -26,3 +26,4 @@ ATTR_VISIBILITY = "visibility"
|
|||||||
ATTR_CONTENT_WARNING = "content_warning"
|
ATTR_CONTENT_WARNING = "content_warning"
|
||||||
ATTR_MEDIA_WARNING = "media_warning"
|
ATTR_MEDIA_WARNING = "media_warning"
|
||||||
ATTR_MEDIA = "media"
|
ATTR_MEDIA = "media"
|
||||||
|
ATTR_MEDIA_DESCRIPTION = "media_description"
|
||||||
|
@ -16,6 +16,7 @@ from .const import (
|
|||||||
ATTR_CONFIG_ENTRY_ID,
|
ATTR_CONFIG_ENTRY_ID,
|
||||||
ATTR_CONTENT_WARNING,
|
ATTR_CONTENT_WARNING,
|
||||||
ATTR_MEDIA,
|
ATTR_MEDIA,
|
||||||
|
ATTR_MEDIA_DESCRIPTION,
|
||||||
ATTR_MEDIA_WARNING,
|
ATTR_MEDIA_WARNING,
|
||||||
ATTR_STATUS,
|
ATTR_STATUS,
|
||||||
ATTR_VISIBILITY,
|
ATTR_VISIBILITY,
|
||||||
@ -42,6 +43,7 @@ SERVICE_POST_SCHEMA = vol.Schema(
|
|||||||
vol.Optional(ATTR_VISIBILITY): vol.In([x.lower() for x in StatusVisibility]),
|
vol.Optional(ATTR_VISIBILITY): vol.In([x.lower() for x in StatusVisibility]),
|
||||||
vol.Optional(ATTR_CONTENT_WARNING): str,
|
vol.Optional(ATTR_CONTENT_WARNING): str,
|
||||||
vol.Optional(ATTR_MEDIA): str,
|
vol.Optional(ATTR_MEDIA): str,
|
||||||
|
vol.Optional(ATTR_MEDIA_DESCRIPTION): str,
|
||||||
vol.Optional(ATTR_MEDIA_WARNING): bool,
|
vol.Optional(ATTR_MEDIA_WARNING): bool,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -81,6 +83,7 @@ def setup_services(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
spoiler_text: str | None = call.data.get(ATTR_CONTENT_WARNING)
|
spoiler_text: str | None = call.data.get(ATTR_CONTENT_WARNING)
|
||||||
media_path: str | None = call.data.get(ATTR_MEDIA)
|
media_path: str | None = call.data.get(ATTR_MEDIA)
|
||||||
|
media_description: str | None = call.data.get(ATTR_MEDIA_DESCRIPTION)
|
||||||
media_warning: str | None = call.data.get(ATTR_MEDIA_WARNING)
|
media_warning: str | None = call.data.get(ATTR_MEDIA_WARNING)
|
||||||
|
|
||||||
await hass.async_add_executor_job(
|
await hass.async_add_executor_job(
|
||||||
@ -91,6 +94,7 @@ def setup_services(hass: HomeAssistant) -> None:
|
|||||||
visibility=visibility,
|
visibility=visibility,
|
||||||
spoiler_text=spoiler_text,
|
spoiler_text=spoiler_text,
|
||||||
media_path=media_path,
|
media_path=media_path,
|
||||||
|
media_description=media_description,
|
||||||
sensitive=media_warning,
|
sensitive=media_warning,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -112,9 +116,12 @@ def setup_services(hass: HomeAssistant) -> None:
|
|||||||
)
|
)
|
||||||
|
|
||||||
media_type = get_media_type(media_path)
|
media_type = get_media_type(media_path)
|
||||||
|
media_description = kwargs.get("media_description")
|
||||||
try:
|
try:
|
||||||
media_data = client.media_post(
|
media_data = client.media_post(
|
||||||
media_file=media_path, mime_type=media_type
|
media_file=media_path,
|
||||||
|
mime_type=media_type,
|
||||||
|
description=media_description,
|
||||||
)
|
)
|
||||||
|
|
||||||
except MastodonAPIError as err:
|
except MastodonAPIError as err:
|
||||||
@ -125,6 +132,7 @@ def setup_services(hass: HomeAssistant) -> None:
|
|||||||
) from err
|
) from err
|
||||||
|
|
||||||
kwargs.pop("media_path", None)
|
kwargs.pop("media_path", None)
|
||||||
|
kwargs.pop("media_description", None)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
media_ids: str | None = None
|
media_ids: str | None = None
|
||||||
|
@ -24,6 +24,10 @@ post:
|
|||||||
media:
|
media:
|
||||||
selector:
|
selector:
|
||||||
text:
|
text:
|
||||||
|
media_description:
|
||||||
|
required: false
|
||||||
|
selector:
|
||||||
|
text:
|
||||||
media_warning:
|
media_warning:
|
||||||
required: true
|
required: true
|
||||||
selector:
|
selector:
|
||||||
|
@ -89,6 +89,10 @@
|
|||||||
"name": "Media",
|
"name": "Media",
|
||||||
"description": "Attach an image or video to the post."
|
"description": "Attach an image or video to the post."
|
||||||
},
|
},
|
||||||
|
"media_description": {
|
||||||
|
"name": "Media description",
|
||||||
|
"description": "If an image or video is attached, will add a description for this media for people with visual impairments."
|
||||||
|
},
|
||||||
"media_warning": {
|
"media_warning": {
|
||||||
"name": "Media warning",
|
"name": "Media warning",
|
||||||
"description": "If an image or video is attached, will mark the media as sensitive (default: no media warning)."
|
"description": "If an image or video is attached, will mark the media as sensitive (default: no media warning)."
|
||||||
|
@ -9,6 +9,7 @@ from homeassistant.components.mastodon.const import (
|
|||||||
ATTR_CONFIG_ENTRY_ID,
|
ATTR_CONFIG_ENTRY_ID,
|
||||||
ATTR_CONTENT_WARNING,
|
ATTR_CONTENT_WARNING,
|
||||||
ATTR_MEDIA,
|
ATTR_MEDIA,
|
||||||
|
ATTR_MEDIA_DESCRIPTION,
|
||||||
ATTR_STATUS,
|
ATTR_STATUS,
|
||||||
ATTR_VISIBILITY,
|
ATTR_VISIBILITY,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
@ -75,6 +76,21 @@ from tests.common import MockConfigEntry
|
|||||||
"sensitive": None,
|
"sensitive": None,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
{
|
||||||
|
ATTR_STATUS: "test toot",
|
||||||
|
ATTR_CONTENT_WARNING: "Spoiler",
|
||||||
|
ATTR_MEDIA: "/image.jpg",
|
||||||
|
ATTR_MEDIA_DESCRIPTION: "A test image",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"status": "test toot",
|
||||||
|
"spoiler_text": "Spoiler",
|
||||||
|
"visibility": None,
|
||||||
|
"media_ids": "1",
|
||||||
|
"sensitive": None,
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_service_post(
|
async def test_service_post(
|
||||||
@ -128,6 +144,7 @@ async def test_service_post(
|
|||||||
"spoiler_text": "Spoiler",
|
"spoiler_text": "Spoiler",
|
||||||
"visibility": None,
|
"visibility": None,
|
||||||
"media_ids": "1",
|
"media_ids": "1",
|
||||||
|
"media_description": None,
|
||||||
"sensitive": None,
|
"sensitive": None,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user