aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-node/src/meshbay_node/ops.py
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/ops.py')
-rw-r--r--packages/meshbay-node/src/meshbay_node/ops.py43
1 files changed, 29 insertions, 14 deletions
diff --git a/packages/meshbay-node/src/meshbay_node/ops.py b/packages/meshbay-node/src/meshbay_node/ops.py
index 6848e3a..a232ba2 100644
--- a/packages/meshbay-node/src/meshbay_node/ops.py
+++ b/packages/meshbay-node/src/meshbay_node/ops.py
@@ -733,23 +733,23 @@ async def set_enabled_apps(state: dict, group_id: str, apps: list[str]) -> dict:
# ── TMDB config (Videos app) ─────────────────────────────────────────────────
-async def set_tmdb_config(state: dict, enabled: bool, token: str | None = None,
+async def set_tmdb_config(state: dict, token: str | None = None,
language: str | None = None) -> dict:
"""
- Whether the node calls TMDB at all, whether it uses a custom API token
- instead of the shipped default, and in what language it queries TMDB
- (docs/mediacenter.md §5.5).
+ Whether the node uses a custom API token instead of the shipped default,
+ and in what language it queries TMDB (docs/mediacenter.md §5.5).
Node-wide (roster.py group_settings, group_id="") rather than per-group
- like set_member_upload/set_enabled_apps: TMDB is one operator's budget,
- one credential and one shared cache, not a per-group or per-viewer
- concern. `token=""` explicitly clears a previously-set custom token
- (reverts to the shipped default); `token=None` leaves whatever was
- there unchanged. Same discipline for `language`.
+ like set_member_upload/set_enabled_apps: the token and the shared-cache
+ language are one operator's budget and one credential, not a per-group
+ or per-viewer concern. Whether TMDB is used *at all* is the per-group
+ decision set_tmdb_enabled below makes instead. `token=""` explicitly
+ clears a previously-set custom token (reverts to the shipped default);
+ `token=None` leaves whatever was there unchanged. Same discipline for
+ `language`.
"""
roster = _roster(state)
- await roster.set_tmdb_config(enabled, token, language, set_by=state.get("node_user_id", ""))
- state["tmdb_enabled"] = enabled
+ await roster.set_tmdb_config(token, language, set_by=state.get("node_user_id", ""))
# `token=None` means "leave whatever was there" (§ set_tmdb_config's own
# docstring) — so the customized flag only changes when a value (a real
# token, or "" to clear one) was actually given.
@@ -757,15 +757,30 @@ async def set_tmdb_config(state: dict, enabled: bool, token: str | None = None,
state["tmdb_token_customized"] = bool(token)
if language is not None:
state["tmdb_language"] = language
- log.info("TMDB config: enabled=%s custom_token=%s language=%s",
- enabled, bool(token), language or state.get("tmdb_language", ""))
+ log.info("TMDB config: custom_token=%s language=%s",
+ bool(token), language or state.get("tmdb_language", ""))
return {
- "enabled": enabled,
"token_customized": state.get("tmdb_token_customized", False),
"language": state.get("tmdb_language", ""),
}
+async def set_tmdb_enabled(state: dict, group_id: str, enabled: bool) -> dict:
+ """
+ Whether TMDB lookups run for this group at all (docs/mediacenter.md
+ §5.5) — per-group, unlike set_tmdb_config above: an operator running a
+ real media library alongside test/demo groups on one node wants
+ outbound TMDB traffic (and API quota) spent for the one that needs it,
+ not all of them just because one process serves both.
+ """
+ roster = _roster(state)
+ ctx = _group_ctx(state, group_id)
+ await roster.set_tmdb_enabled(group_id, enabled, set_by=state.get("node_user_id", ""))
+ ctx["tmdb_enabled"] = enabled
+ log.info("TMDB enabled for group %s: %s", group_id[:8], enabled)
+ return {"enabled": enabled, "group_id": group_id}
+
+
async def set_video_root(state: dict, group_id: str, path: str) -> dict:
"""
Which folder (possibly a subfolder of a shared root) is the Videos app's