Spaces:
Sleeping
Sleeping
# import streamlit as st | |
# import os | |
# import time | |
# import google.generativeai as genai | |
# secret_key = os.getenv("SECRET_KEY") | |
# genai.configure(api_key=secret_key) | |
# def upload_to_gemini(path, mime_type=None): | |
# file = genai.upload_file(path, mime_type=mime_type) | |
# print(f"Uploaded file '{file.display_name}' as: {file.uri}") | |
# return file | |
# def wait_for_files_active(files): | |
# for name in (file.name for file in files): | |
# file = genai.get_file(name) | |
# while file.state.name == "PROCESSING": | |
# time.sleep(10) | |
# file = genai.get_file(name) | |
# if file.state.name != "ACTIVE": | |
# raise Exception(f"File {file.name} failed to process") | |
# model = genai.GenerativeModel( | |
# model_name="gemini-1.5-pro" | |
# ) | |
# # files = [ | |
# # upload_to_gemini("American Museum of Natural History Tour - 5 Min", mime_type="video/mp4"), | |
# # ] | |
# uploaded_file = st.file_uploader("Upload a video file", type=["mp4", "avi", "mov"]) | |
# if uploaded_file: | |
# files = [ | |
# upload_to_gemini(uploaded_file, mime_type="video/mp4"), | |
# ] | |
# wait_for_files_active(files) | |
# chat_session = model.start_chat() | |
# input=st.text_input("Input Prompt: ",key="input") | |
# response = chat_session.send_message(input) | |
# st.write(response.text) | |
# import streamlit as st | |
# import os | |
# import time | |
# import tempfile | |
# import google.generativeai as genai | |
# secret_key = os.getenv("SECRET_KEY") | |
# genai.configure(api_key=secret_key) | |
# def upload_to_gemini(path, mime_type=None): | |
# file = genai.upload_file(path, mime_type=mime_type) | |
# print(f"Uploaded file '{file.display_name}' as: {file.uri}") | |
# return file | |
# def wait_for_files_active(files): | |
# for name in (file.name for file in files): | |
# file = genai.get_file(name) | |
# while file.state.name == "PROCESSING": | |
# time.sleep(10) | |
# file = genai.get_file(name) | |
# if file.state.name != "ACTIVE": | |
# raise Exception(f"File {file.name} failed to process") | |
# model = genai.GenerativeModel( | |
# model_name="gemini-1.5-pro" | |
# ) | |
# uploaded_file = st.file_uploader("Upload a video file", type=["mp4", "avi", "mov"]) | |
# if uploaded_file: | |
# with tempfile.NamedTemporaryFile(delete=False) as temp_file: | |
# temp_file.write(uploaded_file.read()) | |
# temp_file_path = temp_file.name | |
# try: | |
# files = [ | |
# upload_to_gemini(temp_file_path, mime_type="video/mp4"), | |
# ] | |
# wait_for_files_active(files) | |
# chat_session = model.start_chat() | |
# input = st.text_input("Input Prompt: ", key="input") | |
# if input: | |
# response = chat_session.send_message(input) | |
# st.write(response.text) | |
# finally: | |
# os.remove(temp_file_path) # Ensure the temporary file is deleted | |
# import streamlit as st | |
# import os | |
# import time | |
# import tempfile | |
# import google.generativeai as genai | |
# secret_key = os.getenv("SECRET_KEY") | |
# genai.configure(api_key=secret_key) | |
# def upload_to_gemini(path, mime_type=None): | |
# file = genai.upload_file(path, mime_type=mime_type) | |
# print(f"Uploaded file '{file.display_name}' as: {file.uri}") | |
# return file | |
# def wait_for_files_active(files): | |
# for name in (file.name for file in files): | |
# file = genai.get_file(name) | |
# while file.state.name == "PROCESSING": | |
# time.sleep(10) | |
# file = genai.get_file(name) | |
# if file.state.name != "ACTIVE": | |
# raise Exception(f"File {file.name} failed to process") | |
# model = genai.GenerativeModel( | |
# model_name="gemini-1.5-pro" | |
# ) | |
# uploaded_file = st.file_uploader("Upload a video file", type=["mp4", "avi", "mov"]) | |
# if uploaded_file: | |
# with tempfile.NamedTemporaryFile(delete=False) as temp_file: | |
# temp_file.write(uploaded_file.read()) | |
# temp_file_path = temp_file.name | |
# try: | |
# file = upload_to_gemini(temp_file_path, mime_type="video/mp4") | |
# wait_for_files_active([file]) | |
# chat_session = model.start_chat() | |
# input = st.text_input("Input Prompt: ", key="input") | |
# if input: | |
# response = chat_session.send_message(input) | |
# st.write(response.text) | |
# st.write(f"Uploaded video file: [View Video]({file.uri})") | |
# finally: | |
# os.remove(temp_file_path) # Ensure the temporary file is deleted | |
# streamlit_app.py | |
import os | |
import time | |
import streamlit as st | |
import google.generativeai as genai | |
# Configure the API key for Google Generative AI | |
secret_key = os.getenv("SECRET_KEY") | |
genai.configure(api_key=secret_key) | |
def upload_to_gemini(path, mime_type=None): | |
"""Uploads the given file to Gemini.""" | |
file = genai.upload_file(path, mime_type=mime_type) | |
st.write(f"Uploaded file '{file.display_name}' as: {file.uri}") | |
return file | |
def wait_for_files_active(files): | |
"""Waits for the given files to be active.""" | |
st.write("Waiting for file processing...") | |
for name in (file.name for file in files): | |
file = genai.get_file(name) | |
while file.state.name == "PROCESSING": | |
st.write(".", end="", flush=True) | |
time.sleep(10) | |
file = genai.get_file(name) | |
if file.state.name != "ACTIVE": | |
raise Exception(f"File {file.name} failed to process") | |
st.write("...all files ready") | |
st.write() | |
# Define the Streamlit interface | |
st.title("Video Upload for Generative AI Processing") | |
uploaded_file = st.file_uploader("Upload a video file", type=["mp4"]) | |
if uploaded_file is not None: | |
# Save the uploaded file locally | |
video_path = os.path.join("", uploaded_file.name) | |
with open(video_path, "wb") as f: | |
f.write(uploaded_file.getbuffer()) | |
st.success(f"Saved file: {uploaded_file.name}") | |
# Upload the video to Gemini | |
files = [ | |
upload_to_gemini(video_path, mime_type="video/mp4"), | |
] | |
# Wait for the file to become active | |
wait_for_files_active(files) | |
# Create the generative model | |
generation_config = { | |
"temperature": 1, | |
"top_p": 0.95, | |
"top_k": 64, | |
"max_output_tokens": 8192, | |
"response_mime_type": "text/plain", | |
} | |
safety_settings = [ | |
{ | |
"category": "HARM_CATEGORY_HARASSMENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_HATE_SPEECH", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
{ | |
"category": "HARM_CATEGORY_DANGEROUS_CONTENT", | |
"threshold": "BLOCK_MEDIUM_AND_ABOVE", | |
}, | |
] | |
model = genai.GenerativeModel( | |
model_name="gemini-1.5-pro", | |
safety_settings=safety_settings, | |
generation_config=generation_config, | |
) | |
# Start a chat session | |
chat_session = model.start_chat( | |
history=[ | |
{ | |
"role": "user", | |
"parts": ["summarise video"], | |
}, | |
{ | |
"role": "user", | |
"parts": [files[0].uri], | |
}, | |
] | |
) | |
# Send a message to the chat session | |
response = chat_session.send_message("INSERT_INPUT_HERE") | |
# Display the response | |
st.write("Response from the model:") | |
st.write(response.text) | |