music-assistant-server

667 BPY
helpers.py
667 B24 lines • python
1"""Helpers for the Sonos (S2) Provider."""
2
3from __future__ import annotations
4
5from typing import TYPE_CHECKING
6
7from zeroconf import IPVersion
8
9if TYPE_CHECKING:
10    from zeroconf.asyncio import AsyncServiceInfo
11
12
13def get_primary_ip_address(discovery_info: AsyncServiceInfo) -> str | None:
14    """Get primary IP address from zeroconf discovery info."""
15    for address in discovery_info.parsed_addresses(IPVersion.V4Only):
16        if address.startswith("127"):
17            # filter out loopback address
18            continue
19        if address.startswith("169.254"):
20            # filter out APIPA address
21            continue
22        return address
23    return None
24