This commit is contained in:
@@ -5,6 +5,28 @@ first time you run this, so the names below match exactly what HEOS
|
||||
reports for your own devices.
|
||||
"""
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _load_dotenv(path: Path):
|
||||
"""A `source .env` a shell might forget to `export` is a whole class of
|
||||
bug this sidesteps: read the file directly, rather than trusting
|
||||
whatever the calling shell's environment happens to contain. Existing
|
||||
environment variables still win, so a real export (or systemd's
|
||||
EnvironmentFile) overrides the file rather than the other way round."""
|
||||
if not path.exists():
|
||||
return
|
||||
for line in path.read_text().splitlines():
|
||||
line = line.strip()
|
||||
if not line or line.startswith("#") or "=" not in line:
|
||||
continue
|
||||
key, _, value = line.partition("=")
|
||||
os.environ.setdefault(key.strip(), value.strip())
|
||||
|
||||
|
||||
_load_dotenv(Path(__file__).resolve().parent / ".env")
|
||||
|
||||
# --- Network ----------------------------------------------------------
|
||||
# Any ONE HEOS device's IP is enough: HEOS is a distributed system, so
|
||||
# whichever unit you connect to can see and control every player and
|
||||
@@ -18,13 +40,16 @@ WEB_PORT = 5443
|
||||
# --- Rooms ------------------------------------------------------------
|
||||
# key -> how to find it on the network, and how to label it in the UI.
|
||||
#
|
||||
# heos_name : the EXACT name HEOS reports for that player or group.
|
||||
# players : only for a target that is a HEOS *group* (a stereo pair
|
||||
# or an In-Room Group). List its member players, leader
|
||||
# first. Leave it out and the panel learns the members the
|
||||
# first time it sees the group un-merged, then remembers
|
||||
# them in members.json -- which is what lets it rebuild the
|
||||
# pair after you unmerge it from the AVR.
|
||||
# heos_name : the EXACT name HEOS reports for that player or group.
|
||||
# players : only for a target that is a HEOS *group* (a stereo pair
|
||||
# or an In-Room Group). List its member players, leader
|
||||
# first. Leave it out and the panel learns the members the
|
||||
# first time it sees the group un-merged, then remembers
|
||||
# them in members.json -- which is what lets it rebuild the
|
||||
# pair after you unmerge it from the AVR.
|
||||
# spotify_name : only needed if a room's Spotify Connect name differs
|
||||
# from heos_name -- GET /api/spotify/devices?account=fifou shows what
|
||||
# Spotify actually calls it. Defaults to heos_name.
|
||||
TARGETS = {
|
||||
"avr": {
|
||||
"label": "Home Cinema",
|
||||
@@ -37,6 +62,7 @@ TARGETS = {
|
||||
"living_room_group": {
|
||||
"label": "Living Room",
|
||||
"heos_name": "Denon Home 200 L", # 2x Denon Home 200, In-Room Group
|
||||
"spotify_name": "Living Room", # what Spotify Connect calls the pair
|
||||
# "players": ["Denon Home 200 L", "Denon Home 200 R"],
|
||||
},
|
||||
}
|
||||
@@ -61,3 +87,19 @@ AVR_INPUT_CODES = []
|
||||
|
||||
# Shown as the app's name on the iOS home screen.
|
||||
APP_NAME = "Heos"
|
||||
|
||||
# --- Spotify (optional) -------------------------------------------------
|
||||
# One Spotify button per account on each speaker's card (not the AVR's),
|
||||
# resuming that account's playback there -- see the README's Spotify section and
|
||||
# tools/spotify_auth.py. Credentials come from .env, never from here, so
|
||||
# they stay out of git. One developer app serves every account; only the
|
||||
# refresh token differs, since that is what each account's login produces.
|
||||
SPOTIFY_CLIENT_ID = os.environ.get("SPOTIFY_CLIENT_ID")
|
||||
SPOTIFY_CLIENT_SECRET = os.environ.get("SPOTIFY_CLIENT_SECRET")
|
||||
|
||||
# key -> button label and that account's refresh token, in button order.
|
||||
# An account without a token gets no button.
|
||||
SPOTIFY_ACCOUNTS = {
|
||||
"fifou": {"label": "Fifou", "refresh_token": os.environ.get("SPOTIFY_FIFOU_REFRESH_TOKEN")},
|
||||
"clarita": {"label": "Clarita", "refresh_token": os.environ.get("SPOTIFY_CLARITA_REFRESH_TOKEN")},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user