api-proxy-demo / app.py
SunghyunJun's picture
Update demo to get actor_id
ef15d8b
raw
history blame
2.49 kB
import gradio as gr
import requests
import os
import json
PRIVATE_SPACE_URL = os.getenv("PRIVATE_SPACE_URL")
HF_TOKEN = os.getenv("HF_TOKEN")
def fetch_actor_data():
if not PRIVATE_SPACE_URL:
return "Error: PRIVATE_SPACE_URL not found. Check Secrets."
if not HF_TOKEN:
return "Error: HF_TOKEN not found. Check Secrets."
headers = {
"Authorization": f"Bearer {HF_TOKEN}"
}
try:
response = requests.get(f"{PRIVATE_SPACE_URL}/api/actor", headers=headers)
if response.status_code == 200:
# 응답 JSON 파싱
data = response.json()
# 기대 구조: data["data"]["result"] => list of actor items
actor_ids = []
if (
"data" in data
and isinstance(data["data"], dict)
and "result" in data["data"]
and isinstance(data["data"]["result"], list)
):
for item in data["data"]["result"]:
if "actor_id" in item:
actor_ids.append(item["actor_id"])
if len(actor_ids) >= 10:
break
if actor_ids:
return f"Found actor_ids: {actor_ids}"
else:
# actor_id가 없을 경우 구조 파악용 반환
top_level_keys = list(data["data"].keys()) if "data" in data and isinstance(data["data"], dict) else []
first_item = data["data"]["result"][0] if "data" in data and "result" in data["data"] and len(data["data"]["result"]) > 0 else {}
return (
"No actor_id found.\n\n"
f"Keys in data['data']: {top_level_keys}\n\n"
"First item in data['data']['result']:\n" +
json.dumps(first_item, indent=2, ensure_ascii=False)
)
else:
return f"Error {response.status_code}\nResponse Text:\n{response.text}"
except Exception as e:
return f"Request failed: {str(e)}"
iface = gr.Interface(
fn=fetch_actor_data,
inputs=None,
outputs="text",
title="Fetch Actor Data",
description=(
"Fetches actor data from the private Hugging Face Space.\n"
"Assumes structure: {status_code:..., data:{count:..., result:[{actor_id:...}]}}\n"
"If no actor_id found, shows partial keys for debugging."
)
)
if __name__ == "__main__":
iface.launch()