ghin_shenanigans / scripts /ds_segmentor.py
ameerazam08's picture
Upload folder using huggingface_hub
c427e40 verified
import json
import os
import click
@click.command(help="Segmentor for .ds file")
@click.argument("input_path", required=True)
@click.option("--retime", default=True, help="Retime segment's offset to 0.5 second")
@click.option("--export_path", default="segmented_files", help="Path to the folder where segmented files will be saved")
def main(input_path, retime, export_path):
if os.path.isdir(input_path):
files = [f for f in os.listdir(input_path) if f.endswith(".ds")]
for file_name in files:
file_path = os.path.join(input_path, file_name)
process_ds(file_path, retime, export_path)
else:
process_ds(input_path, retime, export_path)
def process_ds(file_path, retime, export_path):
if not os.path.exists(export_path):
os.mkdir(export_path)
with open(file_path, "r", encoding="utf-8") as file:
content = json.load(file)
content_list = [content] if not isinstance(content, list) else content
file_name, _ = os.path.splitext(os.path.basename(file_path))
for index, segment in enumerate(content_list):
if retime:
segment["offset"] = 0.5
exp_name = f"{file_name}_seg_{index + 1}.ds"
exp_path = os.path.join(export_path, exp_name)
ds_segment = [segment] if not isinstance(segment, list) else segment
with open(exp_path, "w", encoding="utf-8") as file:
json.dump(ds_segment, file, indent=2)
print(f"{file_name}.ds segment {index + 1} saved to {exp_path}")
if __name__ == "__main__":
main()