cli.py 2.31 KB
Newer Older
Matteo's avatar
update    
Matteo committed
1
2
3
4
import argparse
import os
import time
from rich.console import Console
Matteo's avatar
update  
Matteo committed
5
6
import segment_finder as sf

Matteo's avatar
update    
Matteo committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from mpai_cae_arp.types.irregularity import IrregularityFile


def get_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser()
    parser.add_argument("--working-directory", "-w", help="Working directory", required=True)
    parser.add_argument("--files-name", "-f", nargs="+", help="Files name", required=True)
    return parser.parse_args()


def exit_with_error(error_message: str, console) -> None:
    console.print(f"[red bold]Error: {error_message}")
    quit(os.EX_USAGE)


def main():
    args = get_args()
    console = Console()
    console.print("[bold]Welcome to ARP Audio Analyzer!")
    
    working_directory = args.working_directory
    files_name = args.files_name

    with console.status("Reading input files...", spinner="dots"):
        time.sleep(1)
        audio_src = os.path.join(working_directory, "PreservationAudioFile", f"{files_name[0]}.wav")
        video_src = os.path.join(working_directory, "PreservationAudioVisualFile", f"{files_name[0]}.mov")

        console.log(audio_src)
        console.log(video_src)
        
        audio_exists = os.path.exists(audio_src)
        video_exists = os.path.exists(video_src)

        match audio_exists, video_exists:
            case True, True:
                console.print("[green]Input files found!")
            case False, True:
                exit_with_error("Audio file not found!", console)
            case True, False:
                exit_with_error("Video file not found!", console)
            case False, False:
                exit_with_error("Input files not found!", console)

    # create irregularity file 1
    with console.status("Creating irregularity file 1...", spinner="dots"):
        irreg1 = sf.create_irreg_file(audio_src, video_src)

    # create irregularity file 2
    with console.status("Creating irregularity file 2...", spinner="dots"):
        video_irreg_1 = {}
        irreg2 = sf.merge_irreg_files(irreg1, IrregularityFile.from_json(video_irreg_1))

    with console.status("Extracting audio irregularities...", spinner="bouncingBall"):
        sf.extract_audio_irregularities(audio_src, irreg2, working_directory)

    # classify audio irregularities

    console.print("[green bold]Success!")


Matteo's avatar
update  
Matteo committed
68
if __name__ == "__main__":
Matteo's avatar
update    
Matteo committed
69
    main()