from rich.console import Console import os import grpc from mpai_cae_arp.network import arp_pb2 from mpai_cae_arp.network import arp_pb2_grpc channels = { "AudioAnalyser": grpc.insecure_channel("[::]:50051"), "VideoAnalyser": grpc.insecure_channel("[::]:50052"), "TapeIrregularityClassifier": grpc.insecure_channel("[::]:50053"), "TapeAudioRestoration": grpc.insecure_channel("[::]:50051/tape-audio-restoration"), "Packager": grpc.insecure_channel("[::]:50051/packager"), } def run(console: Console): audio_analyser = arp_pb2_grpc.AIMStub(channels["AudioAnalyser"]) video_analyser = arp_pb2_grpc.AIMStub(channels["VideoAnalyser"]) tape_irreg_classifier = arp_pb2_grpc.AIMStub(channels["TapeIrregularityClassifier"]) request = arp_pb2.InfoRequest() for analyser in [audio_analyser, video_analyser, tape_irreg_classifier]: response = analyser.getInfo(request) console.print("[bold]{}[/], v{}".format(response.title, response.version)) request = arp_pb2.JobRequest( working_dir="/data", files_name="BERIO100", index=1, ) with console.status("[bold]Computing AudioAnalyser IrregularityFile 1...", spinner="bouncingBall"): for result in audio_analyser.work(request): if result.status == "error": console.print("[bold red]Error![/] :boom:") console.print(f"[italic red]{result.message}") for channel in channels.values(): channel.close() exit(os.EX_SOFTWARE) console.print(result.message) request.files_name = "BERIO100.mov" with console.status("[bold]Computing VideoAnalyser IrregularityFiles...", spinner="bouncingBall"): for result in video_analyser.work(request): if result.status == "error": console.print("[bold red]Error![/] :boom:") console.print(f"[italic red]{result.message}") for channel in channels.values(): channel.close() exit(os.EX_SOFTWARE) console.print(result.message) request.index = 2 request.files_name = "BERIO100" with console.status("[bold]Computing AudioAnalyser IrregularityFile 2...", spinner="bouncingBall"): for result in audio_analyser.work(request): if result.status == "error": console.print("[bold red]Error![/] :boom:") console.print(f"[italic red]{result.message}") for channel in channels.values(): channel.close() exit(os.EX_SOFTWARE) console.print(result.message) with console.status("[bold]Computing TapeIrregularityClassifier...", spinner="bouncingBall"): for result in tape_irreg_classifier.work(request): if result.status == "error": console.print("[bold red]Error![/] :boom:") console.print(f"[italic red]{result.message}") for channel in channels.values(): channel.close() exit(os.EX_SOFTWARE) console.print(result.message) channels["AudioAnalyser"].close() channels["VideoAnalyser"].close() channels["TapeIrregularityClassifier"].close() console.print("[bold green]Success![/] :tada:") if __name__ == '__main__': console = Console() run(console)