EmeraldCreator commited on
Commit
20ba4ba
·
verified ·
1 Parent(s): b2f0e5a

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +36 -16
main.py CHANGED
@@ -1,12 +1,12 @@
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.middleware.cors import CORSMiddleware
3
- from fastapi.staticfiles import StaticFiles
4
- import shutil
5
  import os
 
6
 
7
  app = FastAPI()
8
 
9
- # Разрешаем запросы с любого адреса (чтобы твой HTML мог общаться с сервером)
10
  app.add_middleware(
11
  CORSMiddleware,
12
  allow_origins=["*"],
@@ -14,24 +14,44 @@ app.add_middleware(
14
  allow_headers=["*"],
15
  )
16
 
17
- UPLOAD_DIR = "uploads"
18
- os.makedirs(UPLOAD_DIR, exist_ok=True)
 
 
 
19
 
20
  @app.post("/upload")
21
  async def upload_video(file: UploadFile = File(...)):
22
- # Сохраняем файл с оригинальным именем
23
- file_path = os.path.join(UPLOAD_DIR, file.filename)
24
- with open(file_path, "wb") as buffer:
25
  shutil.copyfileobj(file.file, buffer)
26
- return {"url": f"/{UPLOAD_DIR}/{file.filename}"}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  @app.get("/videos")
29
  async def get_videos():
30
- # Получаем список всех видео в папке
31
- if not os.path.exists(UPLOAD_DIR):
 
 
 
 
 
 
 
32
  return []
33
- videos = [f"/{UPLOAD_DIR}/{v}" for v in os.listdir(UPLOAD_DIR) if v.endswith(('.mp4', '.mov', '.avi'))]
34
- return videos
35
-
36
- # Раздаем папку uploads как статические файлы
37
- app.mount("/uploads", StaticFiles(directory=UPLOAD_DIR), name="uploads")
 
1
  from fastapi import FastAPI, UploadFile, File
2
  from fastapi.middleware.cors import CORSMiddleware
3
+ from huggingface_hub import HfApi
 
4
  import os
5
+ import shutil
6
 
7
  app = FastAPI()
8
 
9
+ # Разрешаем твоему сайту подключаться
10
  app.add_middleware(
11
  CORSMiddleware,
12
  allow_origins=["*"],
 
14
  allow_headers=["*"],
15
  )
16
 
17
+ # НАСТРОЙКИ (EmeraldCreator — это твой ник)
18
+ REPO_ID = "EmeraldCreator/BlueTok-Storage"
19
+ TOKEN = os.environ.get("HF_TOKEN")
20
+
21
+ api = HfApi()
22
 
23
  @app.post("/upload")
24
  async def upload_video(file: UploadFile = File(...)):
25
+ temp_path = file.filename
26
+ with open(temp_path, "wb") as buffer:
 
27
  shutil.copyfileobj(file.file, buffer)
28
+
29
+ try:
30
+ # Загружаем в датасет
31
+ api.upload_file(
32
+ path_or_fileobj=temp_path,
33
+ path_in_repo=f"videos/{file.filename}",
34
+ repo_id=REPO_ID,
35
+ repo_type="dataset",
36
+ token=TOKEN
37
+ )
38
+
39
+ # Ссылка на файл в датасете
40
+ raw_url = f"https://huggingface.co/datasets/{REPO_ID}/resolve/main/videos/{file.filename}"
41
+ os.remove(temp_path)
42
+ return {"url": raw_url}
43
+ except Exception as e:
44
+ return {"error": str(e)}
45
 
46
  @app.get("/videos")
47
  async def get_videos():
48
+ try:
49
+ # Список всех файлов в датасете
50
+ files = api.list_repo_files(repo_id=REPO_ID, repo_type="dataset", token=TOKEN)
51
+ video_urls = [
52
+ f"https://huggingface.co/datasets/{REPO_ID}/resolve/main/{f}"
53
+ for f in files if f.startswith("videos/") and f.endswith(('.mp4', '.mov', '.avi'))
54
+ ]
55
+ return video_urls
56
+ except:
57
  return []