diff --git a/src/tscut/tools/ffprobe.py b/src/tscut/tools/ffprobe.py index c5912a3..b608b9b 100644 --- a/src/tscut/tools/ffprobe.py +++ b/src/tscut/tools/ffprobe.py @@ -346,7 +346,7 @@ def get_nearest_idr_frame(ffprobe_path: str, input_file: IO[bytes], timestamp:ti @typechecked def get_nearest_iframe(ffprobe_path:str, input_file: IO[bytes], timestamp:timedelta, before:bool=True, - delta_max:timedelta=timedelta(seconds=15))-> tuple[int,dict]: + delta_max:timedelta=timedelta(seconds=15))-> tuple[int,dict | None]: infd = input_file.fileno() set_inheritable(infd, True) @@ -399,8 +399,11 @@ def get_nearest_iframe(ffprobe_path:str, input_file: IO[bytes], delta+=timedelta(seconds=1) - if iframe is not None: + if iframe is not None and frames is not None: its = get_ts_frame(iframe) + if its is None: + logger.error("Impossible to retrieve timestamp of i-frame !") + return 0, None nb_frames = 0 for frame in frames: ts = get_ts_frame(frame) diff --git a/src/tscut/tools/timeframe.py b/src/tscut/tools/timeframe.py index 08bf7c9..5899de4 100644 --- a/src/tscut/tools/timeframe.py +++ b/src/tscut/tools/timeframe.py @@ -70,7 +70,7 @@ def parse_timestamp(ts:str) -> timedelta|None: return res @typechecked -def parse_time_interval(interval: str) -> tuple[timedelta, timedelta] | None: +def parse_time_interval(interval: str) -> tuple[timedelta, timedelta] | tuple[None, None]: """ Parse a time interval string into a tuple of two timedelta objects. @@ -99,7 +99,7 @@ def parse_time_interval(interval: str) -> tuple[timedelta, timedelta] | None: m = p.match(interval) if m is None: logger.error("Impossible to parse time interval") - return None + return None, None values = m.groupdict() hour1 = 0 @@ -208,7 +208,7 @@ def get_ts_frame(frame: dict) -> timedelta|None: return ts @typechecked -def get_packet_duration(packet: dict) -> int: +def get_packet_duration(packet: dict) -> int | None: logger = logging.getLogger(__name__) if 'duration' in packet: