seawolf2357 commited on
Commit
360fad9
Β·
verified Β·
1 Parent(s): 6c46430

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +13 -37
app.py CHANGED
@@ -21,7 +21,7 @@ hf_client = InferenceClient("CohereForAI/c4ai-command-r-plus", token=os.getenv("
21
 
22
  # Pexels API ν‚€ μ„€μ •
23
  PEXELS_API_KEY = "5woz23MGx1QrSY0WHFb0BRi29JvbXPu97Hg0xnklYgHUI8G0w23FKH62"
24
- PEXELS_API_VIDEO_URL = "https://api.pexels.com/videos/search"
25
 
26
  # νŠΉμ • 채널 ID
27
  SPECIFIC_CHANNEL_ID = int(os.getenv("DISCORD_CHANNEL_ID"))
@@ -42,7 +42,7 @@ class MyClient(discord.Client):
42
  # 봇이 μ‹œμž‘λ  λ•Œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 전솑
43
  channel = self.get_channel(SPECIFIC_CHANNEL_ID)
44
  if channel:
45
- await channel.send("찾고싢은 λ™μ˜μƒμ— λŒ€ν•œ μ„€λͺ…을 ν•œ λ¬Έμž₯ λ‹¨μœ„λ‘œ μž…λ ₯ν•˜μ„Έμš”. 예) λˆˆλ°­μ—μ„œ λ›°μ–΄ λ…ΈλŠ” κ°•μ•„μ§€")
46
 
47
  async def on_message(self, message):
48
  if message.author == self.user:
@@ -56,13 +56,13 @@ class MyClient(discord.Client):
56
  # 의미 λΆ„μ„ν•˜μ—¬ 영문 ν‚€μ›Œλ“œ μΆ”μΆœ
57
  keywords = await extract_keywords(message)
58
  if keywords:
59
- # Pexels API둜 고해상도 λ™μ˜μƒ 검색
60
  video_urls = await search_videos(keywords)
61
  if video_urls:
62
- # μš”μ²­μžμ™€μ˜ μ“°λ ˆλ“œ 생성 λ˜λŠ” κΈ°μ‘΄ μ“°λ ˆλ“œ μ‚¬μš©
63
- await create_or_use_thread_and_send_videos(message, keywords, video_urls)
64
  else:
65
- await message.channel.send(f"**{keywords}**에 λŒ€ν•œ 고해상도 λ™μ˜μƒμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.")
66
  else:
67
  await message.channel.send("ν‚€μ›Œλ“œλ₯Ό μΆ”μΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€.")
68
  finally:
@@ -101,46 +101,22 @@ async def search_videos(keywords):
101
  }
102
  params = {
103
  "query": keywords,
104
- "per_page": 20 # μ΅œλŒ€ 20개 λ™μ˜μƒμ„ κ°€μ Έμ˜΅λ‹ˆλ‹€
105
  }
106
- response = requests.get(PEXELS_API_VIDEO_URL, headers=headers, params=params)
107
  if response.status_code == 200:
108
  data = response.json()
109
- video_urls = []
110
- for video in data['videos']:
111
- highest_quality_video = max(video['video_files'], key=lambda x: x['width'] * x['height'])
112
- video_urls.append(highest_quality_video['link'])
113
- return video_urls
114
  return None
115
 
116
- async def create_or_use_thread_and_send_videos(message, keywords, video_urls):
117
- # λ©”μ‹œμ§€μ— λŒ€ν•΄ 이미 μƒμ„±λœ μ“°λ ˆλ“œλ₯Ό 찾음
118
- thread = await find_existing_thread(message)
119
-
120
- if not thread:
121
- # μƒˆ μ“°λ ˆλ“œ 생성
122
- thread = await message.channel.create_thread(name=f"{message.author.name}의 검색 κ²°κ³Ό", message=message)
123
-
124
- message_content = f"**{keywords}**에 λŒ€ν•œ 고해상도 λ™μ˜μƒ {len(video_urls)}개λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€:"
125
  await thread.send(message_content)
126
  for url in video_urls:
127
  await thread.send(url)
128
 
129
- async def find_existing_thread(message):
130
- # μ±„λ„μ˜ λͺ¨λ“  ν™œμ„± μ“°λ ˆλ“œ κ°€μ Έμ˜€κΈ°
131
- active_threads = await message.channel.active_threads()
132
- for thread in active_threads:
133
- if thread.starter_message_id == message.id:
134
- return thread
135
-
136
- # μ±„λ„μ˜ λͺ¨λ“  λ³΄κ΄€λœ μ“°λ ˆλ“œ κ°€μ Έμ˜€κΈ°
137
- archived_threads = await message.channel.archived_threads().flatten()
138
- for thread in archived_threads:
139
- if thread.starter_message_id == message.id:
140
- return thread
141
-
142
- return None
143
-
144
  if __name__ == "__main__":
145
  discord_client = MyClient(intents=intents)
146
  discord_client.run(os.getenv('DISCORD_TOKEN'))
 
21
 
22
  # Pexels API ν‚€ μ„€μ •
23
  PEXELS_API_KEY = "5woz23MGx1QrSY0WHFb0BRi29JvbXPu97Hg0xnklYgHUI8G0w23FKH62"
24
+ PEXELS_VIDEO_API_URL = "https://api.pexels.com/videos/search"
25
 
26
  # νŠΉμ • 채널 ID
27
  SPECIFIC_CHANNEL_ID = int(os.getenv("DISCORD_CHANNEL_ID"))
 
42
  # 봇이 μ‹œμž‘λ  λ•Œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 전솑
43
  channel = self.get_channel(SPECIFIC_CHANNEL_ID)
44
  if channel:
45
+ await channel.send("찾고싢은 λΉ„λ””μ˜€μ— λŒ€ν•œ μ„€λͺ…을 ν•œ λ¬Έμž₯ λ‹¨μœ„λ‘œ μž…λ ₯ν•˜μ„Έμš”. 예) λ°”λ‹€μ—μ„œ μ„œν•‘ν•˜λŠ” μ‚¬λžŒ")
46
 
47
  async def on_message(self, message):
48
  if message.author == self.user:
 
56
  # 의미 λΆ„μ„ν•˜μ—¬ 영문 ν‚€μ›Œλ“œ μΆ”μΆœ
57
  keywords = await extract_keywords(message)
58
  if keywords:
59
+ # Pexels API둜 고해상도 λΉ„λ””μ˜€ 검색
60
  video_urls = await search_videos(keywords)
61
  if video_urls:
62
+ # μš”μ²­μžμ™€μ˜ μ“°λ ˆλ“œ 생성 및 고해상도 λΉ„λ””μ˜€ 전솑
63
+ await create_thread_and_send_videos(message, keywords, video_urls)
64
  else:
65
+ await message.channel.send(f"**{keywords}**에 λŒ€ν•œ 고해상도 λΉ„λ””μ˜€λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆλ‹€.")
66
  else:
67
  await message.channel.send("ν‚€μ›Œλ“œλ₯Ό μΆ”μΆœν•  수 μ—†μŠ΅λ‹ˆλ‹€.")
68
  finally:
 
101
  }
102
  params = {
103
  "query": keywords,
104
+ "per_page": 10 # μ΅œλŒ€ 10개 λΉ„λ””μ˜€λ₯Ό κ°€μ Έμ˜΅λ‹ˆλ‹€
105
  }
106
+ response = requests.get(PEXELS_VIDEO_API_URL, headers=headers, params=params)
107
  if response.status_code == 200:
108
  data = response.json()
109
+ return [video['video_files'][0]['link'] for video in data['videos']]
 
 
 
 
110
  return None
111
 
112
+ async def create_thread_and_send_videos(message, keywords, video_urls):
113
+ # μ“°λ ˆλ“œ 생성
114
+ thread = await message.channel.create_thread(name=f"{message.author.name}의 검색 κ²°κ³Ό", message=message)
115
+ message_content = f"**{keywords}**에 λŒ€ν•œ 고해상도 λΉ„λ””μ˜€ {len(video_urls)}개λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€:"
 
 
 
 
 
116
  await thread.send(message_content)
117
  for url in video_urls:
118
  await thread.send(url)
119
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  if __name__ == "__main__":
121
  discord_client = MyClient(intents=intents)
122
  discord_client.run(os.getenv('DISCORD_TOKEN'))