diff --git a/ffprobe/ffprobe.py b/ffprobe/ffprobe.py index f1eb3dc..1275dc1 100644 --- a/ffprobe/ffprobe.py +++ b/ffprobe/ffprobe.py @@ -118,7 +118,15 @@ class FFStream: def __init__(self, data_lines): for line in data_lines: - self.__dict__.update({key: value for key, value, *_ in [line.strip().split('=')]}) + parts = line.strip().split('=', 1) + if len(parts) != 2: + continue + + key, value = parts + if not key: + continue + + self.__dict__[key] = value try: self.__dict__['framerate'] = round( diff --git a/tests/ffprobe_test.py b/tests/ffprobe_test.py index 9078f76..3335083 100644 --- a/tests/ffprobe_test.py +++ b/tests/ffprobe_test.py @@ -3,6 +3,7 @@ import os from ffprobe import FFProbe from ffprobe.exceptions import FFProbeError +from ffprobe.ffprobe import FFStream test_dir = os.path.dirname(os.path.abspath(__file__)) @@ -56,3 +57,21 @@ def test_stream (): print(e) except Exception as e: print(e) + +def test_ffstream_ignores_multiline_side_data (): + stream = FFStream([ + 'index=0\n', + 'codec_type=video\n', + 'avg_frame_rate=24/1\n', + 'displaymatrix=\n', + '00000000: 0 65536 0\n', + '00000001: -65536 0 0\n', + '\n', + 'rotation=-90\n', + ]) + + assert stream.index == '0' + assert stream.codec_type == 'video' + assert stream.displaymatrix == '' + assert stream.rotation == '-90' + assert stream.framerate == 24