From b2094ddb18b0d5b3b5f95c15dd41560ab94df177 Mon Sep 17 00:00:00 2001 From: juanjo <130799031+juanminguezsanz2023@users.noreply.github.com> Date: Tue, 4 Aug 2026 00:19:12 +0200 Subject: [PATCH] 04-ago: [bugfix] NAS Download Station error 105: _sid como query param en GET (DSM 7) --- vigilancia/nas_dl.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/vigilancia/nas_dl.py b/vigilancia/nas_dl.py index 595b7fc..6db70a2 100644 --- a/vigilancia/nas_dl.py +++ b/vigilancia/nas_dl.py @@ -73,11 +73,20 @@ def unrestrict_rd(uri): def _api(path, params, session=None): - data = urllib.parse.urlencode(params).encode() - headers = {"Content-Type": "application/x-www-form-urlencoded"} + """Llama a la API del NAS. DSM 7 exige GET con `_sid` en la query string. + Si `session` viene como 'sid=' se extrae y se anade a la query.""" + sid = None if session: - headers["Cookie"] = session - req = urllib.request.Request(f"{BASE_URL}{path}", data=data, headers=headers) + if session.startswith("sid="): + sid = session[4:] + elif session.startswith("_sid="): + sid = session[5:] + if sid: + params = dict(params) + params["_sid"] = sid + qs = urllib.parse.urlencode(params) + req = urllib.request.Request(f"{BASE_URL}{path}?{qs}", + headers={"Cookie": session or ""}) with urllib.request.urlopen(req, timeout=20) as r: return json.loads(r.read().decode())