PLUS: проверка API понимает заглушку провайдера, переоткрытий не больше 5
Browse files- plus/selfcheck.py +15 -1
plus/selfcheck.py
CHANGED
|
@@ -45,10 +45,14 @@ def make_probe(path=PROBE, seconds=2.0, rate=44100):
|
|
| 45 |
return path
|
| 46 |
|
| 47 |
|
|
|
|
|
|
|
|
|
|
| 48 |
def get(url, timeout=20):
|
| 49 |
started = time.time()
|
| 50 |
try:
|
| 51 |
-
|
|
|
|
| 52 |
body = answer.read()
|
| 53 |
return answer.status, body, time.time() - started
|
| 54 |
except urllib.error.HTTPError as problem:
|
|
@@ -121,9 +125,19 @@ def main():
|
|
| 121 |
if args.url:
|
| 122 |
print("\n[3] публичная ссылка")
|
| 123 |
status, body, spent = get(args.url.rstrip("/") + "/instruments", timeout=30)
|
|
|
|
| 124 |
print(" ссылка/instruments → %s за %.1f с" % (status, spent))
|
| 125 |
if status != 200:
|
| 126 |
print(" ВЫВОД: снаружи не отвечает, туннель не смотрит на прокси")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
if not args.skip_transcribe:
|
| 129 |
print("\n[4] сама транскрипция через прокси")
|
|
|
|
| 45 |
return path
|
| 46 |
|
| 47 |
|
| 48 |
+
BYPASS = {"serveo-skip-browser-warning": "true"}
|
| 49 |
+
|
| 50 |
+
|
| 51 |
def get(url, timeout=20):
|
| 52 |
started = time.time()
|
| 53 |
try:
|
| 54 |
+
request = urllib.request.Request(url, headers=BYPASS)
|
| 55 |
+
with urllib.request.urlopen(request, timeout=timeout) as answer:
|
| 56 |
body = answer.read()
|
| 57 |
return answer.status, body, time.time() - started
|
| 58 |
except urllib.error.HTTPError as problem:
|
|
|
|
| 125 |
if args.url:
|
| 126 |
print("\n[3] публичная ссылка")
|
| 127 |
status, body, spent = get(args.url.rstrip("/") + "/instruments", timeout=30)
|
| 128 |
+
text = body.decode("utf-8", "ignore")
|
| 129 |
print(" ссылка/instruments → %s за %.1f с" % (status, spent))
|
| 130 |
if status != 200:
|
| 131 |
print(" ВЫВОД: снаружи не отвечает, туннель не смотрит на прокси")
|
| 132 |
+
elif "instruments" not in text:
|
| 133 |
+
print(" ВЫВОД: вместо JSON пришла страница провайдера"
|
| 134 |
+
" (заглушка), API работать не будет")
|
| 135 |
+
else:
|
| 136 |
+
try:
|
| 137 |
+
count = len(json.loads(text).get("instruments", []))
|
| 138 |
+
print(" снаружи видно %d инструментов" % count)
|
| 139 |
+
except Exception:
|
| 140 |
+
print(" ВЫВОД: ответ снаружи не разобрать как JSON")
|
| 141 |
|
| 142 |
if not args.skip_transcribe:
|
| 143 |
print("\n[4] сама транскрипция через прокси")
|