Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -406,14 +406,17 @@ def on_gallery_select(files_list: List[str], evt: gr.SelectData):
|
|
| 406 |
|
| 407 |
|
| 408 |
# =========================
|
| 409 |
-
# Feedback (like/dislike) -> SAVE TO
|
| 410 |
# =========================
|
| 411 |
FEEDBACK_DIR = "./feedback"
|
| 412 |
FEEDBACK_PATH = os.path.join(FEEDBACK_DIR, "feedback.jsonl")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 413 |
FEEDBACK_REPO_FILEPATH = "feedback/feedback.jsonl"
|
| 414 |
-
SPACE_REPO_ID = (os.getenv("FEEDBACK_REPO_ID", "").strip() or os.getenv("SPACE_ID", "").strip())
|
| 415 |
|
| 416 |
-
_FEEDBACK_UI_MSG = "Спасибо за отзыв
|
| 417 |
|
| 418 |
|
| 419 |
def _read_local_feedback_text() -> str:
|
|
@@ -430,12 +433,12 @@ def _write_local_feedback_text(text: str) -> None:
|
|
| 430 |
|
| 431 |
|
| 432 |
def _download_repo_feedback(api: HfApi, token: str) -> str:
|
| 433 |
-
if not
|
| 434 |
return ""
|
| 435 |
try:
|
| 436 |
local_path = hf_hub_download(
|
| 437 |
-
repo_id=
|
| 438 |
-
repo_type=
|
| 439 |
filename=FEEDBACK_REPO_FILEPATH,
|
| 440 |
token=token,
|
| 441 |
)
|
|
@@ -446,8 +449,8 @@ def _download_repo_feedback(api: HfApi, token: str) -> str:
|
|
| 446 |
|
| 447 |
|
| 448 |
def _upload_repo_feedback(api: HfApi, token: str, text: str) -> None:
|
| 449 |
-
if not
|
| 450 |
-
raise RuntimeError("
|
| 451 |
os.makedirs(FEEDBACK_DIR, exist_ok=True)
|
| 452 |
tmp_path = os.path.join(FEEDBACK_DIR, "_feedback_upload.jsonl")
|
| 453 |
with open(tmp_path, "w", encoding="utf-8") as f:
|
|
@@ -456,8 +459,8 @@ def _upload_repo_feedback(api: HfApi, token: str, text: str) -> None:
|
|
| 456 |
api.upload_file(
|
| 457 |
path_or_fileobj=tmp_path,
|
| 458 |
path_in_repo=FEEDBACK_REPO_FILEPATH,
|
| 459 |
-
repo_id=
|
| 460 |
-
repo_type=
|
| 461 |
token=token,
|
| 462 |
commit_message="Add try-on feedback",
|
| 463 |
)
|
|
@@ -472,7 +475,7 @@ def save_feedback(is_like: bool, garment_name: str):
|
|
| 472 |
}
|
| 473 |
line = json.dumps(record, ensure_ascii=False) + "\n"
|
| 474 |
|
| 475 |
-
# 1)
|
| 476 |
try:
|
| 477 |
local_text = _read_local_feedback_text()
|
| 478 |
local_text += line
|
|
@@ -480,15 +483,15 @@ def save_feedback(is_like: bool, garment_name: str):
|
|
| 480 |
except Exception as e:
|
| 481 |
print("Feedback local write failed:", repr(e), flush=True)
|
| 482 |
|
| 483 |
-
# 2)
|
| 484 |
try:
|
| 485 |
token = (os.getenv("HF_TOKEN", "").strip() or os.getenv("HUGGINGFACEHUB_API_TOKEN", "").strip())
|
| 486 |
if not token:
|
| 487 |
print("Feedback repo sync skipped: HF_TOKEN not set", flush=True)
|
| 488 |
return _FEEDBACK_UI_MSG
|
| 489 |
|
| 490 |
-
if not
|
| 491 |
-
print("Feedback repo sync skipped:
|
| 492 |
return _FEEDBACK_UI_MSG
|
| 493 |
|
| 494 |
api = HfApi()
|
|
|
|
| 406 |
|
| 407 |
|
| 408 |
# =========================
|
| 409 |
+
# Feedback (like/dislike) -> SAVE TO DATASET REPO (NO SPACE REBUILD)
|
| 410 |
# =========================
|
| 411 |
FEEDBACK_DIR = "./feedback"
|
| 412 |
FEEDBACK_PATH = os.path.join(FEEDBACK_DIR, "feedback.jsonl")
|
| 413 |
+
|
| 414 |
+
# теперь FEEDBACK_REPO_ID указывает на отдельный Dataset repo (например ArmanRV/idm-vton-feedback)
|
| 415 |
+
FEEDBACK_REPO_ID = os.getenv("FEEDBACK_REPO_ID", "").strip()
|
| 416 |
+
FEEDBACK_REPO_TYPE = "dataset"
|
| 417 |
FEEDBACK_REPO_FILEPATH = "feedback/feedback.jsonl"
|
|
|
|
| 418 |
|
| 419 |
+
_FEEDBACK_UI_MSG = "Спасибо за отзыв, нейросеть еще учится"
|
| 420 |
|
| 421 |
|
| 422 |
def _read_local_feedback_text() -> str:
|
|
|
|
| 433 |
|
| 434 |
|
| 435 |
def _download_repo_feedback(api: HfApi, token: str) -> str:
|
| 436 |
+
if not FEEDBACK_REPO_ID:
|
| 437 |
return ""
|
| 438 |
try:
|
| 439 |
local_path = hf_hub_download(
|
| 440 |
+
repo_id=FEEDBACK_REPO_ID,
|
| 441 |
+
repo_type=FEEDBACK_REPO_TYPE,
|
| 442 |
filename=FEEDBACK_REPO_FILEPATH,
|
| 443 |
token=token,
|
| 444 |
)
|
|
|
|
| 449 |
|
| 450 |
|
| 451 |
def _upload_repo_feedback(api: HfApi, token: str, text: str) -> None:
|
| 452 |
+
if not FEEDBACK_REPO_ID:
|
| 453 |
+
raise RuntimeError("FEEDBACK_REPO_ID not set")
|
| 454 |
os.makedirs(FEEDBACK_DIR, exist_ok=True)
|
| 455 |
tmp_path = os.path.join(FEEDBACK_DIR, "_feedback_upload.jsonl")
|
| 456 |
with open(tmp_path, "w", encoding="utf-8") as f:
|
|
|
|
| 459 |
api.upload_file(
|
| 460 |
path_or_fileobj=tmp_path,
|
| 461 |
path_in_repo=FEEDBACK_REPO_FILEPATH,
|
| 462 |
+
repo_id=FEEDBACK_REPO_ID,
|
| 463 |
+
repo_type=FEEDBACK_REPO_TYPE,
|
| 464 |
token=token,
|
| 465 |
commit_message="Add try-on feedback",
|
| 466 |
)
|
|
|
|
| 475 |
}
|
| 476 |
line = json.dumps(record, ensure_ascii=False) + "\n"
|
| 477 |
|
| 478 |
+
# 1) локально (на всякий)
|
| 479 |
try:
|
| 480 |
local_text = _read_local_feedback_text()
|
| 481 |
local_text += line
|
|
|
|
| 483 |
except Exception as e:
|
| 484 |
print("Feedback local write failed:", repr(e), flush=True)
|
| 485 |
|
| 486 |
+
# 2) в Dataset repo (НЕ вызывает rebuild Space)
|
| 487 |
try:
|
| 488 |
token = (os.getenv("HF_TOKEN", "").strip() or os.getenv("HUGGINGFACEHUB_API_TOKEN", "").strip())
|
| 489 |
if not token:
|
| 490 |
print("Feedback repo sync skipped: HF_TOKEN not set", flush=True)
|
| 491 |
return _FEEDBACK_UI_MSG
|
| 492 |
|
| 493 |
+
if not FEEDBACK_REPO_ID:
|
| 494 |
+
print("Feedback repo sync skipped: FEEDBACK_REPO_ID not set", flush=True)
|
| 495 |
return _FEEDBACK_UI_MSG
|
| 496 |
|
| 497 |
api = HfApi()
|