This commit is contained in:
2025-12-18 07:27:37 -05:00
parent 6240888ac5
commit 041de95698
8 changed files with 1151 additions and 745 deletions

25
utils/yt_utils.py Normal file
View File

@@ -0,0 +1,25 @@
from typing import Optional
import hmac
import hashlib
import time
import base64
import os
VIDEO_PROXY_SECRET = os.environ.get("VIDEO_PROXY_SECRET", "").encode()
def sign_video_id(video_id: Optional[str|bool]) -> str:
"""Generate a signed token for a video ID."""
if not VIDEO_PROXY_SECRET or not video_id:
return "" # Return empty if no secret configured
timestamp = int(time.time() * 1000) # milliseconds to match JS Date.now()
payload = f"{video_id}:{timestamp}"
signature = hmac.new(
VIDEO_PROXY_SECRET,
payload.encode(),
hashlib.sha256
).hexdigest()
token_data = f"{payload}:{signature}"
# base64url encode (no padding, to match JS base64url)
return base64.urlsafe_b64encode(token_data.encode()).decode().rstrip("=")