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()