beatcontent / pack_builder /zip_builder.py
BUBOUTLW's picture
Update pack_builder/zip_builder.py
600897e verified
import os
import uuid
import zipfile
import shutil
from beat_generator.riffusion_cpu import generate_audio_loop
from content_generator.hooks import generate_hooks
from content_generator.captions import generate_captions
from content_generator.ideas import generate_content_ideas
from content_generator.scripts import generate_short_scripts
def build_creator_pack(niche, style, bpm, tone, goal):
# Create temp folder
pack_id = uuid.uuid4().hex
folder = f"assets/temp/{pack_id}"
os.makedirs(folder, exist_ok=True)
# -----------------------------------
# 1. Generate beats & copy correctly
# -----------------------------------
for i in range(3):
beat_path = generate_audio_loop(style, bpm)
# Copy safely using Python, NOT shell commands
shutil.copy(beat_path, f"{folder}/beat_{i+1}.wav")
# -----------------------------------
# 2. Generate text files
# -----------------------------------
with open(f"{folder}/hooks.txt", "w") as f:
f.write("\n".join(generate_hooks(niche, tone)))
with open(f"{folder}/captions.txt", "w") as f:
f.write("\n".join(generate_captions(niche, tone)))
with open(f"{folder}/ideas.txt", "w") as f:
f.write("\n".join(generate_content_ideas(niche, goal)))
with open(f"{folder}/scripts.txt", "w") as f:
f.write("\n".join(generate_short_scripts(niche, tone)))
# -----------------------------------
# 3. Build ZIP file safely
# -----------------------------------
zip_path = f"{folder}.zip"
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zipf:
for root, _, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
arc_path = os.path.relpath(file_path, folder)
zipf.write(file_path, arc_path)
return zip_path