Spaces:
Running
Running
File size: 1,631 Bytes
8f3b56b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
from pathlib import Path
import uuid
import pickle as pkl
from dynamic_utils import Sampler, get_layout
from utils import clean_temp_dir, get_scene_data, get_scene_dir_path
from video_utils import Video_Generator
from utils import get_video_path, read_character
def generate_schedules(scene_file_name, character_files):
scene_dir = get_scene_dir_path(scene_file_name)
house_info = get_scene_data(scene_dir)
activity_base_list = []
character_info_list = []
schedule_list = []
for character_file in character_files:
activity_base, character_info, schedule = read_character(character_file)
activity_base_list.append(activity_base)
character_info_list.append(character_info)
schedule_list.append(schedule)
#set sampler
sampler = Sampler()
sampler.set_activity(character_info_list, activity_base_list, schedule_list)
scene_layout = get_layout(house_info)
sampler.set_scene_layout(scene_layout)
schedules, _, _ = sampler.sample()
return schedules
def save_vedio(schedules, scene_id, vedio_path):
video_generator = Video_Generator()
video_generator.generate(schedules, scene_id, vedio_path)
def generate_video(scene_file_name: str, character_files: list[dict|str|Path], max_try_num: int=5) -> Path:
for _ in range(max_try_num):
try:
schedules = generate_schedules(scene_file_name, character_files)
clean_temp_dir()
video_path = get_video_path()
save_vedio(schedules, scene_file_name, video_path)
return video_path
except:
continue
return None
|