core: add own RarFile.read implementation; hopefully fixes #311

This commit is contained in:
panni
2018-04-06 16:54:37 +02:00
parent 8a41c393bb
commit 8d97fb7633
4 changed files with 29 additions and 2 deletions
@@ -10,6 +10,7 @@ from subliminal_patch.http import RetryingSession
from subliminal_patch.subtitle import Subtitle, guess_matches
from subzero.lib.io import get_viable_encoding
from subzero.lib.rar import RarFile
class Provider(_Provider):
@@ -75,4 +76,5 @@ for name in os.listdir(os.path.dirname(unicode(__file__, get_viable_encoding()))
else:
subliminal_mod.Session = RetryingSession
subliminal_mod.guess_matches = guess_matches
subliminal_mod.RarFile = RarFile
@@ -19,9 +19,10 @@ from subliminal_patch.subtitle import Subtitle, guess_matches
from subliminal.utils import sanitize, sanitize_release_group
from subliminal.video import Episode
from zipfile import ZipFile, is_zipfile
from rarfile import RarFile, is_rarfile
from rarfile import is_rarfile
from subliminal_patch.utils import sanitize, fix_inconsistent_naming as _fix_inconsistent_naming
from guessit import guessit
from subzero.lib.rar import RarFile
def fix_inconsistent_naming(title):
@@ -9,7 +9,7 @@ import rarfile
from bs4 import BeautifulSoup
from zipfile import ZipFile, is_zipfile
from rarfile import RarFile, is_rarfile
from rarfile import is_rarfile
from babelfish import language_converters, Script
from requests import Session
from guessit import guessit
@@ -23,6 +23,7 @@ from subliminal.utils import sanitize_release_group
from subliminal.subtitle import guess_matches
from subliminal.video import Episode, Movie
from subzero.language import Language
from subzero.lib.rar import RarFile
# parsing regex definitions
title_re = re.compile(r'(?P<title>(?:.+(?= [Aa][Kk][Aa] ))|.+)(?:(?:.+)(?P<altitle>(?<= [Aa][Kk][Aa] ).+))?')
@@ -0,0 +1,23 @@
# coding=utf-8
from rarfile import RarFile as _RarFile, UNRAR_TOOL, ORIG_OPEN_ARGS as OPEN_ARGS, custom_popen, check_returncode,\
XTempFile
class RarFile(_RarFile):
def read(self, fname, psw=None):
"""
read specific content of rarfile without parsing
:param fname:
:param psw:
:return:
"""
cmd = [UNRAR_TOOL] + list(OPEN_ARGS)
with XTempFile(self._rarfile) as rf:
p = custom_popen(cmd + [rf, fname])
output = p.communicate()[0]
check_returncode(p, output)
return output