liuhuohuo commited on
Commit
6250353
·
verified ·
1 Parent(s): 3c81231

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -15
app.py CHANGED
@@ -1,41 +1,40 @@
 
 
 
1
  from fastapi import FastAPI, Request
2
  from fastapi.middleware.cors import CORSMiddleware
3
  from huggingface_hub import HfApi
4
- import json
5
- import datetime
6
 
7
  app = FastAPI()
8
 
9
- # 【关键】允许来自 GitHub Pages 的跨域请求
10
  app.add_middleware(
11
  CORSMiddleware,
12
- allow_origins=["*"], # 生产环境建议改为你的 github.io 地址
13
- allow_methods=["POST"],
14
  allow_headers=["*"],
15
  )
16
 
17
- # 配置
18
  TOKEN = os.getenv("HF_TOKEN")
19
- DATASET_ID = "liuhuohuo/user_study_data"
20
  api = HfApi()
21
 
 
22
  @app.get("/")
23
  def greet_json():
24
  return {"status": "API is running", "timestamp": str(datetime.datetime.now())}
25
 
26
-
27
  @app.post("/submit")
28
  async def collect_data(request: Request):
29
  data = await request.json()
30
 
31
- # 构造文件名(按天或按用户存储)
32
- timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
33
- filename = f"record_{timestamp}.json"
34
-
35
- # 将收到的 JSON 转换为字节
36
  content = json.dumps(data, indent=2).encode("utf-8")
37
 
38
- # 直接上传到 HF Dataset 仓库
39
  api.upload_file(
40
  path_or_fileobj=content,
41
  path_in_repo=f"results/{filename}",
@@ -43,5 +42,4 @@ async def collect_data(request: Request):
43
  repo_type="dataset",
44
  token=TOKEN
45
  )
46
-
47
  return {"status": "success"}
 
1
+ import os
2
+ import json
3
+ import datetime
4
  from fastapi import FastAPI, Request
5
  from fastapi.middleware.cors import CORSMiddleware
6
  from huggingface_hub import HfApi
 
 
7
 
8
  app = FastAPI()
9
 
10
+ # 1. 必须配置:允许你的 HTML 页面跨域提交数据
11
  app.add_middleware(
12
  CORSMiddleware,
13
+ allow_origins=["*"],
14
+ allow_methods=["*"],
15
  allow_headers=["*"],
16
  )
17
 
18
+ # 2. 必须配置:从 Secret 获取 Token
19
  TOKEN = os.getenv("HF_TOKEN")
20
+ DATASET_ID = "liuhuohuo/user_study_data" # 请修改此处
21
  api = HfApi()
22
 
23
+ # 基础示例的保留(用于测试 Space 是否存活)
24
  @app.get("/")
25
  def greet_json():
26
  return {"status": "API is running", "timestamp": str(datetime.datetime.now())}
27
 
28
+ # 你的核心业务逻辑
29
  @app.post("/submit")
30
  async def collect_data(request: Request):
31
  data = await request.json()
32
 
33
+ # 格式化文件名:record_20260208_120000.json
34
+ filename = f"record_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.json"
 
 
 
35
  content = json.dumps(data, indent=2).encode("utf-8")
36
 
37
+ # 上传到数据集的 results 文件夹下
38
  api.upload_file(
39
  path_or_fileobj=content,
40
  path_in_repo=f"results/{filename}",
 
42
  repo_type="dataset",
43
  token=TOKEN
44
  )
 
45
  return {"status": "success"}