Tesaan commited on
Commit
c28f883
โ€ข
1 Parent(s): e3e224b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -45
app.py CHANGED
@@ -1,57 +1,33 @@
1
- import requests
2
  import gradio as gr
3
  import imageio
4
- import os
5
- from PIL import Image
6
  import numpy as np
7
- import time
8
-
9
- # ํ™˜๊ฒฝ ๋ณ€์ˆ˜์—์„œ API ํ‚ค๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— 'API_KEY' ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
10
- API_KEY = os.environ.get("18BkVTfHD8DRxtR7uoO5RMu6O2P5PywUMoHTK4eRMz7MAEBQlOI5qRTC")
11
- API_URL = 'https://api.pexels.com/v1'
12
-
13
- def download_images(keyword):
14
- headers = {'Authorization': API_KEY}
15
- params = {'query': keyword, 'per_page': 5} # 5์žฅ์˜ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
16
- response = requests.get(f"{API_URL}/search", headers=headers, params=params)
17
- images = []
18
-
19
- if response.status_code == 200:
20
- photos = response.json()['photos']
21
- for photo in photos:
22
- image_url = photo['src']['original']
23
- img_data = requests.get(image_url).content
24
- image_path = f"temp_{photos.index(photo)}.jpg"
25
- with open(image_path, 'wb') as handler:
26
- handler.write(img_data)
27
- images.append(image_path)
28
-
29
- return images
30
 
31
- def create_video(images):
32
- video_path = "output.mp4"
33
- with imageio.get_writer(video_path, fps=0.5) as writer: # 2์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ ์„ค์ •
34
- for image_path in images:
35
- image = Image.open(image_path)
36
- image = image.resize((640, 480)) # ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋™์ผํ•œ ํฌ๊ธฐ๋กœ ์กฐ์ •
37
- writer.append_data(np.array(image))
38
- os.remove(image_path) # ์ด๋ฏธ์ง€ ํŒŒ์ผ ์‚ญ์ œ
 
39
  return video_path
40
 
41
- def search_and_create_video(keyword):
42
- images = download_images(keyword)
43
- if images:
44
- video_path = create_video(images)
45
- return video_path
46
- else:
47
- return "๊ฒ€์ƒ‰๋œ ์ด๋ฏธ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค."
48
 
 
49
  demo = gr.Interface(
50
- fn=search_and_create_video,
51
- inputs=gr.Textbox(lines=2, placeholder="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”"),
52
  outputs=gr.Video(label="๊ฒฐ๊ณผ ์˜์ƒ"),
53
- title="์ด๋ฏธ์ง€๋ฅผ ์˜์ƒ์œผ๋กœ ๋ณ€ํ™˜",
54
- description="์ž…๋ ฅ๋œ ํ‚ค์›Œ๋“œ์— ๋งž๋Š” ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ, ์ด๋ฅผ ์ˆœ์ฐจ์ ์ธ ์˜์ƒ์œผ๋กœ ํ•ฉ์นฉ๋‹ˆ๋‹ค."
55
  )
56
 
57
  if __name__ == "__main__":
 
 
1
  import gradio as gr
2
  import imageio
 
 
3
  import numpy as np
4
+ from PIL import Image
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
+ # ์ด๋ฏธ์ง€๋ฅผ ์˜์ƒ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
7
+ def create_video(image_paths, video_length=1800, fps=1):
8
+ video_path = "output_video.mp4"
9
+ with imageio.get_writer(video_path, fps=fps) as writer:
10
+ for _ in range(video_length):
11
+ for image_path in image_paths:
12
+ image = Image.open(image_path)
13
+ image = image.resize((640, 480)) # ๋ชจ๋“  ์ด๋ฏธ์ง€๋ฅผ ๋™์ผํ•œ ํฌ๊ธฐ๋กœ ์กฐ์ •
14
+ writer.append_data(np.array(image))
15
  return video_path
16
 
17
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ํ•จ์ˆ˜
18
+ def generate_video(keyword):
19
+ # ์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฏธ์ง€ ์ˆ˜์ง‘ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ , ๊ฐ€์ƒ์˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
20
+ image_paths = ["image1.jpg", "image2.jpg", "image3.jpg"] # ๊ฐ€์ƒ์˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ
21
+ video_path = create_video(image_paths)
22
+ return video_path
 
23
 
24
+ # Gradio ์ธํ„ฐํŽ˜์ด์Šค ์„ค์ •
25
  demo = gr.Interface(
26
+ fn=generate_video,
27
+ inputs=gr.Textbox(lines=2, placeholder="๊ฒ€์ƒ‰ํ•  ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”"),
28
  outputs=gr.Video(label="๊ฒฐ๊ณผ ์˜์ƒ"),
29
+ title="ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์˜์ƒ ์ƒ์„ฑ",
30
+ description="์ž…๋ ฅ๋œ ํ‚ค์›Œ๋“œ์— ๋งž๋Š” ์˜์ƒ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค."
31
  )
32
 
33
  if __name__ == "__main__":