Update app.py
Browse files
app.py
CHANGED
|
@@ -25,6 +25,7 @@ from pathlib import Path
|
|
| 25 |
from huggingface_hub import CommitScheduler, hf_hub_download
|
| 26 |
from urllib.parse import unquote
|
| 27 |
import re
|
|
|
|
| 28 |
|
| 29 |
# ==================================================
|
| 30 |
# APP SETUP
|
|
@@ -74,8 +75,9 @@ GOOGLE_KEY = os.environ.get("GOOGLE_KEY")
|
|
| 74 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
| 75 |
|
| 76 |
SHEET_ID = "1o0AUq13j-7LZWDhCwFYgq07niZtvOya5iE5bbRQMGWc"
|
|
|
|
| 77 |
GOOGLE_FORM_ACTION_URL = "https://docs.google.com/forms/d/e/1FAIpQLSeg_6oh7Uh46zODsawnctwT_Bfu48ojtK3b8JLZeaZuaEQ1Ig/formResponse"
|
| 78 |
-
|
| 79 |
|
| 80 |
DATASET_REPO = "SalexAI/mztimgs" # 👈 change if needed
|
| 81 |
|
|
@@ -494,14 +496,27 @@ async def proxy_google_sheets(range: str):
|
|
| 494 |
# GOOGLE FORM JSON SUBMIT
|
| 495 |
# ==================================================
|
| 496 |
@app.post("/form")
|
| 497 |
-
async def submit_form(payload:
|
| 498 |
json_value = json.dumps(payload, ensure_ascii=False)
|
| 499 |
-
data = {GOOGLE_FORM_JSON_ENTRY: json_value}
|
| 500 |
|
| 501 |
async with httpx.AsyncClient(timeout=15, follow_redirects=False) as client:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 502 |
r = await client.post(GOOGLE_FORM_ACTION_URL, data=data)
|
| 503 |
|
| 504 |
if r.status_code not in (200, 302):
|
| 505 |
raise HTTPException(status_code=502, detail="Google Form submit failed")
|
| 506 |
|
| 507 |
-
return {"ok": True, "submitted": True}
|
|
|
|
| 25 |
from huggingface_hub import CommitScheduler, hf_hub_download
|
| 26 |
from urllib.parse import unquote
|
| 27 |
import re
|
| 28 |
+
from typing import Any
|
| 29 |
|
| 30 |
# ==================================================
|
| 31 |
# APP SETUP
|
|
|
|
| 75 |
HF_TOKEN = os.environ.get("HF_TOKEN")
|
| 76 |
|
| 77 |
SHEET_ID = "1o0AUq13j-7LZWDhCwFYgq07niZtvOya5iE5bbRQMGWc"
|
| 78 |
+
GOOGLE_FORM_VIEW_URL = "https://docs.google.com/forms/d/e/1FAIpQLSeg_6oh7Uh46zODsawnctwT_Bfu48ojtK3b8JLZeaZuaEQ1Ig/viewform?usp=publish-editor"
|
| 79 |
GOOGLE_FORM_ACTION_URL = "https://docs.google.com/forms/d/e/1FAIpQLSeg_6oh7Uh46zODsawnctwT_Bfu48ojtK3b8JLZeaZuaEQ1Ig/formResponse"
|
| 80 |
+
GOOGLE_FORM_JSON_ENTRIES = ("entry.240290822", "entry.421446115")
|
| 81 |
|
| 82 |
DATASET_REPO = "SalexAI/mztimgs" # 👈 change if needed
|
| 83 |
|
|
|
|
| 496 |
# GOOGLE FORM JSON SUBMIT
|
| 497 |
# ==================================================
|
| 498 |
@app.post("/form")
|
| 499 |
+
async def submit_form(payload: Any = Body(...)):
|
| 500 |
json_value = json.dumps(payload, ensure_ascii=False)
|
|
|
|
| 501 |
|
| 502 |
async with httpx.AsyncClient(timeout=15, follow_redirects=False) as client:
|
| 503 |
+
view = await client.get(GOOGLE_FORM_VIEW_URL)
|
| 504 |
+
# Google may reject incomplete posts for some forms; pass hidden fields when available.
|
| 505 |
+
hidden = {
|
| 506 |
+
"fvv": re.search(r'name="fvv" value="([^"]+)"', view.text),
|
| 507 |
+
"pageHistory": re.search(r'name="pageHistory" value="([^"]+)"', view.text),
|
| 508 |
+
"fbzx": re.search(r'name="fbzx" value="([^"]+)"', view.text),
|
| 509 |
+
}
|
| 510 |
+
data = {}
|
| 511 |
+
for key in GOOGLE_FORM_JSON_ENTRIES:
|
| 512 |
+
data[key] = json_value
|
| 513 |
+
for key, match in hidden.items():
|
| 514 |
+
if match:
|
| 515 |
+
data[key] = match.group(1)
|
| 516 |
+
|
| 517 |
r = await client.post(GOOGLE_FORM_ACTION_URL, data=data)
|
| 518 |
|
| 519 |
if r.status_code not in (200, 302):
|
| 520 |
raise HTTPException(status_code=502, detail="Google Form submit failed")
|
| 521 |
|
| 522 |
+
return {"ok": True, "submitted": True, "chars": len(json_value)}
|