diff --git a/kindlecomicconverter/comicarchive.py b/kindlecomicconverter/comicarchive.py index dcaec36..697577e 100644 --- a/kindlecomicconverter/comicarchive.py +++ b/kindlecomicconverter/comicarchive.py @@ -19,6 +19,7 @@ # import os +import distro from psutil import Popen from shutil import move from subprocess import STDOUT, PIPE @@ -38,15 +39,17 @@ class ComicArchive: self.type = line.rstrip().decode().split(' = ')[1].upper() break process.communicate() - if process.returncode != 0: + if process.returncode != 0 and distro.id() == 'fedora': process = Popen('unrar l -y -p1 "' + self.filepath + '"', stderr=STDOUT, stdout=PIPE, stdin=PIPE, shell=True) for line in process.stdout: if b'Details: ' in line: self.type = line.rstrip().decode().split(' ')[1].upper() - print(self.type) break - if(self.type != 'RAR'): + process.communicate() + if process.returncode != 0: raise OSError('Archive is corrupted or encrypted.') + elif self.type not in ['7Z', 'RAR', 'RAR5', 'ZIP']: + raise OSError('Unsupported archive format.') elif self.type not in ['7Z', 'RAR', 'RAR5', 'ZIP']: raise OSError('Unsupported archive format.') @@ -56,7 +59,7 @@ class ComicArchive: process = Popen('7z x -y -xr!__MACOSX -xr!.DS_Store -xr!thumbs.db -xr!Thumbs.db -o"' + targetdir + '" "' + self.filepath + '"', stdout=PIPE, stderr=STDOUT, stdin=PIPE, shell=True) process.communicate() - if process.returncode != 0: + if process.returncode != 0 and distro.id() == 'fedora': process = Popen('unrar x -y -x__MACOSX -x.DS_Store -xthumbs.db -xThumbs.db "' + self.filepath + '" "' + targetdir + '"', stdout=PIPE, stderr=STDOUT, stdin=PIPE, shell=True) process.communicate() diff --git a/requirements.txt b/requirements.txt index 026f92d..156b842 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ psutil>=5.0.0 python-slugify>=1.2.1 raven>=6.0.0 # PyQt5-tools -mozjpeg-lossless-optimization>=1.1.2 \ No newline at end of file +mozjpeg-lossless-optimization>=1.1.2 +distro \ No newline at end of file