ginipick commited on
Commit
efd2239
ยท
verified ยท
1 Parent(s): 175650f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -21
app.py CHANGED
@@ -26,12 +26,13 @@ def _load_best():
26
 
27
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 3. NEW: 6๊ธ€์ž vercel.app ๋ฐฐํฌ โ”€โ”€โ”€โ”€โ”€
28
  # 3. NEW: 6๊ธ€์ž vercel.app ๋ฐฐํฌ
29
- PAT = re.compile(r"^[a-z0-9]{6}\.vercel\.app$", re.I)
 
 
30
 
31
  def fetch_all(limit=200):
32
  """
33
- READY ๋ฐฐํฌ ์ค‘ 'tmkdop.vercel.app' ์ฒ˜๋Ÿผ 6๊ธ€์ž ๋„๋ฉ”์ธ์ด ๋‹ฌ๋ฆฐ ๊ฒƒ๋งŒ ์ˆ˜์ง‘
34
- ยท url ํ•„๋“œ์™€ alias ๋ฐฐ์—ด์„ ๋ชจ๋‘ ๊ฒ€์ƒ‰
35
  """
36
  try:
37
  # ํ† ํฐ ๊ฒ€์ฆ
@@ -43,46 +44,58 @@ def fetch_all(limit=200):
43
  if TEAM:
44
  params["teamId"] = TEAM
45
 
46
- # ์š”์ฒญ ๋กœ๊ทธ ์ถ”๊ฐ€
47
  print(f"Vercel API ํ˜ธ์ถœ: {API}/v6/deployments (limit={limit})")
48
 
49
  resp = requests.get(f"{API}/v6/deployments",
50
  headers=HEAD, params=params, timeout=30)
51
 
52
- # ์ƒํƒœ ์ฝ”๋“œ ํ™•์ธ ๋ฐ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฐœ์„ 
53
  if resp.status_code != 200:
54
  print(f"API ์‘๋‹ต ์˜ค๋ฅ˜: {resp.status_code}, {resp.text[:200]}")
55
  return []
56
 
57
  data = resp.json()
58
 
59
- # ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒ€์ฆ
60
  if "deployments" not in data:
61
  print(f"API ์‘๋‹ต์— deployments ํ•„๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: {str(data)[:200]}...")
62
  return []
63
 
64
  print(f"{len(data['deployments'])}๊ฐœ์˜ ๋ฐฐํฌ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค")
65
 
 
 
 
 
 
 
 
 
 
66
  games = []
67
  for d in data.get("deployments", []):
68
  if d.get("state") != "READY":
69
  continue
70
 
71
- # โ”€โ”€ url + alias ๋ฐฐ์—ด ํ†ตํ•ฉ ๊ฒ€์‚ฌ
72
- candidates = [d.get("url", "")]
73
- candidates.extend(d.get("alias", []))
74
-
75
- six = next((dom for dom in candidates if PAT.match(dom)), None)
76
- if not six:
77
- continue
78
-
79
- games.append({
80
- "title": d.get("name", "(์ œ๋ชฉ ์—†์Œ)"),
81
- "url": f"https://{six}",
82
- "ts": int(d.get("created", time.time() * 1000) / 1000)
83
- })
84
-
85
- print(f"6์ž ๋„๋ฉ”์ธ ๋ฐฐํฌ {len(games)}๊ฐœ๋ฅผ ํ•„ํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค")
 
 
 
 
 
 
86
  return sorted(games, key=lambda x: x["ts"], reverse=True)
87
 
88
  except Exception as e:
 
26
 
27
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 3. NEW: 6๊ธ€์ž vercel.app ๋ฐฐํฌ โ”€โ”€โ”€โ”€โ”€
28
  # 3. NEW: 6๊ธ€์ž vercel.app ๋ฐฐํฌ
29
+
30
+ # ์ˆ˜์ •
31
+ PAT = re.compile(r"^[a-z0-9-]{1,}\.vercel\.app$", re.I) # 6์ž ์ œํ•œ ์™„ํ™”
32
 
33
  def fetch_all(limit=200):
34
  """
35
+ Vercel ๋ฐฐํฌ ์ค‘ vercel.app ๋„๋ฉ”์ธ์„ ๊ฐ€์ง„ ๊ฒƒ์„ ์ˆ˜์ง‘
 
36
  """
37
  try:
38
  # ํ† ํฐ ๊ฒ€์ฆ
 
44
  if TEAM:
45
  params["teamId"] = TEAM
46
 
 
47
  print(f"Vercel API ํ˜ธ์ถœ: {API}/v6/deployments (limit={limit})")
48
 
49
  resp = requests.get(f"{API}/v6/deployments",
50
  headers=HEAD, params=params, timeout=30)
51
 
 
52
  if resp.status_code != 200:
53
  print(f"API ์‘๋‹ต ์˜ค๋ฅ˜: {resp.status_code}, {resp.text[:200]}")
54
  return []
55
 
56
  data = resp.json()
57
 
 
58
  if "deployments" not in data:
59
  print(f"API ์‘๋‹ต์— deployments ํ•„๋“œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค: {str(data)[:200]}...")
60
  return []
61
 
62
  print(f"{len(data['deployments'])}๊ฐœ์˜ ๋ฐฐํฌ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค")
63
 
64
+ # ๋””๋ฒ„๊น…: ์ฒซ ๋ฒˆ์งธ ์‘๋‹ต ํ˜•์‹ ํ™•์ธ
65
+ if data["deployments"]:
66
+ first = data["deployments"][0]
67
+ print(f"\n์ฒซ ๋ฒˆ์งธ ๋ฐฐํฌ URL: {first.get('url')}")
68
+ print(f"์ฒซ ๋ฒˆ์งธ ๋ฐฐํฌ Alias: {first.get('alias', [])}\n")
69
+
70
+ # ํŒจํ„ด ์™„ํ™”: vercel.app์œผ๋กœ ๋๋‚˜๋Š” ๋ชจ๋“  URL ํ—ˆ์šฉ
71
+ domain_pat = re.compile(r"\.vercel\.app$", re.I)
72
+
73
  games = []
74
  for d in data.get("deployments", []):
75
  if d.get("state") != "READY":
76
  continue
77
 
78
+ # URL์ด๋‚˜ alias ์ค‘ ํ•˜๋‚˜๋ผ๋„ vercel.app์œผ๋กœ ๋๋‚˜๋ฉด ํฌํ•จ
79
+ url = d.get("url", "")
80
+ aliases = d.get("alias", [])
81
+
82
+ matched_url = None
83
+ if url and domain_pat.search(url):
84
+ matched_url = url
85
+ else:
86
+ for alias in aliases:
87
+ if domain_pat.search(alias):
88
+ matched_url = alias
89
+ break
90
+
91
+ if matched_url:
92
+ games.append({
93
+ "title": d.get("name", "(์ œ๋ชฉ ์—†์Œ)"),
94
+ "url": f"https://{matched_url}",
95
+ "ts": int(d.get("created", time.time() * 1000) / 1000)
96
+ })
97
+
98
+ print(f"vercel.app ๋„๋ฉ”์ธ ๋ฐฐํฌ {len(games)}๊ฐœ๋ฅผ ํ•„ํ„ฐ๋งํ–ˆ์Šต๋‹ˆ๋‹ค")
99
  return sorted(games, key=lambda x: x["ts"], reverse=True)
100
 
101
  except Exception as e: