- Eget tænkenummer til de ti oprindelige kategorier - tts_warm --reserve: forvarmningen rører aldrig de sidste credits i perioden Claude-Session: https://claude.ai/code/session_01JmhJG6JnhXfzNiKv8f2vHu
This commit is contained in:
@@ -24,8 +24,10 @@ class Command(BaseCommand):
|
||||
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument("--budget", type=int, default=0, help="højst så mange nye tegn ud over de faste replikker")
|
||||
parser.add_argument("--reserve", type=int, default=40000,
|
||||
help="rør ikke de sidste så mange credits i perioden (de skal bruges til spil)")
|
||||
|
||||
def handle(self, *args, budget, **opts):
|
||||
def handle(self, *args, budget, reserve, **opts):
|
||||
if not tts.enabled():
|
||||
self.stdout.write("ElevenLabs er ikke sat op (ELEVENLABS_API_KEY/ELEVENLABS_VOICE_ID). Springer over.")
|
||||
return
|
||||
@@ -36,6 +38,12 @@ class Command(BaseCommand):
|
||||
self.stdout.write(self.style.SUCCESS(f"{ok} af {len(static)} faste replikker ligger i cachen."))
|
||||
if budget <= 0:
|
||||
return
|
||||
left = tts.credits_left()
|
||||
if left is not None:
|
||||
budget = min(budget, max(0, left - reserve))
|
||||
self.stdout.write(f"{left} credits tilbage i perioden; reserve {reserve}; budget i nat {budget} tegn.")
|
||||
if budget <= 0:
|
||||
return
|
||||
|
||||
# Spørgsmålene i den rækkefølge, spillet vælger dem (mindst brugte først), skiftevis med
|
||||
# kategori-replikkerne, så begge dele bliver dækket over et par nætter.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -64,6 +64,19 @@ def _fetch(text: str, path: Path) -> None:
|
||||
tmp.replace(path)
|
||||
|
||||
|
||||
def credits_left() -> int | None:
|
||||
"""Resterende ElevenLabs-credits i denne periode, eller None hvis nøglen ikke må læse det (user_read)."""
|
||||
req = urllib.request.Request("https://api.elevenlabs.io/v1/user/subscription",
|
||||
headers={"xi-api-key": settings.ELEVENLABS_API_KEY})
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=15) as resp:
|
||||
d = json.load(resp)
|
||||
return int(d["character_limit"]) - int(d["character_count"])
|
||||
except Exception as e: # noqa: BLE001
|
||||
log.info("Kunne ikke læse ElevenLabs-saldoen: %s", _describe(e))
|
||||
return None
|
||||
|
||||
|
||||
def is_cached(text: str) -> bool:
|
||||
return bool(text.strip()) and cache_path(_digest(text)).exists()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user