ginipick commited on
Commit
216bae4
ยท
verified ยท
1 Parent(s): 271e327

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -0
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ def fetch_all(limit=50):
2
+ """
3
+ Vercel API v10/projects๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
4
+ """
5
+ try:
6
+ # API ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •
7
+ params = {"limit": limit}
8
+ if TEAM:
9
+ params["teamId"] = TEAM
10
+
11
+ print(f"Vercel API ํ˜ธ์ถœ (ํ”„๋กœ์ ํŠธ): {API}/v10/projects (params={params})")
12
+
13
+ resp = requests.get(f"{API}/v10/projects",
14
+ headers=HEAD, params=params, timeout=30)
15
+
16
+ print(f"API ์‘๋‹ต ์ƒํƒœ ์ฝ”๋“œ: {resp.status_code}")
17
+ if resp.status_code != 200:
18
+ print(f"API ์‘๋‹ต ์˜ค๋ฅ˜: {resp.status_code}, {resp.text[:200] if hasattr(resp, 'text') else ''}")
19
+ return []
20
+
21
+ data = resp.json()
22
+
23
+ if "projects" not in data:
24
+ print(f"API ์‘๋‹ต์— projects ํ•„๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: {str(data)[:200]}...")
25
+ return []
26
+
27
+ projects = data.get("projects", [])
28
+ print(f"{len(projects)}๊ฐœ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค")
29
+
30
+ # ๊ฐ ํ”„๋กœ์ ํŠธ์˜ ์ตœ์‹  ๋ฐฐํฌ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
31
+ games = []
32
+ for project in projects:
33
+ project_id = project.get("id")
34
+ project_name = project.get("name", "(์ œ๋ชฉ ์—†์Œ)")
35
+
36
+ # ํ”„๋กœ์ ํŠธ๋ณ„ ์ตœ์‹  ๋ฐฐํฌ ๊ฐ€์ ธ์˜ค๊ธฐ (projectId ํ•„ํ„ฐ ์ถ”๊ฐ€)
37
+ try:
38
+ deploy_params = {
39
+ "limit": 1,
40
+ "projectId": project_id, # ์ค‘์š”: ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์˜ ๋ฐฐํฌ๋งŒ ํ•„ํ„ฐ๋ง
41
+ "state": "READY"
42
+ }
43
+
44
+ if TEAM:
45
+ deploy_params["teamId"] = TEAM
46
+
47
+ print(f"ํ”„๋กœ์ ํŠธ {project_id} ({project_name}) ๋ฐฐํฌ ์กฐํšŒ ์ค‘...")
48
+
49
+ deploy_resp = requests.get(
50
+ f"{API}/v6/deployments",
51
+ headers=HEAD,
52
+ params=deploy_params,
53
+ timeout=30
54
+ )
55
+
56
+ if deploy_resp.status_code == 200:
57
+ deploy_data = deploy_resp.json()
58
+ deployments = deploy_data.get("deployments", [])
59
+
60
+ if deployments:
61
+ deployment = deployments[0]
62
+ url = deployment.get("url", "")
63
+ if url:
64
+ games.append({
65
+ "title": project_name,
66
+ "url": f"https://{url}",
67
+ "ts": int(deployment.get("created", time.time() * 1000) / 1000),
68
+ "projectId": project_id
69
+ })
70
+ print(f"ํ”„๋กœ์ ํŠธ {project_name}์˜ ๋ฐฐํฌ URL: https://{url}")
71
+ else:
72
+ print(f"ํ”„๋กœ์ ํŠธ {project_name}์— ๋ฐฐํฌ๋œ ๋ฒ„์ „์ด ์—†์Šต๋‹ˆ๋‹ค.")
73
+ except Exception as e:
74
+ print(f"ํ”„๋กœ์ ํŠธ {project_id}์˜ ๋ฐฐํฌ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ ์‹คํŒจ: {e}")
75
+ continue
76
+
77
+ print(f"์ด {len(games)}๊ฐœ์˜ ์œ ํšจํ•œ ๋ฐฐํฌ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค")
78
+ return sorted(games, key=lambda x: x["ts"], reverse=True)
79
+
80
+ except Exception as e:
81
+ print(f"Vercel API ์˜ค๋ฅ˜: {str(e)}")
82
+ import traceback
83
+ traceback.print_exc()
84
+ return []
85
+
86
+
87
+