Spaces:
Sleeping
Sleeping
import requests | |
import gradio as gr | |
import os | |
import imageio | |
import numpy as np | |
from PIL import Image | |
import requests | |
from io import BytesIO | |
import tempfile | |
# Pexels API ํค๋ฅผ ์ฌ๊ธฐ์ ์ ๋ ฅํ์ธ์ | |
API_KEY = os.getenv('API_KEY') | |
API_URL = 'https://api.pexels.com/v1/search' | |
def search_images(keyword): | |
headers = {'Authorization': API_KEY} | |
params = {'query': keyword, 'per_page': 5} # per_page ๊ฐ์ 5๋ก ์ค์ | |
response = requests.get(API_URL, headers=headers, params=params) | |
if response.status_code == 200 and response.json()['photos']: | |
photos = response.json()['photos'] | |
images = [] | |
for photo in photos: | |
image_url = photo['src']['original'] | |
response = requests.get(image_url) | |
img = Image.open(BytesIO(response.content)) | |
images.append(img) | |
# ์ด๋ฏธ์ง๋ฅผ ์์์ผ๋ก ํฉ์น๊ธฐ | |
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as tmpfile: | |
with imageio.get_writer(tmpfile.name, fps=0.5) as video: # 2์ด ๊ฐ๊ฒฉ | |
for img in images: | |
video.append_data(np.array(img)) | |
return tmpfile.name # ์์ ํ์ผ์ ๊ฒฝ๋ก ๋ฐํ | |
else: | |
return "๊ฒ์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค." | |
interface = gr.Interface( | |
fn=search_images, | |
inputs=gr.Textbox(lines=2, placeholder="๊ฒ์ํ ์ด๋ฏธ์ง ํค์๋๋ฅผ ์ ๋ ฅํ์ธ์"), | |
outputs=gr.Video(label="๊ฒ์ ๊ฒฐ๊ณผ"), | |
title="Pexels ์ด๋ฏธ์ง ๊ฒ์๊ธฐ", | |
description="Pexels์์ ํค์๋์ ๋ง๋ ์ด๋ฏธ์ง๋ฅผ ๊ฒ์ํ๊ณ , ํด๋น ์ด๋ฏธ์ง๋ฅผ ์์์ผ๋ก ๋ณํํฉ๋๋ค." | |
) | |
if __name__ == "__main__": | |
interface.launch() |