goon/scripts/test_resolve_endpoint.py
goon-foss a4486980a4 style: myslniki em/en z komentarzy i docstringow (calosc repo)
1745 wystapien w 291 plikach (backend, scripts, mobile). Dominowal jeden ksztalt,
' — ' laczace zdania, wiec poszedl przecinek; myslnik otwierajacy mysl zdjety;
zakresy 0–5 i A–Z na dywiz.

Podzial komentarz/kod robil skaner stanow, nie regex, zeby nie ruszyc myslnika
stojacego w stringu albo w wyrazeniu regularnym. Potwierdzone maszynowo: po wycieciu
komentarzy z wersji HEAD i z dysku obie sa identyczne we wszystkich 291 plikach,
czyli poza komentarzami nie zmienilo sie nic. 233 pliki .py parsuja sie bez bledu,
tsc ma te same 11 bledow w tych samych 3 plikach co przed zmiana.

Dwie rzeczy wymagaly poprawki po automacie: wyrownane listy definicji, gdzie myslnik
byl separatorem kolumny (37 miejsc, kolumna przywrocona), i trzy przeniesienia mysli
do nowej linii, gdzie zostawal wiszacy przecinek na poczatku (poprawione recznie).

Bundla nie republikuje: Hermes i tak nie niesie komentarzy, wiec dla uzytkownika
to zero zmiany.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 11:51:57 +02:00

59 lines
2.2 KiB
Python

"""Test /resolve endpoint for sample playback URLs across multiple tubes, sprawdza
czy stream_url jest niepuste (= direct video, nie embed)."""
from __future__ import annotations
import sys
import httpx
from app.db import session_scope
from app.models.playback_source import PlaybackSource
from sqlalchemy import select
def main() -> None:
base = "http://localhost:8000"
api_key = sys.argv[1] if len(sys.argv) > 1 else None
if not api_key:
print("usage: test_resolve_endpoint.py <api_key>")
sys.exit(1)
targets = [
("pornapp:porntrexcom", "porntrex"),
("pornapp:porn4dayspw", "porn4days"),
("pornapp:hqpornercom", "hqporner"),
]
with session_scope() as s:
for origin, label in targets:
row = s.execute(
select(PlaybackSource.id, PlaybackSource.scene_id, PlaybackSource.page_url)
.where(PlaybackSource.origin == origin)
.where(PlaybackSource.dead_at.is_(None))
.limit(1)
).first()
if row is None:
print(f"[{label}] NO PLAYBACK SOURCE")
continue
pb_id, scene_id, page_url = row
url = f"{base}/scenes/{scene_id}/playback/{pb_id}/resolve"
try:
r = httpx.post(url, headers={"X-API-Key": api_key}, timeout=60.0)
except Exception as e:
print(f"[{label}] ERROR: {e}")
continue
print(f"[{label}] status={r.status_code} page={page_url[:60]}")
if r.status_code == 200:
data = r.json()
best = data.get("best") or {}
print(f" best.stream_url: {(best.get('stream_url') or '')[:90]}")
print(f" best.embed_url: {(best.get('embed_url') or '')[:90]}")
print(f" best.type: {best.get('type')}")
print(f" best.quality: {best.get('quality')}")
links = data.get("links", [])
print(f" total links: {len(links)} ({sum(1 for l in links if l.get('stream_url'))} direct)")
else:
print(f" body: {r.text[:200]}")
if __name__ == "__main__":
main()