experiments/veo-app/common/metadata.py (41 lines of code) (raw):
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
""" metadata implementation """
import datetime
import pandas as pd
from google.cloud import firestore
from config.default import Default
from config.firebase_config import FirebaseClient
#from models.model_setup import ModelSetup
# Initialize configuration
#client, model_id = ModelSetup.init()
#MODEL_ID = model_id
config = Default()
db = FirebaseClient(database_id=config.GENMEDIA_FIREBASE_DB).get_client()
def add_video_metadata(gcsuri: str, prompt: str, aspect_ratio: str, model: str, generation_time: float, duration: int, reference_image: str, rewrite_prompt: bool, error_message: str, comment: str):
"""Add Video metadata to Firestore persistence"""
current_datetime = datetime.datetime.now()
# Store the image metadata in Firestore
doc_ref = db.collection(config.GENMEDIA_COLLECTION_NAME).document()
doc_ref.set(
{
"gcsuri": gcsuri,
"prompt": prompt,
"model": model,
"aspect": aspect_ratio,
"duration": duration,
"generation_time": generation_time,
"reference_image": reference_image,
"enhanced_prompt": rewrite_prompt,
"mime_type": "video/mp4",
"error_message": error_message,
"comment": comment,
"timestamp": current_datetime, # alt: firestore.SERVER_TIMESTAMP
}
)
print(f"Video data stored in Firestore with document ID: {doc_ref.id}")
def get_latest_videos(limit: int = 10):
""" Retrieve the last 10 videos """
try:
media_ref = (
db.collection(config.GENMEDIA_COLLECTION_NAME)
.order_by("timestamp", direction=firestore.Query.DESCENDING)
.limit(limit)
)
media = []
for doc in media_ref.stream():
media.append(doc.to_dict())
return media
except Exception as e:
print(f"Error fetching media: {e}")
return []