Tesaan commited on
Commit
5bfb5de
ยท
verified ยท
1 Parent(s): 9ed321e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -37
app.py CHANGED
@@ -1,51 +1,33 @@
1
  from googleapiclient.discovery import build
2
  import gradio as gr
3
 
 
4
  API_KEY = 'AIzaSyDUz3wkGal0ewRtPlzeMit88bV4hS4ZIVY'
5
  CSE_ID = '56b34994f47704ddd'
6
 
7
- def search_google(query, search_type='image'):
 
8
  service = build("customsearch", "v1", developerKey=API_KEY)
9
- res = service.cse().list(q=query, cx=CSE_ID, searchType=search_type, num=10).execute()
10
-
11
- results = []
12
- if 'items' in res:
13
- for item in res['items']:
14
- if search_type == 'image':
15
- results.append({
16
- 'title': item['title'],
17
- 'link': item['link'],
18
- 'thumbnail': item.get('image', {}).get('thumbnailLink', 'No thumbnail available')
19
- })
20
- elif search_type == 'video':
21
- # ๋น„๋””์˜ค ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ฒ˜๋ฆฌ (๋น„๋””์˜ค ์ธ๋„ค์ผ์ด๋‚˜ ๋งํฌ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Œ)
22
- results.append({
23
- 'title': item['title'],
24
- 'link': item['link']
25
- })
26
- return results
27
 
28
- def format_output(results, search_type='image'):
29
- output = []
30
- for result in results:
31
- if search_type == 'image':
32
- output.append(f"**{result['title']}**\nURL: [{result['link']}]({result['link']})\n![Thumbnail]({result['thumbnail']})")
33
- elif search_type == 'video':
34
- # ๋น„๋””์˜ค ๊ฒฐ๊ณผ ํฌ๋งทํŒ…
35
- output.append(f"**{result['title']}**\nURL: [{result['link']}]({result['link']})")
36
- return "\n\n".join(output)
37
 
38
- def search_and_format(query, search_type='image'):
39
- return format_output(search_google(query, search_type), search_type)
 
 
 
40
 
41
- # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜
42
  iface = gr.Interface(
43
- fn=search_and_format,
44
- inputs=[gr.Textbox(placeholder="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”..."), gr.Radio(choices=["image", "video"], label="๊ฒ€์ƒ‰ ์œ ํ˜•")],
45
- outputs=gr.Markdown(),
46
- examples=[["Python", "image"], ["Gradio", "video"]],
47
- title="Google ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋ฐ ์ธ๋„ค์ผ ๋ณด๊ธฐ",
48
- description="์ž…๋ ฅํ•œ ํ‚ค์›Œ๋“œ์— ๋Œ€ํ•œ ๊ตฌ๊ธ€ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ์›น ๋งํฌ์™€ ์ธ๋„ค์ผ(์ด๋ฏธ์ง€) ๋˜๋Š” ๋น„๋””์˜ค ๋งํฌ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค."
49
  )
50
 
51
  if __name__ == "__main__":
 
1
  from googleapiclient.discovery import build
2
  import gradio as gr
3
 
4
+ # API ํ‚ค์™€ ๊ฒ€์ƒ‰ ์—”์ง„ ID ์„ค์ •
5
  API_KEY = 'AIzaSyDUz3wkGal0ewRtPlzeMit88bV4hS4ZIVY'
6
  CSE_ID = '56b34994f47704ddd'
7
 
8
+ def multi_search(query):
9
+ # Google Custom Search JSON API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ๊ฒ€์ƒ‰
10
  service = build("customsearch", "v1", developerKey=API_KEY)
11
+ web_search_result = service.cse().list(q=query, cx=CSE_ID).execute()
12
+ web_results = [item['link'] for item in web_search_result.get('items', [])]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ # YouTube Data API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋””์˜ค ๊ฒ€์ƒ‰
15
+ youtube = build('youtube', 'v3', developerKey=API_KEY)
16
+ video_search_result = youtube.search().list(q=query, part='snippet', type='video', maxResults=5).execute()
17
+ video_results = [f"https://www.youtube.com/watch?v={item['id']['videoId']}" for item in video_search_result.get('items', [])]
 
 
 
 
 
18
 
19
+ # ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ํŠœํ”Œ์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜
20
+ web_results_tuples = [(url,) for url in web_results]
21
+ video_results_tuples = [(url,) for url in video_results]
22
+
23
+ return web_results_tuples, video_results_tuples
24
 
 
25
  iface = gr.Interface(
26
+ fn=multi_search,
27
+ inputs=gr.Textbox(lines=2, placeholder="๊ฒ€์ƒ‰ํ•  ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”..."),
28
+ outputs=[gr.List(label="์›น ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ"), gr.List(label="YouTube ๋น„๋””์˜ค ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ")],
29
+ title="๋ฉ€ํ‹ฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ถœ๋ ฅ",
30
+ description="์ž…๋ ฅ ํ…์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›น ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์™€ YouTube ๋น„๋””์˜ค ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค."
 
31
  )
32
 
33
  if __name__ == "__main__":