mirror of
https://github.com/SickGear/SickGear.git
synced 2024-12-01 00:43:37 +00:00
820594505b
Allow episode status "Skipped" to be changed to "Downloaded". Allow found "Skipped" episode files to be set "Unknown" quality.
38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
from hachoir_core.i18n import getTerminalCharset, guessBytesCharset, _
|
|
from hachoir_core.stream import InputIOStream, InputSubStream, InputStreamError
|
|
|
|
def FileInputStream(filename, real_filename=None, **args):
|
|
"""
|
|
Create an input stream of a file. filename must be unicode.
|
|
|
|
real_filename is an optional argument used to specify the real filename,
|
|
its type can be 'str' or 'unicode'. Use real_filename when you are
|
|
not able to convert filename to real unicode string (ie. you have to
|
|
use unicode(name, 'replace') or unicode(name, 'ignore')).
|
|
"""
|
|
# assert isinstance(filename, unicode)
|
|
if not real_filename:
|
|
real_filename = filename
|
|
try:
|
|
inputio = open(real_filename, 'rb')
|
|
except IOError, err:
|
|
charset = getTerminalCharset()
|
|
errmsg = unicode(str(err), charset)
|
|
raise InputStreamError(_("Unable to open file %s: %s") % (filename, errmsg))
|
|
source = "file:" + filename
|
|
offset = args.pop("offset", 0)
|
|
size = args.pop("size", None)
|
|
if offset or size:
|
|
if size:
|
|
size = 8 * size
|
|
stream = InputIOStream(inputio, source=source, **args)
|
|
return InputSubStream(stream, 8 * offset, size, **args)
|
|
else:
|
|
args.setdefault("tags",[]).append(("filename", filename))
|
|
return InputIOStream(inputio, source=source, **args)
|
|
|
|
def guessStreamCharset(stream, address, size, default=None):
|
|
size = min(size, 1024*8)
|
|
bytes = stream.readBytes(address, size//8)
|
|
return guessBytesCharset(bytes, default)
|
|
|