import os
import subprocess
import sys

def convert_and_cleanup(files):
    for flac_file in files:
        mp3_file = flac_file[:-5] + '.mp3'
        print(f"Starting conversion: {flac_file} -> {mp3_file}")
        # Вызов ffmpeg с выводом прогресса в режиме реального времени
        process = subprocess.Popen(
            ['ffmpeg', '-i', flac_file, '-q:a', '2', mp3_file],
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            universal_newlines=True
        )

        # Читаем и выводим все строки вывода ffmpeg
        while True:
            output = process.stdout.readline()
            if output == '' and process.poll() is not None:
                break
            if output:
                print(output.strip())

        retcode = process.poll()
        if retcode == 0:
            print(f"Converted successfully: {flac_file} -> {mp3_file}")
            os.remove(flac_file)
            print(f"Deleted original file: {flac_file}")
        else:
            print(f"Error converting {flac_file}, ffmpeg exit code {retcode}")

def scan_directory(path):
    flac_files = []
    # Итеративный обход с os.walk
    for dirpath, dirnames, filenames in os.walk(path):
        for filename in filenames:
            if filename.lower().endswith('.flac'):
                full_path = os.path.join(dirpath, filename)
                flac_files.append(full_path)
    return flac_files

if __name__ == '__main__':
    root_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
    files = scan_directory(root_dir)
    print(f"Found {len(files)} .flac files to convert")
    convert_and_cleanup(files)
