Download pv_type_test.py from zlcy/study: direct link, hf CLI and curl.
- Browser
- Download file 1.98 kB
-
https://huggingface.co/spaces/zlcy/study/resolve/main/pv_type_test.py
- Command line
-
hf download hf://spaces/zlcy/study/pv_type_test.py
-
curl -L -o pv_type_test.py https://huggingface.co/spaces/zlcy/study/resolve/main/pv_type_test.py
1.98 kB
| import requests, time, struct, zlib, base64 | |
| def make_png(): | |
| w, h = 256, 192 | |
| rows = [] | |
| for y in range(h): | |
| row = bytearray([0]) | |
| for x in range(w): | |
| left = (60 <= x <= 110 and 60 <= y <= 130) | |
| right = (150 <= x <= 200 and 60 <= y <= 130) | |
| band = (110 <= x <= 150 and 30 <= y <= 45) | |
| if left or right or band: | |
| row += bytes([120, 80, 200]) | |
| else: | |
| row += bytes([248, 248, 250]) | |
| rows.append(bytes(row)) | |
| raw = b"".join(rows) | |
| def chunk(t, d): | |
| c = t + d | |
| return struct.pack(">I", len(d)) + c + struct.pack(">I", zlib.crc32(c) & 0xffffffff) | |
| ihdr = struct.pack(">IIBBBBB", w, h, 8, 2, 0, 0, 0) | |
| return b"\x89PNG\r\n\x1a\n" + chunk(b"IHDR", ihdr) + chunk(b"IDAT", zlib.compress(raw)) + chunk(b"IEND", b"") | |
| png = make_png() | |
| BASE = "http://127.0.0.1:8000" | |
| H = {"Authorization": "Bearer sk-AQM1TfaVx2VSzEoTLiV1J2NH1B92g6AI"} | |
| files = {"image": ("headphone.png", png, "image/png")} | |
| data = {"client_task_id": "typewriter_demo_002", "prompt": "紫色头戴式蓝牙耳机,主动降噪,40mm动圈,适合通勤和游戏", "scenario": "detail_page", "platform": "jd", "output_count": "6"} | |
| r = requests.post(BASE + "/api/product-visual/tasks", headers=H, data=data, files=files, timeout=30) | |
| t = r.json() | |
| print("CREATE:", r.status_code, "stage:", t.get("plan_stage")) | |
| # 每 5 秒采样 analysis 是否出现且内容逐渐完整 | |
| prev_len = 0 | |
| for i in range(16): | |
| time.sleep(5) | |
| r2 = requests.get(BASE + "/api/product-visual/tasks?ids=typewriter_demo_002", headers=H, timeout=15) | |
| tt = r2.json().get("items", [{}])[0] | |
| stage = tt.get("plan_stage") | |
| a = tt.get("plan_analysis") or {} | |
| cat = a.get("category") or "" | |
| print(f" [{i*5+5}s] stage={stage} analysis_len={len(cat)} status={tt.get('status')}") | |
| if cat: | |
| print(f" category: {cat[:60]}") | |
| if stage == "done": | |
| print(" DONE") | |
| break | |