From 62cb977f3108c3cea2bd1a85822073ff5e3a6363 Mon Sep 17 00:00:00 2001 From: Miro <200482516+Mirochill@users.noreply.github.com> Date: Mon, 25 May 2026 21:30:26 +0200 Subject: [PATCH] Ignore malformed ffprobe stream lines --- ffprobe/ffprobe.py | 10 +++++++++- tests/ffprobe_test.py | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) 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