1 """Sensor for Last.fm account status."""
3 from __future__
import annotations
24 from .coordinator
import LastFMDataUpdateCoordinator, LastFMUserData
30 async_add_entities: AddEntitiesCallback,
32 """Initialize the entries."""
34 coordinator: LastFMDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
38 for username
in entry.options[CONF_USERS]
44 """A class for the Last.fm account."""
46 _attr_attribution =
"Data provided by Last.fm"
47 _attr_translation_key =
"lastfm"
48 _attr_has_entity_name =
True
53 coordinator: LastFMDataUpdateCoordinator,
57 """Initialize the sensor."""
60 self.
_attr_unique_id_attr_unique_id = hashlib.sha256(username.encode(
"utf-8")).hexdigest()
62 configuration_url=
"https://www.last.fm",
63 entry_type=DeviceEntryType.SERVICE,
64 identifiers={(DOMAIN, f
"{entry_id}_{self._attr_unique_id}")},
65 manufacturer=DEFAULT_NAME,
66 name=f
"{DEFAULT_NAME} {username}",
71 """Returns the user from the coordinator."""
72 return self.coordinator.data.get(self.
_username_username)
76 """If user not found in coordinator, entity is unavailable."""
77 return super().available
and self.
user_datauser_data
is not None
81 """Return user avatar."""
88 """Return value of sensor."""
90 return self.
user_datauser_data.now_playing
91 return STATE_NOT_SCROBBLING
95 """Return state attributes."""
100 play_count = self.
user_datauser_data.play_count
101 last_track = self.
user_datauser_data.last_track
102 top_track = self.
user_datauser_data.top_track
104 ATTR_PLAY_COUNT: play_count,
105 ATTR_LAST_PLAYED: last_track,
106 ATTR_TOP_PLAYED: top_track,
LastFMUserData|None user_data(self)
dict[str, Any] extra_state_attributes(self)
None __init__(self, LastFMDataUpdateCoordinator coordinator, str username, str entry_id)
str|None entity_picture(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)