Add Sec-MS-GEC support (#303)

Credit to @gexgd0419 for understanding how the algorithm works.
See his comment here: https://github.com/rany2/edge-tts/issues/290#issuecomment-2464956570

Fixes: https://github.com/rany2/edge-tts/issues/302
Fixes: https://github.com/rany2/edge-tts/issues/299
Fixes: https://github.com/rany2/edge-tts/issues/295
Fixes: https://github.com/rany2/edge-tts/issues/290

Signed-off-by: rany <rany2@riseup.net>
Co-authored-by: gexgd0419 <55008943+gexgd0419@users.noreply.github.com>
This commit is contained in:
Rany
2024-11-08 18:34:28 +02:00
committed by GitHub
parent a98e9ac7d3
commit f014709c40
4 changed files with 44 additions and 3 deletions

View File

@@ -28,6 +28,7 @@ import aiohttp
import certifi
from .constants import WSS_HEADERS, WSS_URL
from .drm import generate_sec_ms_gec_token, generate_sec_ms_gec_version
from .exceptions import (
NoAudioReceived,
UnexpectedResponse,
@@ -366,7 +367,9 @@ class Communicate:
trust_env=True,
timeout=self.session_timeout,
) as session, session.ws_connect(
f"{WSS_URL}&ConnectionId={connect_id()}",
f"{WSS_URL}&Sec-MS-GEC={generate_sec_ms_gec_token()}"
f"&Sec-MS-GEC-Version={generate_sec_ms_gec_version()}"
f"&ConnectionId={connect_id()}",
compress=15,
proxy=self.proxy,
headers=WSS_HEADERS,