homeassistant 2025.10.0b1__py3-none-any.whl → 2025.10.0b4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of homeassistant might be problematic. Click here for more details.

Files changed (214) hide show
  1. homeassistant/components/accuweather/manifest.json +1 -1
  2. homeassistant/components/accuweather/translations/ga.json +16 -1
  3. homeassistant/components/airos/__init__.py +37 -2
  4. homeassistant/components/airos/config_flow.py +24 -3
  5. homeassistant/components/airos/const.py +5 -0
  6. homeassistant/components/airos/entity.py +8 -3
  7. homeassistant/components/airos/strings.json +12 -0
  8. homeassistant/components/airos/translations/de.json +12 -0
  9. homeassistant/components/airos/translations/en-GB.json +12 -0
  10. homeassistant/components/airos/translations/en.json +12 -0
  11. homeassistant/components/airzone/translations/es.json +10 -0
  12. homeassistant/components/airzone/translations/et.json +10 -0
  13. homeassistant/components/airzone/translations/ga.json +10 -0
  14. homeassistant/components/airzone/translations/pt.json +10 -0
  15. homeassistant/components/alexa_devices/binary_sensor.py +36 -38
  16. homeassistant/components/alexa_devices/config_flow.py +2 -2
  17. homeassistant/components/alexa_devices/coordinator.py +1 -1
  18. homeassistant/components/alexa_devices/diagnostics.py +1 -3
  19. homeassistant/components/alexa_devices/icons.json +0 -40
  20. homeassistant/components/alexa_devices/manifest.json +1 -1
  21. homeassistant/components/alexa_devices/sensor.py +13 -0
  22. homeassistant/components/alexa_devices/strings.json +0 -20
  23. homeassistant/components/alexa_devices/switch.py +27 -7
  24. homeassistant/components/alexa_devices/translations/bg.json +0 -13
  25. homeassistant/components/alexa_devices/translations/cs.json +0 -20
  26. homeassistant/components/alexa_devices/translations/de.json +0 -20
  27. homeassistant/components/alexa_devices/translations/el.json +0 -20
  28. homeassistant/components/alexa_devices/translations/en-GB.json +0 -20
  29. homeassistant/components/alexa_devices/translations/en.json +0 -20
  30. homeassistant/components/alexa_devices/translations/es.json +0 -20
  31. homeassistant/components/alexa_devices/translations/et.json +0 -20
  32. homeassistant/components/alexa_devices/translations/ga.json +0 -20
  33. homeassistant/components/alexa_devices/translations/he.json +0 -7
  34. homeassistant/components/alexa_devices/translations/hu.json +0 -20
  35. homeassistant/components/alexa_devices/translations/it.json +0 -20
  36. homeassistant/components/alexa_devices/translations/ja.json +0 -19
  37. homeassistant/components/alexa_devices/translations/lt.json +0 -20
  38. homeassistant/components/alexa_devices/translations/mk.json +0 -14
  39. homeassistant/components/alexa_devices/translations/nl.json +0 -20
  40. homeassistant/components/alexa_devices/translations/pl.json +0 -5
  41. homeassistant/components/alexa_devices/translations/pt.json +0 -20
  42. homeassistant/components/alexa_devices/translations/ru.json +0 -5
  43. homeassistant/components/alexa_devices/translations/sk.json +0 -20
  44. homeassistant/components/alexa_devices/translations/sv.json +0 -20
  45. homeassistant/components/alexa_devices/translations/tr.json +0 -5
  46. homeassistant/components/alexa_devices/translations/zh-Hans.json +0 -20
  47. homeassistant/components/alexa_devices/translations/zh-Hant.json +0 -20
  48. homeassistant/components/alexa_devices/utils.py +24 -1
  49. homeassistant/components/assist_pipeline/pipeline.py +43 -18
  50. homeassistant/components/assist_pipeline/translations/nl.json +1 -0
  51. homeassistant/components/assist_pipeline/translations/sv.json +1 -0
  52. homeassistant/components/blue_current/translations/es.json +44 -0
  53. homeassistant/components/blue_current/translations/et.json +44 -0
  54. homeassistant/components/blue_current/translations/ga.json +44 -0
  55. homeassistant/components/blue_current/translations/pt.json +44 -0
  56. homeassistant/components/cloud/translations/sk.json +1 -1
  57. homeassistant/components/comelit/config_flow.py +8 -4
  58. homeassistant/components/cync/translations/es.json +32 -0
  59. homeassistant/components/cync/translations/et.json +32 -0
  60. homeassistant/components/cync/translations/ga.json +32 -0
  61. homeassistant/components/cync/translations/pt.json +32 -0
  62. homeassistant/components/cync/translations/ru.json +32 -0
  63. homeassistant/components/ecovacs/translations/es.json +7 -1
  64. homeassistant/components/ecovacs/translations/et.json +7 -1
  65. homeassistant/components/ecovacs/translations/ga.json +6 -1
  66. homeassistant/components/ecovacs/translations/pt.json +4 -0
  67. homeassistant/components/ecovacs/translations/ru.json +4 -0
  68. homeassistant/components/edl21/translations/de.json +1 -1
  69. homeassistant/components/ekeybionyx/translations/es.json +66 -0
  70. homeassistant/components/ekeybionyx/translations/et.json +66 -0
  71. homeassistant/components/ekeybionyx/translations/ga.json +66 -0
  72. homeassistant/components/ekeybionyx/translations/pt.json +66 -0
  73. homeassistant/components/elvia/translations/de.json +3 -3
  74. homeassistant/components/esphome/manager.py +1 -1
  75. homeassistant/components/esphome/manifest.json +1 -1
  76. homeassistant/components/esphome/translations/nl.json +1 -1
  77. homeassistant/components/esphome/translations/sv.json +1 -1
  78. homeassistant/components/ezviz/entity.py +12 -6
  79. homeassistant/components/file/translations/es.json +31 -0
  80. homeassistant/components/file/translations/et.json +31 -0
  81. homeassistant/components/file/translations/ga.json +31 -0
  82. homeassistant/components/file/translations/pt.json +31 -0
  83. homeassistant/components/file/translations/ru.json +31 -0
  84. homeassistant/components/frontend/manifest.json +1 -1
  85. homeassistant/components/geniushub/entity.py +4 -4
  86. homeassistant/components/google_generative_ai_conversation/translations/ga.json +6 -0
  87. homeassistant/components/habitica/translations/ga.json +24 -0
  88. homeassistant/components/hassio/translations/es.json +4 -0
  89. homeassistant/components/hassio/translations/et.json +4 -0
  90. homeassistant/components/hassio/translations/ga.json +4 -0
  91. homeassistant/components/hassio/translations/pt.json +4 -0
  92. homeassistant/components/hassio/translations/ru.json +4 -0
  93. homeassistant/components/here_travel_time/translations/es.json +6 -0
  94. homeassistant/components/here_travel_time/translations/et.json +6 -0
  95. homeassistant/components/here_travel_time/translations/ga.json +6 -0
  96. homeassistant/components/here_travel_time/translations/pt.json +6 -0
  97. homeassistant/components/irm_kmi/translations/ga.json +50 -0
  98. homeassistant/components/lamarzocco/__init__.py +1 -1
  99. homeassistant/components/lamarzocco/coordinator.py +10 -2
  100. homeassistant/components/lamarzocco/manifest.json +1 -1
  101. homeassistant/components/letpot/translations/es.json +10 -0
  102. homeassistant/components/letpot/translations/et.json +10 -0
  103. homeassistant/components/letpot/translations/ga.json +9 -0
  104. homeassistant/components/letpot/translations/pt.json +10 -0
  105. homeassistant/components/lg_thinq/translations/ga.json +9 -0
  106. homeassistant/components/logbook/translations/es.json +6 -1
  107. homeassistant/components/logbook/translations/et.json +6 -1
  108. homeassistant/components/logbook/translations/pl.json +3 -1
  109. homeassistant/components/logbook/translations/pt.json +6 -1
  110. homeassistant/components/logbook/translations/ru.json +6 -1
  111. homeassistant/components/mastodon/translations/ga.json +4 -0
  112. homeassistant/components/matter/translations/es.json +3 -0
  113. homeassistant/components/matter/translations/et.json +3 -0
  114. homeassistant/components/matter/translations/ga.json +3 -0
  115. homeassistant/components/matter/translations/pt.json +3 -0
  116. homeassistant/components/matter/translations/ru.json +3 -0
  117. homeassistant/components/miele/translations/ga.json +1 -0
  118. homeassistant/components/mqtt/translations/es.json +19 -0
  119. homeassistant/components/mqtt/translations/et.json +19 -0
  120. homeassistant/components/mqtt/translations/ga.json +26 -1
  121. homeassistant/components/mqtt/translations/pt.json +19 -0
  122. homeassistant/components/mqtt/translations/ru.json +19 -0
  123. homeassistant/components/mvglive/manifest.json +2 -4
  124. homeassistant/components/mvglive/sensor.py +116 -86
  125. homeassistant/components/nina/strings.json +2 -2
  126. homeassistant/components/nina/translations/ca.json +0 -2
  127. homeassistant/components/nina/translations/cs.json +0 -2
  128. homeassistant/components/nina/translations/de.json +3 -3
  129. homeassistant/components/nina/translations/el.json +0 -1
  130. homeassistant/components/nina/translations/en-GB.json +3 -3
  131. homeassistant/components/nina/translations/en.json +3 -3
  132. homeassistant/components/nina/translations/es.json +0 -2
  133. homeassistant/components/nina/translations/et.json +0 -2
  134. homeassistant/components/nina/translations/fi.json +0 -2
  135. homeassistant/components/nina/translations/ga.json +0 -2
  136. homeassistant/components/nina/translations/hu.json +0 -2
  137. homeassistant/components/nina/translations/id.json +0 -1
  138. homeassistant/components/nina/translations/it.json +0 -2
  139. homeassistant/components/nina/translations/ja.json +0 -2
  140. homeassistant/components/nina/translations/ko.json +0 -2
  141. homeassistant/components/nina/translations/lt.json +0 -2
  142. homeassistant/components/nina/translations/nl.json +0 -2
  143. homeassistant/components/nina/translations/pt-BR.json +0 -1
  144. homeassistant/components/nina/translations/pt.json +0 -2
  145. homeassistant/components/nina/translations/ro.json +0 -1
  146. homeassistant/components/nina/translations/ru.json +0 -2
  147. homeassistant/components/nina/translations/sk.json +0 -2
  148. homeassistant/components/nina/translations/sv.json +0 -2
  149. homeassistant/components/nina/translations/tr.json +0 -2
  150. homeassistant/components/nina/translations/uk.json +0 -1
  151. homeassistant/components/nina/translations/zh-Hans.json +0 -2
  152. homeassistant/components/nina/translations/zh-Hant.json +0 -2
  153. homeassistant/components/nordpool/translations/ga.json +6 -0
  154. homeassistant/components/pooldose/translations/ga.json +8 -1
  155. homeassistant/components/portainer/__init__.py +4 -3
  156. homeassistant/components/portainer/config_flow.py +3 -2
  157. homeassistant/components/portainer/strings.json +4 -2
  158. homeassistant/components/portainer/translations/de.json +4 -2
  159. homeassistant/components/portainer/translations/en-GB.json +4 -2
  160. homeassistant/components/portainer/translations/en.json +4 -2
  161. homeassistant/components/profiler/translations/es.json +4 -0
  162. homeassistant/components/profiler/translations/et.json +4 -0
  163. homeassistant/components/profiler/translations/ga.json +4 -0
  164. homeassistant/components/profiler/translations/pt.json +4 -0
  165. homeassistant/components/route_b_smart_meter/translations/es.json +42 -0
  166. homeassistant/components/route_b_smart_meter/translations/et.json +42 -0
  167. homeassistant/components/route_b_smart_meter/translations/ga.json +42 -0
  168. homeassistant/components/route_b_smart_meter/translations/pt.json +42 -0
  169. homeassistant/components/russound_rio/manifest.json +1 -1
  170. homeassistant/components/satel_integra/translations/et.json +1 -0
  171. homeassistant/components/shelly/translations/pl.json +4 -0
  172. homeassistant/components/smartthings/manifest.json +1 -1
  173. homeassistant/components/smartthings/translations/es.json +21 -0
  174. homeassistant/components/smartthings/translations/et.json +21 -0
  175. homeassistant/components/smartthings/translations/ga.json +15 -0
  176. homeassistant/components/smartthings/translations/pt.json +21 -0
  177. homeassistant/components/thread/config_flow.py +11 -3
  178. homeassistant/components/thread/manifest.json +1 -0
  179. homeassistant/components/tolo/translations/es.json +2 -1
  180. homeassistant/components/tolo/translations/ga.json +2 -1
  181. homeassistant/components/tuya/translations/es.json +9 -0
  182. homeassistant/components/tuya/translations/et.json +9 -0
  183. homeassistant/components/tuya/translations/ga.json +9 -0
  184. homeassistant/components/tuya/translations/pt.json +9 -0
  185. homeassistant/components/usage_prediction/translations/et.json +3 -0
  186. homeassistant/components/valve/translations/pl.json +2 -1
  187. homeassistant/components/vesync/fan.py +3 -1
  188. homeassistant/components/voip/translations/nl.json +1 -1
  189. homeassistant/components/voip/translations/sv.json +1 -1
  190. homeassistant/components/volvooncall/translations/ga.json +18 -1
  191. homeassistant/components/wyoming/translations/nl.json +1 -1
  192. homeassistant/components/wyoming/translations/sv.json +1 -1
  193. homeassistant/components/zha/config_flow.py +37 -21
  194. homeassistant/components/zha/manifest.json +1 -1
  195. homeassistant/components/zha/translations/es.json +81 -3
  196. homeassistant/components/zha/translations/et.json +78 -0
  197. homeassistant/components/zha/translations/ga.json +74 -0
  198. homeassistant/components/zha/translations/pt.json +80 -2
  199. homeassistant/components/zha/translations/ru.json +8 -2
  200. homeassistant/components/zwave_js/config_flow.py +30 -11
  201. homeassistant/components/zwave_js/translations/es.json +1 -0
  202. homeassistant/components/zwave_js/translations/et.json +1 -0
  203. homeassistant/components/zwave_js/translations/ga.json +1 -0
  204. homeassistant/components/zwave_js/translations/pt.json +1 -0
  205. homeassistant/const.py +1 -1
  206. homeassistant/generated/integrations.json +2 -1
  207. homeassistant/package_constraints.txt +1 -1
  208. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/METADATA +1 -1
  209. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/RECORD +214 -199
  210. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/WHEEL +0 -0
  211. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/entry_points.txt +0 -0
  212. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/licenses/LICENSE.md +0 -0
  213. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/licenses/homeassistant/backports/LICENSE.Python +0 -0
  214. {homeassistant-2025.10.0b1.dist-info → homeassistant-2025.10.0b4.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,14 @@
1
1
  """Support for departure information for public transport in Munich."""
2
2
 
3
- # mypy: ignore-errors
4
3
  from __future__ import annotations
5
4
 
5
+ from collections.abc import Mapping
6
6
  from copy import deepcopy
7
7
  from datetime import timedelta
8
8
  import logging
9
+ from typing import Any
9
10
 
10
- import MVGLive
11
+ from mvg import MvgApi, MvgApiError, TransportType
11
12
  import voluptuous as vol
12
13
 
13
14
  from homeassistant.components.sensor import (
@@ -19,6 +20,7 @@ from homeassistant.core import HomeAssistant
19
20
  from homeassistant.helpers import config_validation as cv
20
21
  from homeassistant.helpers.entity_platform import AddEntitiesCallback
21
22
  from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
23
+ import homeassistant.util.dt as dt_util
22
24
 
23
25
  _LOGGER = logging.getLogger(__name__)
24
26
 
@@ -44,53 +46,55 @@ ICONS = {
44
46
  "SEV": "mdi:checkbox-blank-circle-outline",
45
47
  "-": "mdi:clock",
46
48
  }
47
- ATTRIBUTION = "Data provided by MVG-live.de"
49
+
50
+ ATTRIBUTION = "Data provided by mvg.de"
48
51
 
49
52
  SCAN_INTERVAL = timedelta(seconds=30)
50
53
 
51
- PLATFORM_SCHEMA = SENSOR_PLATFORM_SCHEMA.extend(
52
- {
53
- vol.Required(CONF_NEXT_DEPARTURE): [
54
- {
55
- vol.Required(CONF_STATION): cv.string,
56
- vol.Optional(CONF_DESTINATIONS, default=[""]): cv.ensure_list_csv,
57
- vol.Optional(CONF_DIRECTIONS, default=[""]): cv.ensure_list_csv,
58
- vol.Optional(CONF_LINES, default=[""]): cv.ensure_list_csv,
59
- vol.Optional(
60
- CONF_PRODUCTS, default=DEFAULT_PRODUCT
61
- ): cv.ensure_list_csv,
62
- vol.Optional(CONF_TIMEOFFSET, default=0): cv.positive_int,
63
- vol.Optional(CONF_NUMBER, default=1): cv.positive_int,
64
- vol.Optional(CONF_NAME): cv.string,
65
- }
66
- ]
67
- }
54
+ PLATFORM_SCHEMA = vol.All(
55
+ cv.deprecated(CONF_DIRECTIONS),
56
+ SENSOR_PLATFORM_SCHEMA.extend(
57
+ {
58
+ vol.Required(CONF_NEXT_DEPARTURE): [
59
+ {
60
+ vol.Required(CONF_STATION): cv.string,
61
+ vol.Optional(CONF_DESTINATIONS, default=[""]): cv.ensure_list_csv,
62
+ vol.Optional(CONF_DIRECTIONS, default=[""]): cv.ensure_list_csv,
63
+ vol.Optional(CONF_LINES, default=[""]): cv.ensure_list_csv,
64
+ vol.Optional(
65
+ CONF_PRODUCTS, default=DEFAULT_PRODUCT
66
+ ): cv.ensure_list_csv,
67
+ vol.Optional(CONF_TIMEOFFSET, default=0): cv.positive_int,
68
+ vol.Optional(CONF_NUMBER, default=1): cv.positive_int,
69
+ vol.Optional(CONF_NAME): cv.string,
70
+ }
71
+ ]
72
+ }
73
+ ),
68
74
  )
69
75
 
70
76
 
71
- def setup_platform(
77
+ async def async_setup_platform(
72
78
  hass: HomeAssistant,
73
79
  config: ConfigType,
74
80
  add_entities: AddEntitiesCallback,
75
81
  discovery_info: DiscoveryInfoType | None = None,
76
82
  ) -> None:
77
83
  """Set up the MVGLive sensor."""
78
- add_entities(
79
- (
80
- MVGLiveSensor(
81
- nextdeparture.get(CONF_STATION),
82
- nextdeparture.get(CONF_DESTINATIONS),
83
- nextdeparture.get(CONF_DIRECTIONS),
84
- nextdeparture.get(CONF_LINES),
85
- nextdeparture.get(CONF_PRODUCTS),
86
- nextdeparture.get(CONF_TIMEOFFSET),
87
- nextdeparture.get(CONF_NUMBER),
88
- nextdeparture.get(CONF_NAME),
89
- )
90
- for nextdeparture in config[CONF_NEXT_DEPARTURE]
91
- ),
92
- True,
93
- )
84
+ sensors = [
85
+ MVGLiveSensor(
86
+ hass,
87
+ nextdeparture.get(CONF_STATION),
88
+ nextdeparture.get(CONF_DESTINATIONS),
89
+ nextdeparture.get(CONF_LINES),
90
+ nextdeparture.get(CONF_PRODUCTS),
91
+ nextdeparture.get(CONF_TIMEOFFSET),
92
+ nextdeparture.get(CONF_NUMBER),
93
+ nextdeparture.get(CONF_NAME),
94
+ )
95
+ for nextdeparture in config[CONF_NEXT_DEPARTURE]
96
+ ]
97
+ add_entities(sensors, True)
94
98
 
95
99
 
96
100
  class MVGLiveSensor(SensorEntity):
@@ -100,38 +104,38 @@ class MVGLiveSensor(SensorEntity):
100
104
 
101
105
  def __init__(
102
106
  self,
103
- station,
107
+ hass: HomeAssistant,
108
+ station_name,
104
109
  destinations,
105
- directions,
106
110
  lines,
107
111
  products,
108
112
  timeoffset,
109
113
  number,
110
114
  name,
111
- ):
115
+ ) -> None:
112
116
  """Initialize the sensor."""
113
- self._station = station
114
117
  self._name = name
118
+ self._station_name = station_name
115
119
  self.data = MVGLiveData(
116
- station, destinations, directions, lines, products, timeoffset, number
120
+ hass, station_name, destinations, lines, products, timeoffset, number
117
121
  )
118
122
  self._state = None
119
123
  self._icon = ICONS["-"]
120
124
 
121
125
  @property
122
- def name(self):
126
+ def name(self) -> str | None:
123
127
  """Return the name of the sensor."""
124
128
  if self._name:
125
129
  return self._name
126
- return self._station
130
+ return self._station_name
127
131
 
128
132
  @property
129
- def native_value(self):
133
+ def native_value(self) -> str | None:
130
134
  """Return the next departure time."""
131
135
  return self._state
132
136
 
133
137
  @property
134
- def extra_state_attributes(self):
138
+ def extra_state_attributes(self) -> Mapping[str, Any] | None:
135
139
  """Return the state attributes."""
136
140
  if not (dep := self.data.departures):
137
141
  return None
@@ -140,88 +144,114 @@ class MVGLiveSensor(SensorEntity):
140
144
  return attr
141
145
 
142
146
  @property
143
- def icon(self):
147
+ def icon(self) -> str | None:
144
148
  """Icon to use in the frontend, if any."""
145
149
  return self._icon
146
150
 
147
151
  @property
148
- def native_unit_of_measurement(self):
152
+ def native_unit_of_measurement(self) -> str | None:
149
153
  """Return the unit this state is expressed in."""
150
154
  return UnitOfTime.MINUTES
151
155
 
152
- def update(self) -> None:
156
+ async def async_update(self) -> None:
153
157
  """Get the latest data and update the state."""
154
- self.data.update()
158
+ await self.data.update()
155
159
  if not self.data.departures:
156
- self._state = "-"
160
+ self._state = None
157
161
  self._icon = ICONS["-"]
158
162
  else:
159
- self._state = self.data.departures[0].get("time", "-")
160
- self._icon = ICONS[self.data.departures[0].get("product", "-")]
163
+ self._state = self.data.departures[0].get("time_in_mins", "-")
164
+ self._icon = self.data.departures[0].get("icon", ICONS["-"])
165
+
166
+
167
+ def _get_minutes_until_departure(departure_time: int) -> int:
168
+ """Calculate the time difference in minutes between the current time and a given departure time.
169
+
170
+ Args:
171
+ departure_time: Unix timestamp of the departure time, in seconds.
172
+
173
+ Returns:
174
+ The time difference in minutes, as an integer.
175
+
176
+ """
177
+ current_time = dt_util.utcnow()
178
+ departure_datetime = dt_util.utc_from_timestamp(departure_time)
179
+ time_difference = (departure_datetime - current_time).total_seconds()
180
+ return int(time_difference / 60.0)
161
181
 
162
182
 
163
183
  class MVGLiveData:
164
- """Pull data from the mvg-live.de web page."""
184
+ """Pull data from the mvg.de web page."""
165
185
 
166
186
  def __init__(
167
- self, station, destinations, directions, lines, products, timeoffset, number
168
- ):
187
+ self,
188
+ hass: HomeAssistant,
189
+ station_name,
190
+ destinations,
191
+ lines,
192
+ products,
193
+ timeoffset,
194
+ number,
195
+ ) -> None:
169
196
  """Initialize the sensor."""
170
- self._station = station
197
+ self._hass = hass
198
+ self._station_name = station_name
199
+ self._station_id = None
171
200
  self._destinations = destinations
172
- self._directions = directions
173
201
  self._lines = lines
174
202
  self._products = products
175
203
  self._timeoffset = timeoffset
176
204
  self._number = number
177
- self._include_ubahn = "U-Bahn" in self._products
178
- self._include_tram = "Tram" in self._products
179
- self._include_bus = "Bus" in self._products
180
- self._include_sbahn = "S-Bahn" in self._products
181
- self.mvg = MVGLive.MVGLive()
182
- self.departures = []
205
+ self.departures: list[dict[str, Any]] = []
183
206
 
184
- def update(self):
207
+ async def update(self):
185
208
  """Update the connection data."""
209
+ if self._station_id is None:
210
+ try:
211
+ station = await MvgApi.station_async(self._station_name)
212
+ self._station_id = station["id"]
213
+ except MvgApiError as err:
214
+ _LOGGER.error(
215
+ "Failed to resolve station %s: %s", self._station_name, err
216
+ )
217
+ self.departures = []
218
+ return
219
+
186
220
  try:
187
- _departures = self.mvg.getlivedata(
188
- station=self._station,
189
- timeoffset=self._timeoffset,
190
- ubahn=self._include_ubahn,
191
- tram=self._include_tram,
192
- bus=self._include_bus,
193
- sbahn=self._include_sbahn,
221
+ _departures = await MvgApi.departures_async(
222
+ station_id=self._station_id,
223
+ offset=self._timeoffset,
224
+ limit=self._number,
225
+ transport_types=[
226
+ transport_type
227
+ for transport_type in TransportType
228
+ if transport_type.value[0] in self._products
229
+ ]
230
+ if self._products
231
+ else None,
194
232
  )
195
233
  except ValueError:
196
234
  self.departures = []
197
235
  _LOGGER.warning("Returned data not understood")
198
236
  return
199
237
  self.departures = []
200
- for i, _departure in enumerate(_departures):
201
- # find the first departure meeting the criteria
238
+ for _departure in _departures:
202
239
  if (
203
240
  "" not in self._destinations[:1]
204
241
  and _departure["destination"] not in self._destinations
205
242
  ):
206
243
  continue
207
244
 
208
- if (
209
- "" not in self._directions[:1]
210
- and _departure["direction"] not in self._directions
211
- ):
245
+ if "" not in self._lines[:1] and _departure["line"] not in self._lines:
212
246
  continue
213
247
 
214
- if "" not in self._lines[:1] and _departure["linename"] not in self._lines:
215
- continue
248
+ time_to_departure = _get_minutes_until_departure(_departure["time"])
216
249
 
217
- if _departure["time"] < self._timeoffset:
250
+ if time_to_departure < self._timeoffset:
218
251
  continue
219
252
 
220
- # now select the relevant data
221
253
  _nextdep = {}
222
- for k in ("destination", "linename", "time", "direction", "product"):
254
+ for k in ("destination", "line", "type", "cancelled", "icon"):
223
255
  _nextdep[k] = _departure.get(k, "")
224
- _nextdep["time"] = int(_nextdep["time"])
256
+ _nextdep["time_in_mins"] = time_to_departure
225
257
  self.departures.append(_nextdep)
226
- if i == self._number - 1:
227
- break
@@ -11,7 +11,7 @@
11
11
  "_r_to_u": "City/county (R-U)",
12
12
  "_v_to_z": "City/county (V-Z)",
13
13
  "slots": "Maximum warnings per city/county",
14
- "headline_filter": "Blacklist regex to filter warning headlines"
14
+ "headline_filter": "Headline blocklist"
15
15
  }
16
16
  }
17
17
  },
@@ -34,7 +34,7 @@
34
34
  "_v_to_z": "[%key:component::nina::config::step::user::data::_v_to_z%]",
35
35
  "slots": "[%key:component::nina::config::step::user::data::slots%]",
36
36
  "headline_filter": "[%key:component::nina::config::step::user::data::headline_filter%]",
37
- "area_filter": "Whitelist regex to filter warnings based on affected areas"
37
+ "area_filter": "Affected area filter"
38
38
  }
39
39
  }
40
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Ciutat/comtat (M-Q)",
15
15
  "_r_to_u": "Ciutat/comtat (R-U)",
16
16
  "_v_to_z": "Ciutat/comtat (V-Z)",
17
- "headline_filter": "Llista negra regex per filtrar titulars d'alertes",
18
17
  "slots": "Nombre d'alertes m\u00e0ximes per ciutat/comtat"
19
18
  },
20
19
  "title": "Selecciona ciutat/comtat"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Ciutat/comtat (M-Q)",
37
36
  "_r_to_u": "Ciutat/comtat (R-U)",
38
37
  "_v_to_z": "Ciutat/comtat (V-Z)",
39
- "area_filter": "Expressi\u00f3 regular de llista blanca per filtrar les alertes en funci\u00f3 de les \u00e0rees afectades",
40
38
  "headline_filter": "Llista negra regex per filtrar titulars d'alertes",
41
39
  "slots": "Nombre d'alertes m\u00e0ximes per ciutat/comtat"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "M\u011bsto/Okres (M-Q)",
15
15
  "_r_to_u": "M\u011bsto/Okres (R-U)",
16
16
  "_v_to_z": "M\u011bsto/Okres (V-Z)",
17
- "headline_filter": "\u010cern\u00e1 listina regul\u00e1rn\u00edch v\u00fdraz\u016f pro filtrov\u00e1n\u00ed varovn\u00fdch nadpis\u016f",
18
17
  "slots": "Maxim\u00e1ln\u00ed po\u010det varov\u00e1n\u00ed na m\u011bsto/okres"
19
18
  },
20
19
  "title": "Vybrat m\u011bsto/okres"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "M\u011bsto/Okres (M-Q)",
37
36
  "_r_to_u": "M\u011bsto/Okres (R-U)",
38
37
  "_v_to_z": "M\u011bsto/Okres (V-Z)",
39
- "area_filter": "B\u00edl\u00e1 listina regul\u00e1rn\u00edch v\u00fdraz\u016f pro filtrov\u00e1n\u00ed varov\u00e1n\u00ed na z\u00e1klad\u011b posti\u017een\u00fdch oblast\u00ed",
40
38
  "headline_filter": "\u010cern\u00e1 listina regul\u00e1rn\u00edch v\u00fdraz\u016f pro filtrov\u00e1n\u00ed varovn\u00fdch nadpis\u016f",
41
39
  "slots": "Maxim\u00e1ln\u00ed po\u010det varov\u00e1n\u00ed na m\u011bsto/okres"
42
40
  },
@@ -14,7 +14,7 @@
14
14
  "_m_to_q": "Stadt/Landkreis (M-Q)",
15
15
  "_r_to_u": "Stadt/Landkreis (R-U)",
16
16
  "_v_to_z": "Stadt/Landkreis (V-Z)",
17
- "headline_filter": "Blacklist-Regex zum Filtern von Warn\u00fcberschriften",
17
+ "headline_filter": "\u00dcberschriften-Blockliste",
18
18
  "slots": "Maximale Warnungen pro Stadt/Landkreis"
19
19
  },
20
20
  "title": "Stadt/Landkreis ausw\u00e4hlen"
@@ -36,8 +36,8 @@
36
36
  "_m_to_q": "Stadt/Landkreis (M-Q)",
37
37
  "_r_to_u": "Stadt/Landkreis (R-U)",
38
38
  "_v_to_z": "Stadt/Landkreis (V-Z)",
39
- "area_filter": "Whitelist-Regex zum Filtern der Warnungen nach betroffenen Regionen",
40
- "headline_filter": "Blacklist-Regex zum Filtern von Warn\u00fcberschriften",
39
+ "area_filter": "Filter f\u00fcr betroffene Bereiche",
40
+ "headline_filter": "\u00dcberschriften-Blockliste",
41
41
  "slots": "Maximale Warnungen pro Stadt/Landkreis"
42
42
  },
43
43
  "title": "Optionen"
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "\u03a0\u03cc\u03bb\u03b7/\u03bd\u03bf\u03bc\u03cc\u03c2 (\u039c-Q)",
15
15
  "_r_to_u": "\u03a0\u03cc\u03bb\u03b7/\u03bd\u03bf\u03bc\u03cc\u03c2 (R-U)",
16
16
  "_v_to_z": "\u03a0\u03cc\u03bb\u03b7/\u03bd\u03bf\u03bc\u03cc\u03c2 (V-Z)",
17
- "headline_filter": "\u039c\u03b1\u03cd\u03c1\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1 regex \u03b3\u03b9\u03b1 \u03c6\u03b9\u03bb\u03c4\u03c1\u03ac\u03c1\u03b9\u03c3\u03bc\u03b1 \u03c0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03b7\u03c4\u03b9\u03ba\u03ce\u03bd \u03c4\u03af\u03c4\u03bb\u03c9\u03bd",
18
17
  "slots": "\u039c\u03ad\u03b3\u03b9\u03c3\u03c4\u03b5\u03c2 \u03c0\u03c1\u03bf\u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2 \u03b1\u03bd\u03ac \u03c0\u03cc\u03bb\u03b7/\u03bd\u03bf\u03bc\u03cc"
19
18
  },
20
19
  "title": "\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03c0\u03cc\u03bb\u03b7\u03c2/\u03bd\u03bf\u03bc\u03bf\u03cd"
@@ -14,7 +14,7 @@
14
14
  "_m_to_q": "City/county (M-Q)",
15
15
  "_r_to_u": "City/county (R-U)",
16
16
  "_v_to_z": "City/county (V-Z)",
17
- "headline_filter": "Blacklist regex to filter warning headlines",
17
+ "headline_filter": "Headline blocklist",
18
18
  "slots": "Maximum warnings per city/county"
19
19
  },
20
20
  "title": "Select city/county"
@@ -36,8 +36,8 @@
36
36
  "_m_to_q": "City/county (M-Q)",
37
37
  "_r_to_u": "City/county (R-U)",
38
38
  "_v_to_z": "City/county (V-Z)",
39
- "area_filter": "Whitelist regex to filter warnings based on affected areas",
40
- "headline_filter": "Blacklist regex to filter warning headlines",
39
+ "area_filter": "Affected area filter",
40
+ "headline_filter": "Headline blocklist",
41
41
  "slots": "Maximum warnings per city/county"
42
42
  },
43
43
  "title": "Options"
@@ -14,7 +14,7 @@
14
14
  "_m_to_q": "City/county (M-Q)",
15
15
  "_r_to_u": "City/county (R-U)",
16
16
  "_v_to_z": "City/county (V-Z)",
17
- "headline_filter": "Blacklist regex to filter warning headlines",
17
+ "headline_filter": "Headline blocklist",
18
18
  "slots": "Maximum warnings per city/county"
19
19
  },
20
20
  "title": "Select city/county"
@@ -36,8 +36,8 @@
36
36
  "_m_to_q": "City/county (M-Q)",
37
37
  "_r_to_u": "City/county (R-U)",
38
38
  "_v_to_z": "City/county (V-Z)",
39
- "area_filter": "Whitelist regex to filter warnings based on affected areas",
40
- "headline_filter": "Blacklist regex to filter warning headlines",
39
+ "area_filter": "Affected area filter",
40
+ "headline_filter": "Headline blocklist",
41
41
  "slots": "Maximum warnings per city/county"
42
42
  },
43
43
  "title": "Options"
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Ciudad/condado (M-Q)",
15
15
  "_r_to_u": "Ciudad/condado (R-U)",
16
16
  "_v_to_z": "Ciudad/condado (V-Z)",
17
- "headline_filter": "Lista negra de expresiones regulares para filtrar titulares de advertencia",
18
17
  "slots": "Advertencias m\u00e1ximas por ciudad/condado"
19
18
  },
20
19
  "title": "Seleccionar ciudad/condado"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Ciudad/condado (M-Q)",
37
36
  "_r_to_u": "Ciudad/condado (R-U)",
38
37
  "_v_to_z": "Ciudad/condado (V-Z)",
39
- "area_filter": "Lista blanca de expresiones regulares para filtrar los avisos en funci\u00f3n de las zonas afectadas",
40
38
  "headline_filter": "Lista negra de expresiones regulares para filtrar titulares de advertencia",
41
39
  "slots": "Advertencias m\u00e1ximas por ciudad/condado"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Linn/maakond (M-Q)",
15
15
  "_r_to_u": "Linn/maakond (R-U)",
16
16
  "_v_to_z": "Linn/maakond (V-Z)",
17
- "headline_filter": "Hoiatuste pealkirjade filtreerimiseks lisage regex musta nimekirja",
18
17
  "slots": "Maksimaalne hoiatuste arv linna/maakonna kohta"
19
18
  },
20
19
  "title": "Vali linn/maakond"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Linn/maakond (M-Q)",
37
36
  "_r_to_u": "Linn/maakond (R-U)",
38
37
  "_v_to_z": "Linn/maakond (V-Z)",
39
- "area_filter": "Lubatud regex, et filtreerida hoiatused m\u00f5jutatud piirkondade p\u00f5hjal",
40
38
  "headline_filter": "Hoiatuste pealkirjade filtreerimiseks lisage regex musta nimekirja",
41
39
  "slots": "Maksimaalne hoiatuste arv linna/maakonna kohta"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Kaupunki/maakunta (M-Q)",
15
15
  "_r_to_u": "Kaupunki/maakunta (R-U)",
16
16
  "_v_to_z": "Kaupunki/maakunta (V-Z)",
17
- "headline_filter": "Lis\u00e4\u00e4 s\u00e4\u00e4nn\u00f6llinen lauseke mustalle listalle varoitusotsikoiden suodattamiseksi",
18
17
  "slots": "Varoitusten enimm\u00e4ism\u00e4\u00e4r\u00e4 kaupunkia/maakuntaa kohden"
19
18
  },
20
19
  "title": "Valitse kaupunki/maakunta"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Kaupunki/maakunta (M-Q)",
37
36
  "_r_to_u": "Kaupunki/maakunta (R-U)",
38
37
  "_v_to_z": "Kaupunki/maakunta (V-Z)",
39
- "area_filter": "Sallittujen luettelon lauseke, jos haluat suodattaa varoitukset vaikutusalueiden perusteella",
40
38
  "headline_filter": "Lis\u00e4\u00e4 s\u00e4\u00e4nn\u00f6llinen lauseke mustalle listalle varoitusotsikoiden suodattamiseksi",
41
39
  "slots": "Varoitusten enimm\u00e4ism\u00e4\u00e4r\u00e4 kaupunkia/maakuntaa kohden"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Cathair/contae (M-Q)",
15
15
  "_r_to_u": "Cathair/contae (R-U)",
16
16
  "_v_to_z": "Cathair/contae (V-Z)",
17
- "headline_filter": "Regex liosta dubh chun ceannl\u00ednte rabhaidh a scagadh",
18
17
  "slots": "Uasmh\u00e9id rabhaidh in aghaidh na cathrach/an chontae"
19
18
  },
20
19
  "title": "Roghnaigh cathair/contae"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Cathair/contae (M-Q)",
37
36
  "_r_to_u": "Cathair/contae (R-U)",
38
37
  "_v_to_z": "Cathair/contae (V-Z)",
39
- "area_filter": "Gn\u00e9 rialta liosta b\u00e1n chun rabhaidh a scagadh bunaithe ar na limist\u00e9ir lena mbaineann",
40
38
  "headline_filter": "Regex liosta dubh chun ceannl\u00ednte rabhaidh a scagadh",
41
39
  "slots": "Uasmh\u00e9id rabhaidh in aghaidh na cathrach/an chontae"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "V\u00e1ros/megye (M-Q)",
15
15
  "_r_to_u": "V\u00e1ros/megye (R-U)",
16
16
  "_v_to_z": "V\u00e1ros/megye (V-Z)",
17
- "headline_filter": "Feketelista regex a figyelmeztet\u0151 szalagc\u00edmek sz\u0171r\u00e9s\u00e9hez",
18
17
  "slots": "A figyelmeztet\u00e9sek maxim\u00e1lis sz\u00e1ma v\u00e1rosonk\u00e9nt/megy\u00e9nk\u00e9nt"
19
18
  },
20
19
  "title": "V\u00e1lasszon v\u00e1rost/megy\u00e9t"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "V\u00e1ros/megye (M-Q)",
37
36
  "_r_to_u": "V\u00e1ros/megye (R-U)",
38
37
  "_v_to_z": "V\u00e1ros/megye (V-Z)",
39
- "area_filter": "Feh\u00e9rlista regul\u00e1ris kifejez\u00e9sek haszn\u00e1lat\u00e1val a figyelmeztet\u00e9sek sz\u0171r\u00e9s\u00e9re az \u00e9rintett ter\u00fcletek alapj\u00e1n.",
40
38
  "headline_filter": "Feketelista regex a figyelmeztet\u0151 szalagc\u00edmek sz\u0171r\u00e9s\u00e9hez",
41
39
  "slots": "A figyelmeztet\u00e9sek maxim\u00e1lis sz\u00e1ma v\u00e1rosonk\u00e9nt/megy\u00e9nk\u00e9nt"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Kota/kabupaten (M-Q)",
15
15
  "_r_to_u": "Kota/kabupaten (R-U)",
16
16
  "_v_to_z": "Kota/kabupaten (V-Z)",
17
- "headline_filter": "Regex daftar hitam untuk memfilter judul peringatan",
18
17
  "slots": "Peringatan maksimum per kota/kabupaten"
19
18
  },
20
19
  "title": "Pilih kota/kabupaten"
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Citt\u00e0/provincia (M-Q)",
15
15
  "_r_to_u": "Citt\u00e0/provincia (R-U)",
16
16
  "_v_to_z": "Citt\u00e0/provincia (V-Z)",
17
- "headline_filter": "Lista nera regex per filtrare i titoli di avviso",
18
17
  "slots": "Numero massimo di avvisi per citt\u00e0/provincia"
19
18
  },
20
19
  "title": "Seleziona citt\u00e0/provincia"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Citt\u00e0/provincia (M-Q)",
37
36
  "_r_to_u": "Citt\u00e0/provincia (R-U)",
38
37
  "_v_to_z": "Citt\u00e0/provincia (V-Z)",
39
- "area_filter": "Whitelist regex per filtrare le notifiche in base alle aree coinvolte",
40
38
  "headline_filter": "Lista nera regex per filtrare i titoli di avviso",
41
39
  "slots": "Numero massimo di avvisi per citt\u00e0/provincia"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "City/county (M-Q)",
15
15
  "_r_to_u": "City/county (R-U)",
16
16
  "_v_to_z": "City/county (V-Z)",
17
- "headline_filter": "\u8b66\u544a\u898b\u51fa\u3057\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u6b63\u898f\u8868\u73fe",
18
17
  "slots": "1\u5e02\u533a\u753a\u6751/\u90e1\u3042\u305f\u308a\u306e\u6700\u5927\u8b66\u544a\u6570"
19
18
  },
20
19
  "title": "\u5e02\u533a\u753a\u6751/\u90e1\u3092\u9078\u629e"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "City/county (M-Q)",
37
36
  "_r_to_u": "City/county (R-U)",
38
37
  "_v_to_z": "City/county (V-Z)",
39
- "area_filter": "\u30db\u30ef\u30a4\u30c8\u30ea\u30b9\u30c8\u6b63\u898f\u8868\u73fe\u306b\u3088\u308a\u3001\u5f71\u97ff\u3092\u53d7\u3051\u308b\u9818\u57df\u306b\u57fa\u3065\u3044\u3066\u8b66\u544a\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u3002",
40
38
  "headline_filter": "\u8b66\u544a\u898b\u51fa\u3057\u3092\u30d5\u30a3\u30eb\u30bf\u30ea\u30f3\u30b0\u3059\u308b\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u6b63\u898f\u8868\u73fe",
41
39
  "slots": "1\u5e02\u533a\u753a\u6751/\u90e1\u3042\u305f\u308a\u306e\u6700\u5927\u8b66\u544a\u6570"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "\uc2dc/\uad70(M-Q)",
15
15
  "_r_to_u": "\uc2dc/\uad70(R-U)",
16
16
  "_v_to_z": "\uc2dc/\uad70(V-Z)",
17
- "headline_filter": "\uacbd\uace0 \ud5e4\ub4dc\ub77c\uc778\uc744 \ud544\ud130\ub9c1\ud558\ub294 \ube14\ub799\ub9ac\uc2a4\ud2b8 \uc815\uaddc\uc2dd",
18
17
  "slots": "\ub3c4\uc2dc/\uad70\ub2f9 \ucd5c\ub300 \uacbd\uace0"
19
18
  },
20
19
  "title": "\uc2dc/\uad70 \uc120\ud0dd"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "\uc2dc/\uad70(M-Q)",
37
36
  "_r_to_u": "\uc2dc/\uad70(R-U)",
38
37
  "_v_to_z": "\uc2dc/\uad70(V-Z)",
39
- "area_filter": "\uc601\ud5a5\uc744 \ubc1b\ub294 \uc9c0\uc5ed\uc744 \uae30\ubc18\uc73c\ub85c \uacbd\uace0\ub97c \ud544\ud130\ub9c1\ud558\ub294 \uc815\uaddc \ud45c\ud604\uc2dd\uc744 \ud654\uc774\ud2b8\ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud558\uc138\uc694.",
40
38
  "headline_filter": "\uacbd\uace0 \ud5e4\ub4dc\ub77c\uc778\uc744 \ud544\ud130\ub9c1\ud558\ub294 \ube14\ub799\ub9ac\uc2a4\ud2b8 \uc815\uaddc\uc2dd",
41
39
  "slots": "\ub3c4\uc2dc/\uad70\ub2f9 \ucd5c\ub300 \uacbd\uace0"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Miestas / apskritis (M-Q)",
15
15
  "_r_to_u": "Miestas / apskritis (R-U)",
16
16
  "_v_to_z": "Miestas/apskritis (V-\u017d)",
17
- "headline_filter": "\u012e juod\u0105j\u012f s\u0105ra\u0161\u0105 \u012ftraukite reguliar\u0173j\u012f rei\u0161kin\u012f, kad filtruotum\u0117te \u012fsp\u0117jim\u0173 antra\u0161tes",
18
17
  "slots": "Did\u017eiausias \u012fsp\u0117jim\u0173 skai\u010dius mieste/apskrityje"
19
18
  },
20
19
  "title": "Pasirinkti miest\u0105 / apskrit\u012f"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Miestas / apskritis (M-Q)",
37
36
  "_r_to_u": "Miestas / apskritis (R-U)",
38
37
  "_v_to_z": "Miestas/apskritis (V-\u017d)",
39
- "area_filter": "Baltasis s\u0105ra\u0161as regex, kad b\u016bt\u0173 galima filtruoti \u012fsp\u0117jimus pagal paveiktas vietas",
40
38
  "headline_filter": "\u012e juod\u0105j\u012f s\u0105ra\u0161\u0105 \u012ftraukite reguliar\u0173j\u012f rei\u0161kin\u012f, kad filtruotum\u0117te \u012fsp\u0117jim\u0173 antra\u0161tes",
41
39
  "slots": "Did\u017eiausias \u012fsp\u0117jim\u0173 skai\u010dius mieste/apskrityje"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Stad/deelstaat (M-Q)",
15
15
  "_r_to_u": "Stad/Deelstaat (R-U)",
16
16
  "_v_to_z": "Stad/Deelstaat (V-Z)",
17
- "headline_filter": "Blacklist regex om waarschuwingskoppen te filteren",
18
17
  "slots": "Maximale waarschuwingen per stad/provincie"
19
18
  },
20
19
  "title": "Selecteer stad/provincie"
@@ -36,7 +35,6 @@
36
35
  "_m_to_q": "Stad/deelstaat (M-Q)",
37
36
  "_r_to_u": "Stad/Deelstaat (R-U)",
38
37
  "_v_to_z": "Stad/Deelstaat (V-Z)",
39
- "area_filter": "Regex filter waarschuwingen whitelisten gebaseerd op betrokken gebieden",
40
38
  "headline_filter": "Blacklist regex om waarschuwingskoppen te filteren",
41
39
  "slots": "Maximale waarschuwingen per stad/provincie"
42
40
  },
@@ -14,7 +14,6 @@
14
14
  "_m_to_q": "Cidade/munic\u00edpio (M-Q)",
15
15
  "_r_to_u": "Cidade/munic\u00edpio (R-U)",
16
16
  "_v_to_z": "Cidade/munic\u00edpio (V-Z)",
17
- "headline_filter": "Regex da lista negra para filtrar manchetes de aviso",
18
17
  "slots": "M\u00e1ximo de avisos por cidade/munic\u00edpio"
19
18
  },
20
19
  "title": "Selecione a cidade/munic\u00edpio"