Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
from git import Repo | |
import sys | |
# GitHub Reposi tory and Directory Setup | |
repo_url = st.secrets["REPO_URL"] # The private repository URL | |
github_token = st.secrets["GITHUB_PAT"] # GitHub Personal Access Token | |
local_dir = "repo" | |
# Clone the private repository if it doesn't exist locally | |
if not os.path.exists(local_dir): | |
try: | |
repo_url = repo_url.replace("https://", f"https://{github_token}@") | |
st.write("Cloning the repository...") | |
Repo.clone_from(repo_url, local_dir) | |
st.success("Repository cloned successfully!") | |
# Add the repo directory to the system path | |
sys.path.insert(0, local_dir) | |
except Exception as e: | |
st.error(f"Error cloning repository: {e}") | |
st.stop() # Stop the app if the repo can't be cloned | |
# Dynamically import and execute the app.py from the cloned repository | |
try: | |
import importlib.util | |
spec = importlib.util.spec_from_file_location("cloned_app", os.path.join(local_dir, "app.py")) | |
module = importlib.util.module_from_spec(spec) | |
spec.loader.exec_module(module) | |
except Exception as e: | |
st.error(f"Error running the app from the cloned repo: {e}") | |
st.stop() # Stop the app if the cloned app can't be executed | |
st.error(f"Failed to process video: {str(e)}") | |