import streamlit as st import requests # Pexels API 키 설정 PEXELS_API_KEY = "5woz23MGx1QrSY0WHFb0BRi29JvbXPu97Hg0xnklYgHUI8G0w23FKH62" def search_image(keyword): """이미지 검색 함수""" url = f"https://api.pexels.com/v1/search?query={keyword}+query&per_page=1" headers = {"Authorization": PEXELS_API_KEY} response = requests.get(url, headers=headers).json() if response["photos"]: # 고해상도 이미지 URL 반환 return response["photos"][0]["src"]["original"] return "" def search_video(keyword): """비디오 검색 함수""" url = f"https://api.pexels.com/videos/search?query={keyword}+query&per_page=1" headers = {"Authorization": PEXELS_API_KEY} response = requests.get(url, headers=headers).json() if response["videos"]: # 고해상도 비디오 URL 반환 return response["videos"][0]["video_files"][0]["link"] return "" # 'Search Image' 메뉴 선택 시 처리 로직 if selected_menu == "Free Stock" and st.session_state['current_sub_menu'] == "Search Image": keyword = st.text_input("Enter a keyword to search for images") if keyword: image_url = search_image(keyword) if image_url: st.image(image_url) else: st.write("No results found.") # 'Search Video' 메뉴 선택 시 처리 로직 if selected_menu == "Free Stock" and st.session_state['current_sub_menu'] == "Search Video": keyword = st.text_input("Enter a keyword to search for videos") if keyword: video_url = search_video(keyword) if video_url: st.video(video_url) else: st.write("No results found.") # 페이지 설정 st.set_page_config(page_title="ViDraft", layout="wide") # 사이드바 타이틀 설정 st.sidebar.title("ViDraft") # 메뉴 및 하위 메뉴 정의 menus = { "Home": [], "Free Stock": ["Template Video", "Template Image", "Search Video", "Search Image"], "Image": ["Generation", "Face ID", "Inpainting", "Remove Background", "Studio"], "Video": ["Generation", "Talking Face", "Remove Background", "Studio"], "Sound": ["Video SFX", "Video Music", "TTS(Voice)", "Image SFX", "Image Music"], "Scripts": [] } # 세션 상태 초기화 if 'current_menu' not in st.session_state: st.session_state['current_menu'] = 'Home' if 'current_sub_menu' not in st.session_state: st.session_state['current_sub_menu'] = '' # 메인 메뉴 선택 selected_menu = st.sidebar.selectbox("Menu", list(menus.keys())) st.session_state['current_menu'] = selected_menu # 하위 메뉴 선택 (해당되는 경우) if selected_menu in menus: selected_sub_menu = st.sidebar.selectbox("Sub Menu", [""] + menus[selected_menu]) st.session_state['current_sub_menu'] = selected_sub_menu else: st.session_state['current_sub_menu'] = '' # 'Home' 페이지 표시 if selected_menu == "Home": st.header("Welcome to ViDraft") st.write("Choose an option from the sidebar to get started.") elif selected_menu == "Free Stock": # 'Free Stock' 메뉴 선택 시 처리 로직 if st.session_state['current_sub_menu'] == "Template Video": st.header("Template Videos") st.write("Explore a variety of video templates.") # 비디오 파일 경로 설정 및 비디오 표시 로직 video_files = ["ex1.mp4", "ex2.mp4", "ex3.mp4", "ex4.mp4", "ex5.mp4", "ex6.mp4", "ex7.mp4", "ex8.mp4", "ex9.mp4", "ex10.mp4", "ex11.mp4", "ex12.mp4", "ex13.mp4", "ex14.mp4", "ex15.mp4", "ex16.mp4", "ex17.mp4", "ex18.mp4"] # 갤러리 형태로 비디오 표시 cols = st.columns(2) # 2개의 열로 넓게 배치 for index, video_file in enumerate(video_files): with cols[index % 2]: st.video(video_file) elif st.session_state['current_sub_menu'] == "Template Image": st.header("Template Images") st.write("Find the perfect image template for your project.") elif st.session_state['current_sub_menu'] == "Search Video": st.header("Search Videos") st.write("Search through our extensive video library to find exactly what you need.") elif st.session_state['current_sub_menu'] == "Search Image": st.header("Search Images") st.write("Discover images that fit your project's needs with our powerful search tool.") # 이하 코드는 위와 동일한 패턴으로 'Image', 'Video', 'Sound', 'Scripts' 메뉴를 처리합니다. elif st.session_state['current_sub_menu'] == "Search Image": st.header("Search Images") st.write("Discover images that fit your project's needs with our powerful search tool.") # 'Image' 메뉴 선택 시 처리 로직 elif selected_menu == "Image": if st.session_state['current_sub_menu'] == "Generation": st.header("Image Generation") st.write("Generate images using AI.") elif st.session_state['current_sub_menu'] == "Face ID": st.header("Face ID") st.write("Identify and analyze faces in images.") elif st.session_state['current_sub_menu'] == "Inpainting": st.header("Inpainting") st.write("Fill in missing parts of images.") elif st.session_state['current_sub_menu'] == "Remove Background": st.header("Remove Background") st.write("Easily remove backgrounds from images.") elif st.session_state['current_sub_menu'] == "Studio": st.header("Image Studio") st.write("Access a suite of image editing tools.") # 'Video' 메뉴 선택 시 처리 로직 elif selected_menu == "Video": if st.session_state['current_sub_menu'] == "Generation": st.header("Video Generation") st.write("Create videos with our generation tools.") elif st.session_state['current_sub_menu'] == "Talking Face": st.header("Talking Face Videos") st.write("Generate talking face videos from images.") elif st.session_state['current_sub_menu'] == "Remove Background": st.header("Video Background Removal") st.write("Remove backgrounds from your videos effortlessly.") elif st.session_state['current_sub_menu'] == "Studio": st.header("Video Studio") st.write("Explore our video editing studio for advanced editing.") # 'Sound' 메뉴 선택 시 처리 로직 elif selected_menu == "Sound": if st.session_state['current_sub_menu'] == "Video SFX": st.header("Video Sound Effects") st.write("Enhance your videos with sound effects.") elif st.session_state['current_sub_menu'] == "Video Music": st.header("Video Music") st.write("Find the perfect music for your video content.") elif st.session_state['current_sub_menu'] == "TTS(Voice)": st.header("Text-to-Speech") st.write("Convert your text into natural-sounding voice.") elif st.session_state['current_sub_menu'] == "Image SFX": st.header("Image Sound Effects") st.write("Add sound effects to your images.") elif st.session_state['current_sub_menu'] == "Image Music": st.header("Image Music") st.write("Associate music tracks with your images.") # 'Scripts' 메뉴 선택 시 처리 로직 elif selected_menu == "Scripts": st.header("Scripts") st.write("Script writing tools and resources.")