Magenta49
Restore scene filename snippets
e1e1cb9
import re
import math
def group_sentences(text, target_sec=10):
raw_sentences = re.split(r'(?<=[.?!])\s+', text.strip())
scenes = []
curr_text, curr_time = "", 0
for s in raw_sentences:
if not s: continue
s_time = max(5, math.ceil(len(s)/35)*5)
if curr_time + s_time > target_sec and curr_text:
scenes.append({"text": curr_text, "time": curr_time})
curr_text, curr_time = s, s_time
else:
curr_text = (curr_text + " " + s).strip()
curr_time += s_time
if curr_text: scenes.append({"text": curr_text, "time": curr_time})
return scenes
def get_smart_filename(index, text):
clean_text = re.sub(r'[\\/*?:"<>|]', "", text).strip()
name_part = clean_text[:12] if len(clean_text) <= 12 else f"{clean_text[:6]}~{clean_text[-4:]}"
return f"{index+1:02d}_{name_part}.png"
def make_scene_snippet(text, head_len=10, tail_len=10, max_len=60):
clean_text = " ".join((text or "").strip().split())
clean_text = re.sub(r'[\\/*?:"<>|]', "", clean_text)
clean_text = re.sub(r"[^0-9A-Za-z가-힣\s.~]", " ", clean_text)
clean_text = re.sub(r"[.]{2,}", ".", clean_text)
clean_text = re.sub(r"\s+", " ", clean_text).strip()
if not clean_text:
return "scene"
if len(clean_text) <= head_len + tail_len + 1:
snippet = clean_text
else:
snippet = f"{clean_text[:head_len]}~{clean_text[-tail_len:]}"
snippet = re.sub(r"\s+", " ", snippet).strip()
return snippet[:max_len].rstrip(" .")