# -*- coding: utf-8 -*- """后端 API 冒烟测试。""" import json import urllib.parse import urllib.request BASE = "http://127.0.0.1:8799" def get(path): with urllib.request.urlopen(BASE + path, timeout=60) as r: return json.loads(r.read().decode("utf-8")) def post(path, payload): data = json.dumps(payload).encode("utf-8") req = urllib.request.Request(BASE + path, data=data, headers={"Content-Type": "application/json"}) with urllib.request.urlopen(req, timeout=60) as r: return json.loads(r.read().decode("utf-8")) print("--- /api/config ---") cfg = get("/api/config") print(f"threads={cfg['threads']} outputDir={cfg['outputDir']}") print(f"ffmpeg={cfg['ffmpeg']}") print(f"configPath={cfg['configPath']}") print("\n--- /api/login ---") print(get("/api/login")) print("\n--- /api/search?q=航拍中国 ---") s = get("/api/search?q=" + urllib.parse.quote("航拍中国")) print(f"numResults={s['numResults']} hasMore={s['hasMore']} 条数={len(s['items'])}") for it in s["items"][:5]: print(f" {it['bvid']} {it['title'][:34]} up={it['author']} dur={it['duration']} play={it['play']}") print(f" pic = {s['items'][0]['pic']}") print("\n--- /api/video?bvid=BV1HVBAYLEAo ---") v = get("/api/video?bvid=BV1HVBAYLEAo") print(f"title={v['title']}") print(f"owner={v['owner']} duration={v['duration']}s pages={len(v['pages'])}") cid = v["pages"][0]["cid"] print(f"cid={cid}") print("\n--- /api/playurl ---") p = get(f"/api/playurl?bvid=BV1HVBAYLEAo&cid={cid}") print(f"maxQuality={p['maxQuality']} video流={len(p['video'])} audio流={len(p['audio'])}") for q in p["qualities"]: print(f" qn={q['quality']:>4} {q['label']} {q.get('width')}x{q.get('height')}") print(f" 4K 候选: " + ", ".join( f"{s['quality']}/{s['codecs']}/{s['bandwidth']//1000}kbps" for s in p["video"] if s["quality"] == 120))