diff --git a/rip-py/rip.py b/rip-py/rip.py index edab12c..fedc65f 100755 --- a/rip-py/rip.py +++ b/rip-py/rip.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 from datetime import datetime +import itertools import math import re import os @@ -78,6 +79,7 @@ def _rip_title(title, output_dir, fifo_path, device=None, media_type=None, '-analyzeduration', '150M', '-i', fifo_path, '-map', '0:v:0', + #'-c:a', 'flac', '-c:a', 'copy', '-c:v', 'h264', '-crf', '18', @@ -281,5 +283,32 @@ def find_right_title(start_title, end_title, device): print('No title without duplicates found.') +@cli.command('split-file') +@click.option('-c', '--chapters-file', type=FILE_TYPE, required=True, + help='File with timestamps separated by comma') +@click.option('-i', '--input-file', type=FILE_TYPE, required=True) +@click.option('-o', '--output-dir', type=DIRECTORY_TYPE, required=True) +def split_file(output_dir, input_file, chapters_file): + extension = input_file.split('.')[-1] + + with open(chapters_file) as f: + chapters = f.read().strip().split(',') + + for i, (start, end) in enumerate(itertools.zip_longest(chapters, chapters[1:])): + ffmpeg_cmd = ['ffmpeg', + '-ss', start] + if end is not None: + ffmpeg_cmd += ['-to', end] + + ffmpeg_cmd += [ + '-i', input_file, + '-c:a', 'flac', + #'-c:v', 'copy', + os.path.join(output_dir, '{}.{}'.format(i + 1, extension)) + ] + #print(ffmpeg_cmd) + subprocess.check_call(ffmpeg_cmd) + + if __name__ == '__main__': cli()