mirror of
https://github.com/SickGear/SickGear.git
synced 2024-11-27 23:23:38 +00:00
49 lines
1.2 KiB
Python
49 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
|