Clean up attributes of Overseerr event entity (#136251)

This commit is contained in:
Joost Lekkerkerker 2025-01-22 15:17:57 +01:00 committed by GitHub
parent eb20a00aa2
commit 7a78f87fa6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 10 deletions

View File

@ -55,6 +55,8 @@ async def async_setup_entry(
class OverseerrEvent(OverseerrEntity, EventEntity):
"""Defines a Overseerr event entity."""
entity_description: OverseerrEventEntityDescription
def __init__(
self,
coordinator: OverseerrCoordinator,
@ -76,7 +78,11 @@ class OverseerrEvent(OverseerrEntity, EventEntity):
"""Handle incoming event."""
event_type = event["notification_type"].lower()
if event_type.split("_")[0] == self.entity_description.key:
self._trigger_event(event_type[6:], event)
self._attr_entity_picture = event.get("image")
self._trigger_event(
event_type[6:],
parse_event(event, self.entity_description.nullable_fields),
)
self.async_write_ha_state()
@callback
@ -94,6 +100,17 @@ class OverseerrEvent(OverseerrEntity, EventEntity):
def parse_event(event: dict[str, Any], nullable_fields: list[str]) -> dict[str, Any]:
"""Parse event."""
event.pop("notification_type")
event.pop("image")
for field in nullable_fields:
event.pop(field)
if (media := event.get("media")) is not None:
for field in ("status", "status4k"):
media[field] = media[field].lower()
for field in ("tmdb_id", "tvdb_id"):
if (value := media.get(field)) != "":
media[field] = int(value)
else:
media[field] = None
if (request := event.get("request")) is not None:
request["request_id"] = int(request["request_id"])
return event

View File

@ -44,7 +44,7 @@
# name: test_entities[event.overseerr_last_media_event-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'comment': None,
'entity_picture': 'https://image.tmdb.org/t/p/w600_and_h900_bestv2/something.jpg',
'event_type': 'auto_approved',
'event_types': list([
'pending',
@ -55,19 +55,16 @@
'auto_approved',
]),
'friendly_name': 'Overseerr Last media event',
'image': 'https://image.tmdb.org/t/p/w600_and_h900_bestv2/something.jpg',
'issue': None,
'media': dict({
'media_type': 'movie',
'status': 'PENDING',
'status4k': 'UNKNOWN',
'tmdb_id': '123',
'tvdb_id': '',
'status': 'pending',
'status4k': 'unknown',
'tmdb_id': 123,
'tvdb_id': None,
}),
'message': 'Here is an interesting Linux ISO that was automatically approved.',
'notification_type': 'MEDIA_AUTO_APPROVED',
'request': dict({
'request_id': '16',
'request_id': 16,
'requested_by_avatar': 'https://plex.tv/users/abc/avatar?c=123',
'requested_by_email': 'my@email.com',
'requested_by_settings_discord_id': '123',