From 7f61cb97b0a12ea0f072f9fe42110970e570b159 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 9 May 2023 19:53:26 +0200 Subject: [PATCH 1/3] more robust parsing for Input level and Scaling Factor --- ivas_processing_scripts/audiotools/wrappers/bs1770.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ivas_processing_scripts/audiotools/wrappers/bs1770.py b/ivas_processing_scripts/audiotools/wrappers/bs1770.py index fe756c07..9d9dfa42 100755 --- a/ivas_processing_scripts/audiotools/wrappers/bs1770.py +++ b/ivas_processing_scripts/audiotools/wrappers/bs1770.py @@ -32,6 +32,7 @@ import copy import logging +import re from pathlib import Path from tempfile import TemporaryDirectory from typing import Optional, Tuple, Union @@ -134,8 +135,11 @@ def bs1770demo( result = run(cmd, logger=logger) # parse output - measured_loudness = float(result.stdout.splitlines()[3].split(":")[1]) - scale_factor = float(result.stdout.splitlines()[-3].split(":")[1]) + tmp_string = re.findall(r'Input level:\s+[-+]?(?:\d*\.*\d+)', result.stdout)[0] + measured_loudness = float(tmp_string.split(":")[1]) + + tmp_string = re.findall(r'Scaling factor:\s+[-+]?(?:\d*\.*\d+)', result.stdout)[0] + scale_factor = float(tmp_string.split(":")[1]) return measured_loudness, scale_factor -- GitLab From 93b879a8540daba5795b8a250da1b769d020dd3c Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 9 May 2023 20:54:52 +0200 Subject: [PATCH 2/3] more Pythonic solution --- ivas_processing_scripts/audiotools/wrappers/bs1770.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/ivas_processing_scripts/audiotools/wrappers/bs1770.py b/ivas_processing_scripts/audiotools/wrappers/bs1770.py index 9d9dfa42..09c21114 100755 --- a/ivas_processing_scripts/audiotools/wrappers/bs1770.py +++ b/ivas_processing_scripts/audiotools/wrappers/bs1770.py @@ -135,11 +135,9 @@ def bs1770demo( result = run(cmd, logger=logger) # parse output - tmp_string = re.findall(r'Input level:\s+[-+]?(?:\d*\.*\d+)', result.stdout)[0] - measured_loudness = float(tmp_string.split(":")[1]) - - tmp_string = re.findall(r'Scaling factor:\s+[-+]?(?:\d*\.*\d+)', result.stdout)[0] - scale_factor = float(tmp_string.split(":")[1]) + # we are looking for the (floating-point) number after the search string - '( )' around the number denotes the first group + measured_loudness = float(re.search(r'Input level:\s+([-+]?(?:\d*\.*\d+))', result.stdout).group(1)) + scale_factor = float(re.search(r'Scaling factor:\s+([-+]?(?:\d*\.*\d+))', result.stdout).group(1)) return measured_loudness, scale_factor -- GitLab From 02f613e2d67214f9f8f2df9887869d02d2ed9ab9 Mon Sep 17 00:00:00 2001 From: Markus Multrus Date: Tue, 9 May 2023 21:15:00 +0200 Subject: [PATCH 3/3] formatting --- ivas_processing_scripts/audiotools/wrappers/bs1770.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ivas_processing_scripts/audiotools/wrappers/bs1770.py b/ivas_processing_scripts/audiotools/wrappers/bs1770.py index 09c21114..7321b02d 100755 --- a/ivas_processing_scripts/audiotools/wrappers/bs1770.py +++ b/ivas_processing_scripts/audiotools/wrappers/bs1770.py @@ -136,8 +136,12 @@ def bs1770demo( # parse output # we are looking for the (floating-point) number after the search string - '( )' around the number denotes the first group - measured_loudness = float(re.search(r'Input level:\s+([-+]?(?:\d*\.*\d+))', result.stdout).group(1)) - scale_factor = float(re.search(r'Scaling factor:\s+([-+]?(?:\d*\.*\d+))', result.stdout).group(1)) + measured_loudness = float( + re.search(r"Input level:\s+([-+]?(?:\d*\.*\d+))", result.stdout).group(1) + ) + scale_factor = float( + re.search(r"Scaling factor:\s+([-+]?(?:\d*\.*\d+))", result.stdout).group(1) + ) return measured_loudness, scale_factor -- GitLab