diff options
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node')
| -rw-r--r-- | packages/meshbay-node/src/meshbay_node/musicbrainz.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/musicbrainz.py b/packages/meshbay-node/src/meshbay_node/musicbrainz.py index 59f3778..d5ca1e9 100644 --- a/packages/meshbay-node/src/meshbay_node/musicbrainz.py +++ b/packages/meshbay-node/src/meshbay_node/musicbrainz.py @@ -105,12 +105,24 @@ class MusicBrainzClient: self._client = httpx.AsyncClient(timeout=_TIMEOUT, transport=transport) self._rate_lock = asyncio.Lock() self._last_request_monotonic: float | None = None + self._warned_no_contact = False async def close(self) -> None: await self._client.aclose() async def _resolve_contact(self) -> str | None: - return self._owner_email or None + if self._owner_email: + return self._owner_email + # Staying inert is deliberate (see the module docstring), but doing it + # silently is not: the operator sees Music tiles with no metadata and + # nothing anywhere says why. Once per client, not per lookup. + if not self._warned_no_contact: + self._warned_no_contact = True + log.warning( + "MusicBrainz lookups are inert: the node owner's hub account has " + "no email on file, and the usage policy requires a contact in the " + "User-Agent. Music tiles will show no metadata or cover art.") + return None async def _pace(self) -> None: """Serializes every call through this client to >= _MIN_INTERVAL_SECS apart.""" |