mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-22 04:45:05 +00:00
e56303798c
Initial SickGear for Python 3.
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
from hachoir.stream import FileOutputStream, StreamError
|
|
from hachoir.core.error import error
|
|
from errno import EEXIST
|
|
from os import mkdir, path
|
|
|
|
|
|
class Output:
|
|
"""
|
|
Store files found by search tool.
|
|
"""
|
|
|
|
def __init__(self, directory):
|
|
self.directory = directory
|
|
self.mkdir = False
|
|
self.file_id = 1
|
|
|
|
def createDirectory(self):
|
|
try:
|
|
mkdir(self.directory)
|
|
except OSError as err:
|
|
if err.errno == EEXIST:
|
|
pass
|
|
else:
|
|
raise
|
|
|
|
def createFilename(self, file_ext=None):
|
|
filename = "file-%04u" % self.file_id
|
|
self.file_id += 1
|
|
if file_ext:
|
|
filename += file_ext
|
|
return filename
|
|
|
|
def writeFile(self, filename, stream, offset, size):
|
|
# Create directory (only on first call)
|
|
if not self.mkdir:
|
|
self.createDirectory()
|
|
self.mkdir = True
|
|
|
|
# Create output file
|
|
filename = path.join(self.directory, filename)
|
|
output = FileOutputStream(filename)
|
|
|
|
# Write output
|
|
try:
|
|
output.copyBytesFrom(stream, offset, size // 8)
|
|
except StreamError as err:
|
|
error("copyBytesFrom() error: %s" % err)
|
|
return filename
|