core: add own RarFile.read implementation; hopefully fixes #311
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user