Fix ruff warning about imports and IOError instead of OSError.

This commit is contained in:
Frédéric Tronel
2026-08-28 16:53:38 +02:00
parent f18ebfadc2
commit 66e20e126a
2 changed files with 82 additions and 49 deletions
+46 -23
View File
@@ -6,23 +6,46 @@
import argparse import argparse
import logging import logging
from os import unlink
import os.path import os.path
from sys import exit
from datetime import datetime, timedelta from datetime import datetime, timedelta
from os import unlink
from shutil import copyfile, move from shutil import copyfile, move
from sys import exit
import coloredlogs import coloredlogs
import hexdump import hexdump
from .tscut import check_required_tools, parse_time_interval, cmp_to_key, get_format,\ from .tscut import (
SupportedFormat, compare_time_interval, ffmpeg_convert, parse_codec_private,\ SupportedFormat,
dump_codec_private_data, get_nearest_iframe, get_movie_duration, extract_all_streams,\ change_codec_private_data,
extract_mkv_part, extract_srt, concatenate_h264_parts, concatenate_h264_ts_parts,\ check_required_tools,
do_ocr, get_frame_rate, get_streams, get_ts_frame, remove_video_tracks_from_mkv,\ cmp_to_key,
merge_mkvs, extract_track_from_mkv, get_avc_config_from_h264,\ compare_time_interval,
get_codec_private_data_from_mkv, find_subtitles_tracks, change_codec_private_data,\ concatenate_h264_parts,
get_tesseract_supported_lang, remux_srt_subtitles concatenate_h264_ts_parts,
do_ocr,
dump_codec_private_data,
extract_all_streams,
extract_mkv_part,
extract_srt,
extract_track_from_mkv,
ffmpeg_convert,
find_subtitles_tracks,
get_avc_config_from_h264,
get_codec_private_data_from_mkv,
get_format,
get_frame_rate,
get_movie_duration,
get_nearest_iframe,
get_streams,
get_tesseract_supported_lang,
get_ts_frame,
merge_mkvs,
parse_codec_private,
parse_time_interval,
remove_video_tracks_from_mkv,
remux_srt_subtitles,
)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -110,7 +133,7 @@ def main() -> int:
try: try:
input_file = open(args.input_file, mode='rb') input_file = open(args.input_file, mode='rb')
logger.debug("Type of input file: %s", type(input_file)) logger.debug("Type of input file: %s", type(input_file))
except IOError: except OSError:
logger.error("Impossible to open %s", args.input_file) logger.error("Impossible to open %s", args.input_file)
exit(-1) exit(-1)
@@ -153,21 +176,21 @@ def main() -> int:
logger.info("Converting MP4 to MKV.") logger.info("Converting MP4 to MKV.")
try: try:
mkv = open(mkvfilename, 'wb+') mkv = open(mkvfilename, 'wb+')
except IOError: except OSError:
logger.error('') logger.error('')
ffmpeg_convert(paths['ffmpeg'], paths['ffprobe'], mp4, 'mp4', mkv, 'matroska', ffmpeg_convert(paths['ffmpeg'], paths['ffprobe'], mp4, 'mp4', mkv, 'matroska',
duration) duration)
if nb_parts > 0: if nb_parts > 0:
temporaries.append(mkv) temporaries.append(mkv)
except IOError: except OSError:
logger.error('') logger.error('')
elif format_of_file == SupportedFormat.MP4: elif format_of_file == SupportedFormat.MP4:
logger.info("Converting MP4 to MKV") logger.info("Converting MP4 to MKV")
try: try:
mkv = open(mkvfilename, 'wb+') mkv = open(mkvfilename, 'wb+')
except IOError: except OSError:
logger.error('') logger.error('')
ffmpeg_convert(paths['ffmpeg'], paths['ffprobe'], input_file, 'mp4', mkv, 'matroska', ffmpeg_convert(paths['ffmpeg'], paths['ffprobe'], input_file, 'mp4', mkv, 'matroska',
duration) duration)
@@ -340,25 +363,25 @@ def main() -> int:
try: try:
internal_mkv = open(internal_mkv_name, 'wb+') internal_mkv = open(internal_mkv_name, 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', internal_mkv_name) logger.error('Impossible to create file: %s', internal_mkv_name)
exit(-1) exit(-1)
try: try:
internal_novideo_mkv = open(internal_novideo_mkv_name, 'wb+') internal_novideo_mkv = open(internal_novideo_mkv_name, 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', internal_novideo_mkv_name) logger.error('Impossible to create file: %s', internal_novideo_mkv_name)
exit(-1) exit(-1)
try: try:
internal_h264 = open(internal_h264_name, 'wb+') internal_h264 = open(internal_h264_name, 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', internal_h264_name) logger.error('Impossible to create file: %s', internal_h264_name)
exit(-1) exit(-1)
try: try:
internal_h264_ts = open(internal_h264_ts_name, 'w+', encoding='utf8') internal_h264_ts = open(internal_h264_ts_name, 'w+', encoding='utf8')
except IOError: except OSError:
logger.error('Impossible to create file: %s', internal_h264_ts_name) logger.error('Impossible to create file: %s', internal_h264_ts_name)
exit(-1) exit(-1)
@@ -429,7 +452,7 @@ def main() -> int:
if nb_mkv_parts > 0: if nb_mkv_parts > 0:
try: try:
full_h264 = open(f'{basename}-full.h264', 'wb+') full_h264 = open(f'{basename}-full.h264', 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file full H264 stream.') logger.error('Impossible to create file full H264 stream.')
exit(-1) exit(-1)
@@ -439,7 +462,7 @@ def main() -> int:
try: try:
full_h264_ts = open(f'{basename}-ts.txt', 'w+', encoding='utf8') full_h264_ts = open(f'{basename}-ts.txt', 'w+', encoding='utf8')
except IOError: except OSError:
logger.error('Impossible to create file containing all video timestamps.') logger.error('Impossible to create file containing all video timestamps.')
exit(-1) exit(-1)
@@ -463,7 +486,7 @@ def main() -> int:
if nb_mkv_parts >=1 : if nb_mkv_parts >=1 :
try: try:
final_novideo = open(final_novideo_name, 'rb') final_novideo = open(final_novideo_name, 'rb')
except IOError: except OSError:
logger.error('Impossible to open file: %s.', final_novideo_name) logger.error('Impossible to open file: %s.', final_novideo_name)
exit(-1) exit(-1)
@@ -521,12 +544,12 @@ def main() -> int:
for idx_name, sub_name, _, _ in list_of_subtitles: for idx_name, sub_name, _, _ in list_of_subtitles:
try: try:
idx = open(idx_name,'rb') idx = open(idx_name,'rb')
except IOError: except OSError:
logger.error("Impossible to open %s.", idx_name) logger.error("Impossible to open %s.", idx_name)
exit(-1) exit(-1)
try: try:
sub = open(sub_name,'rb') sub = open(sub_name,'rb')
except IOError: except OSError:
logger.error("Impossible to open %s.", sub_name) logger.error("Impossible to open %s.", sub_name)
exit(-1) exit(-1)
+35 -25
View File
@@ -3,30 +3,40 @@
# Standard modules # Standard modules
import argparse import argparse
import re
from sys import exit
from datetime import datetime,timedelta
import logging
from functools import cmp_to_key
from subprocess import Popen, PIPE
from os import read, write, lseek, set_inheritable, memfd_create, SEEK_SET, close, unlink,\
fstat, ftruncate
import os.path
from enum import IntEnum, unique
from shutil import copyfile, which, move
from dataclasses import dataclass, field
from math import floor, ceil, log
from io import BytesIO, TextIOWrapper
import json import json
import logging
import os.path
import re
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from enum import IntEnum, unique
from functools import cmp_to_key
from io import BytesIO, TextIOWrapper
from math import ceil, floor, log
from os import (
SEEK_SET,
close,
fstat,
ftruncate,
lseek,
memfd_create,
read,
set_inheritable,
unlink,
write,
)
from shutil import copyfile, move, which
from subprocess import PIPE, Popen
from sys import exit
from typing import IO from typing import IO
from typeguard import typechecked
# Third party libraries # Third party libraries
import coloredlogs import coloredlogs
from tqdm import tqdm
import hexdump import hexdump
from iso639 import Lang from iso639 import Lang
from iso639.exceptions import InvalidLanguageValue from iso639.exceptions import InvalidLanguageValue
from tqdm import tqdm
from typeguard import typechecked
# Local modules # Local modules
# TODO: create local modules for MP4, MKV # TODO: create local modules for MP4, MKV
@@ -361,7 +371,7 @@ def do_ocr(vobsubocr:str, idxs: list[tuple[str,str,str,str]], duration:timedelta
while pos < srt_length: while pos < srt_length:
pos+=write(outfd, buf[pos:]) pos+=write(outfd, buf[pos:])
temporaries.append(dump_srt) temporaries.append(dump_srt)
except IOError: except OSError:
logger.error('Impossible to create file: %s', srtname) logger.error('Impossible to create file: %s', srtname)
return None return None
@@ -2734,7 +2744,7 @@ def dump_ppm(pictures: bytes, prefix: str, temporaries: list[IO[bytes]]) -> None
nb_bytes+=write(outfd, pictures[pos+nb_bytes:pos+length]) nb_bytes+=write(outfd, pictures[pos+nb_bytes:pos+length])
pos+=length pos+=length
picture+=1 picture+=1
except IOError: except OSError:
logger.error('Impossible to create file: %s', filename) logger.error('Impossible to create file: %s', filename)
@typechecked @typechecked
@@ -2871,7 +2881,7 @@ def extract_all_streams(ffmpeg_path:str, ffprobe_path:str, input_file:IO[bytes],
pos = 0 pos = 0
while pos < len(sound_bytes): while pos < len(sound_bytes):
pos+=write(outfd, sound_bytes[pos:]) pos+=write(outfd, sound_bytes[pos:])
except IOError: except OSError:
logger.error('Impossible to create file: %s', tmpname) logger.error('Impossible to create file: %s', tmpname)
return None return None
@@ -2907,7 +2917,7 @@ def extract_all_streams(ffmpeg_path:str, ffprobe_path:str, input_file:IO[bytes],
mkv_filename = f'{files_prefix}.mkv' mkv_filename = f'{files_prefix}.mkv'
try: try:
mkv_output = open(mkv_filename,'wb+') mkv_output = open(mkv_filename,'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', mkv_filename) logger.error('Impossible to create file: %s', mkv_filename)
return None return None
@@ -2928,7 +2938,7 @@ def extract_all_streams(ffmpeg_path:str, ffprobe_path:str, input_file:IO[bytes],
h264_filename = f'{files_prefix}.h264' h264_filename = f'{files_prefix}.h264'
try: try:
h264_output = open(h264_filename,'wb+') h264_output = open(h264_filename,'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', h264_filename) logger.error('Impossible to create file: %s', h264_filename)
return None return None
@@ -2957,7 +2967,7 @@ def extract_all_streams(ffmpeg_path:str, ffprobe_path:str, input_file:IO[bytes],
h264_ts_filename = f'{files_prefix}-ts.txt' h264_ts_filename = f'{files_prefix}-ts.txt'
try: try:
h264_ts_output = open(h264_ts_filename,'w+', encoding='utf8') h264_ts_output = open(h264_ts_filename,'w+', encoding='utf8')
except IOError: except OSError:
logger.error('Impossible to create file: %s', h264_ts_filename) logger.error('Impossible to create file: %s', h264_ts_filename)
return None return None
@@ -2992,7 +3002,7 @@ def merge_mkvs(mkvmerge_path:str, inputs: list[IO[bytes]], output_name:str,
fds = [] fds = []
try: try:
out = open(output_name, 'wb+') out = open(output_name, 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', output_name) logger.error('Impossible to create file: %s', output_name)
return None return None
@@ -3175,7 +3185,7 @@ def remux_srt_subtitles(mkvmerge_path:str, input_file: IO[bytes], output_filenam
try: try:
out = open(output_filename, 'w', encoding='utf8') out = open(output_filename, 'w', encoding='utf8')
except IOError: except OSError:
logger.error('Impossible to create file: %s', output_filename) logger.error('Impossible to create file: %s', output_filename)
return None return None
@@ -3289,7 +3299,7 @@ def do_coarse_processing(ffmpeg_path:str, ffprobe_path:str, mkvmerge_path:str,
try: try:
internal_mkv = open(internal_mkv_name, 'wb+') internal_mkv = open(internal_mkv_name, 'wb+')
except IOError: except OSError:
logger.error('Impossible to create file: %s', internal_mkv_name) logger.error('Impossible to create file: %s', internal_mkv_name)
exit(-1) exit(-1)