SilentProgrammer's picture
Upload 18 files
e71d833 verified
Raw
History Blame Contribute Delete
3.48 kB
import os
import sys
import json
import random
import logging
import zipfile
import requests
from termcolor import colored
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def clean_dir(path: str) -> None:
"""
Removes every file in a directory.
Args:
path (str): Path to directory.
Returns:
None
"""
try:
if not os.path.exists(path):
os.mkdir(path)
logger.info(f"Created directory: {path}")
for file in os.listdir(path):
file_path = os.path.join(path, file)
os.remove(file_path)
logger.info(f"Removed file: {file_path}")
logger.info(colored(f"Cleaned {path} directory", "green"))
except Exception as e:
logger.error(f"Error occurred while cleaning directory {path}: {str(e)}")
def fetch_songs(zip_url: str) -> None:
"""
Downloads songs into songs/ directory to use with geneated videos.
Args:
zip_url (str): The URL to the zip file containing the songs.
Returns:
None
"""
try:
logger.info(colored(f" => Fetching songs...", "magenta"))
files_dir = "../Songs"
if not os.path.exists(files_dir):
os.mkdir(files_dir)
logger.info(colored(f"Created directory: {files_dir}", "green"))
else:
# Skip if songs are already downloaded
return
# Download songs
response = requests.get(zip_url)
# Save the zip file
with open("../Songs/songs.zip", "wb") as file:
file.write(response.content)
# Unzip the file
with zipfile.ZipFile("../Songs/songs.zip", "r") as file:
file.extractall("../Songs")
# Remove the zip file
os.remove("../Songs/songs.zip")
logger.info(colored(" => Downloaded Songs to ../Songs.", "green"))
except Exception as e:
logger.error(colored(f"Error occurred while fetching songs: {str(e)}", "red"))
def choose_random_song() -> str:
"""
Chooses a random song from the songs/ directory.
Returns:
str: The path to the chosen song.
"""
try:
songs = os.listdir("../Songs")
song = random.choice(songs)
logger.info(colored(f"Chose song: {song}", "green"))
return f"../Songs/{song}"
except Exception as e:
logger.error(colored(f"Error occurred while choosing random song: {str(e)}", "red"))
def check_env_vars() -> None:
"""
Checks if the necessary environment variables are set.
Returns:
None
Raises:
SystemExit: If any required environment variables are missing.
"""
try:
required_vars = ["PEXELS_API_KEY", "TIKTOK_SESSION_ID", "IMAGEMAGICK_BINARY"]
missing_vars = [var + os.getenv(var) for var in required_vars if os.getenv(var) is None or (len(os.getenv(var)) == 0)]
if missing_vars:
missing_vars_str = ", ".join(missing_vars)
logger.error(colored(f"The following environment variables are missing: {missing_vars_str}", "red"))
logger.error(colored("Please consult 'EnvironmentVariables.md' for instructions on how to set them.", "yellow"))
sys.exit(1) # Aborts the program
except Exception as e:
logger.error(f"Error occurred while checking environment variables: {str(e)}")
sys.exit(1) # Aborts the program if an unexpected error occurs