import os
import copy

template_current_video = {
    "filename": "",
    "file_ext": "mp4",
    "pack_ext": "mp4",
    "out_ext": "mp4",
    "start": "",
    "end": "",
    "suffix": "",
    "target_name": "",
}

current_line = ""
with open("a.txt", "r", encoding="GB2312") as f:
    skip_current = False
    current_video_params = copy.deepcopy(template_current_video)
    for current_line in f.readlines():
        current_line = current_line.strip()
        if current_line == "":
            if skip_current:
                skip_current = False
            else:
                os.system(" ".join([
                    "ffmpeg", "-y", "-i", "\"{filename}.{file_ext}\"".format_map(current_video_params),
                    "-c copy", "-f {pack_ext}".format_map(current_video_params),
                    "-ss","{start}".format_map(current_video_params),
                    "-to","{end}".format_map(current_video_params),
                    "\"{target_name}{suffix}.{out_ext}\"".format_map(current_video_params),
                ]))
                current_video_params = copy.deepcopy(template_current_video)
            continue
        if current_line.startswith("=" * 5):
            break
        if "~" in current_line:
            skip_current = True
            continue
        if "+" in current_line and "-" in current_line:
            filename, time_series = current_line.split("+", 1)
            if "." in filename:
                filename, file_ext = filename.split(".", 1)
                current_video_params['file_ext'] = file_ext
            current_video_params['filename'] = filename
            suffix, _ = filename.split("_")
            current_video_params['suffix'] = "_"+suffix[4:]
            start, end = time_series.split("-", 1)
            current_video_params['start'] = start
            current_video_params['end'] = end
        else:
            if current_video_params['filename'] == "":
                skip_current = True
                continue
            current_video_params['target_name'] = current_line
            continue