From 46f3867218e17897b71492db2c5d51915801fbf1 Mon Sep 17 00:00:00 2001 From: Nirvana Date: Fri, 13 Mar 2026 22:17:42 +0100 Subject: [PATCH] Add discovery --- .../providers/magenta2/vod_manager.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/streaming_providers/providers/magenta2/vod_manager.py b/lib/streaming_providers/providers/magenta2/vod_manager.py index ac8abde..c9a37ad 100644 --- a/lib/streaming_providers/providers/magenta2/vod_manager.py +++ b/lib/streaming_providers/providers/magenta2/vod_manager.py @@ -335,7 +335,7 @@ class VodManager: is used when discovery fails. """ import uuid as _uuid - from urllib.parse import urlparse, urlunparse, parse_qs, urlencode + from urllib.parse import urlparse, urlunparse, parse_qs, urlencode, quote if not self._home_url: logger.debug( @@ -421,8 +421,17 @@ class VodManager: parsed = urlparse(redirect_url) qs = parse_qs(parsed.query, keep_blank_values=True) qs["$cid"] = [cid_2] + # Use quote_via=quote with safe='$:' so that $ signs in + # parameter names and :: in the cid value are NOT percent- + # encoded (%24). The server requires literal $ characters. redirect_url_with_cid = urlunparse( - parsed._replace(query=urlencode({k: v[0] for k, v in qs.items()})) + parsed._replace( + query=urlencode( + {k: v[0] for k, v in qs.items()}, + quote_via=quote, + safe="$:", + ) + ) ) logger.debug(