diff --git a/TTS/OhFreeMe.py b/TTS/OhFreeMe.py index a030401..2f9b904 100644 --- a/TTS/OhFreeMe.py +++ b/TTS/OhFreeMe.py @@ -1,16 +1,22 @@ import base64 import json +import os import random import time from pathlib import Path import requests +from dotenv import load_dotenv from utils import settings from utils.console import print_substep -API_URL = "https://tts.ohfree.me/api/tts" -# JWT token for authentication (replace if needed) +# Load environment variables from .env file +load_dotenv() + +OHFREEME_API_URL = os.getenv("OHFREEME_API_URL", "") +OHFREEME_BASE_URL = os.getenv("OHFREEME_BASE_URL", "") +JWT_TOKEN = os.getenv("OHFREEME_JWT_TOKEN", "") VOICES_FILE = Path(__file__).resolve().parent.parent / "config" / "ohfreeme_voices.json" MAX_RETRIES = 3 RATE_LIMIT_WAIT = 10 @@ -98,15 +104,15 @@ class OhFreeMe: "accept": "*/*", "cache-control": "no-cache", "content-type": "application/json", - "origin": "https://tts.ohfree.me", + "origin": OHFREEME_BASE_URL, "cookie": f"auth_token={JWT_TOKEN}", - "referer": "https://tts.ohfree.me/", + "referer": OHFREEME_BASE_URL, "user-agent": self._pick_user_agent(), } # streaming NDJSON response with debug logging for attempt in range(MAX_RETRIES): - resp = requests.post(API_URL, json=payload, headers=headers, stream=True) + resp = requests.post(OHFREEME_API_URL, json=payload, headers=headers, stream=True) # Rate‑limit handling – first line may contain error object try: first_line = next(resp.iter_lines()) diff --git a/requirements.txt b/requirements.txt index 7aa38ee..cbbef79 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,3 +19,4 @@ transformers==4.52.4 ffmpeg-python==0.2.0 elevenlabs==1.57.0 yt-dlp==2025.10.22 +python-dotenv==1.0.0