ginipick commited on
Commit
f1821c8
ยท
verified ยท
1 Parent(s): 10c3f69

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -11
app.py CHANGED
@@ -25,34 +25,47 @@ def _load_best():
25
  return []
26
 
27
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 3. NEW: 6๊ธ€์ž vercel.app ๋ฐฐํฌ โ”€โ”€โ”€โ”€โ”€
 
28
  PAT = re.compile(r"^[a-z0-9]{6}\.vercel\.app$", re.I)
29
 
30
  def fetch_all(limit=200):
31
- """v6/deployments โ†’ READY ์ƒํƒœ ์ค‘ url์ด 6๊ธ€์ž vercel.app ์ธ ๊ฒƒ๋งŒ"""
32
  try:
33
  params = {"limit": limit}
34
- if TEAM: params["teamId"] = TEAM
35
- r = requests.get(f"{API}/v6/deployments", headers=HEAD, params=params, timeout=30)
 
 
 
36
  r.raise_for_status()
37
 
38
- out=[]
39
  for d in r.json().get("deployments", []):
40
  if d.get("state") != "READY":
41
  continue
42
- host = d.get("url", "")
43
- if not PAT.match(host):
44
- continue # 6๊ธ€์ž vercel.app ๊ทœ์น™ ๋ถˆ์ผ์น˜ โ†’ ์ œ์™ธ
45
- url_full = f"https://{host}"
46
- out.append({
 
 
 
 
 
 
47
  "title": d.get("name", "(์ œ๋ชฉ ์—†์Œ)"),
48
- "url" : url_full,
49
  "ts" : int(d.get("created", time.time()*1000) / 1000)
50
  })
51
- return sorted(out, key=lambda x: x["ts"], reverse=True)
 
 
52
  except Exception as e:
53
  print("Vercel API ์˜ค๋ฅ˜:", e)
54
  return []
55
 
 
56
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 4. ํŽ˜์ด์ง€๋„ค์ด์…˜ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
57
  def page(lst, pg):
58
  s=(pg-1)*PER_PAGE; e=s+PER_PAGE
 
25
  return []
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
+ """READY ๋ฐฐํฌ ์ค‘ alias ์ค‘์— 6๊ธ€์ž.vercel.app ์ด ์žˆ๋Š” ๊ฒƒ๋งŒ ์ˆ˜์ง‘"""
33
  try:
34
  params = {"limit": limit}
35
+ if TEAM:
36
+ params["teamId"] = TEAM
37
+
38
+ r = requests.get(f"{API}/v6/deployments",
39
+ headers=HEAD, params=params, timeout=30)
40
  r.raise_for_status()
41
 
42
+ games = []
43
  for d in r.json().get("deployments", []):
44
  if d.get("state") != "READY":
45
  continue
46
+
47
+ # โ”€โ”€ alias ๋ฐฐ์—ด์—์„œ ๊ทœ์น™์— ๋งž๋Š” ๋„๋ฉ”์ธ ์ฐพ๊ธฐ
48
+ six_domain = None
49
+ for dom in d.get("alias", []):
50
+ if PAT.match(dom):
51
+ six_domain = dom
52
+ break
53
+ if six_domain is None:
54
+ continue # 6๊ธ€์ž ๋„๋ฉ”์ธ ์—†์œผ๋ฉด ๊ฑด๋„ˆ๋œ€
55
+
56
+ games.append({
57
  "title": d.get("name", "(์ œ๋ชฉ ์—†์Œ)"),
58
+ "url" : f"https://{six_domain}",
59
  "ts" : int(d.get("created", time.time()*1000) / 1000)
60
  })
61
+
62
+ return sorted(games, key=lambda x: x["ts"], reverse=True)
63
+
64
  except Exception as e:
65
  print("Vercel API ์˜ค๋ฅ˜:", e)
66
  return []
67
 
68
+
69
  # โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ 4. ํŽ˜์ด์ง€๋„ค์ด์…˜ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
70
  def page(lst, pg):
71
  s=(pg-1)*PER_PAGE; e=s+PER_PAGE