diff --git a/scritcher/executer.py b/scritcher/executer.py index 2b3a8a1..a0b2ba4 100644 --- a/scritcher/executer.py +++ b/scritcher/executer.py @@ -1,64 +1,19 @@ -import os +import sys import shlex -import tempfile -import shutil - -from pathlib import Path -from PIL import Image - from .utils import load_file_path from .error import InterpreterError -from .image import GlitchImage class Interpreter: """Interpreter for scritcher instructions/statements.""" def __init__(self): - self.orig_path = None - self.img = None + self.loaded_path = None def _cmd_noop(self): pass def _cmd_load(self, loadpath: str): - source_path = load_file_path(loadpath) - self.orig_path = source_path - - # create a temporary file to hold bmp data - handle, bmp_path = tempfile.mkstemp('.bmp') - os.close(handle) - - self.img = GlitchImage(source_path, Path(bmp_path)) - self.img.load() - - def _cmd_quicksave(self): - suffix = self.img.original.suffix - name = self.img.original.name.replace(suffix, '') - parent_folder = self.orig_path.parents[0] - - # we need to search all files that match the pattern NAME_g* - # then we save on the one _g suffix above it. - - # e.g if the original path is "miya.png", we want to search for - # files named "miya_g1.raw", "miya_g2.raw", and then we want to write - # on "miya_g3.raw". - index = 0 - for glitched_out in parent_folder.glob(f'{name}_g*'): - try: - idx = int(glitched_out.name.strip(name + '_g')[0]) - - # glob() doesnt seem to show a stable order. anyways, we can - # just only update our index when its the maximum found - if idx > index: - index = idx - except (IndexError, ValueError): - continue - - # create our next glitched path - out_path = shutil.copyfile( - self.img.path, parent_folder / f'{name}_g{index + 1}.raw') - print('saved to', out_path) - + path = load_file_path(loadpath) def run(self, line: str): """Run a single line.""" @@ -67,7 +22,7 @@ class Interpreter: args = shlex.split(line) command = args[0] - if command != 'load' and self.img is None: + if command != 'load' and self.loaded_path is None: print('warn: no file loaded.') try: diff --git a/scritcher/image.py b/scritcher/image.py deleted file mode 100644 index 8a16764..0000000 --- a/scritcher/image.py +++ /dev/null @@ -1,17 +0,0 @@ -import logging -from PIL import Image - -log = logging.getLogger(__name__) - -class GlitchImage: - """A wrapper class around PIL.Image""" - def __init__(self, orig_path, target_path): - self.original = orig_path - self.path = target_path - - def load(self): - """Load the given image, convert it to BMP, and write it on the - given target path.""" - log.info('opening %r into %r', self.original, self.path) - img = Image.open(self.original) - img.save(self.path, 'BMP') diff --git a/scritcher/main.py b/scritcher/main.py index 572c068..33a082a 100644 --- a/scritcher/main.py +++ b/scritcher/main.py @@ -1,12 +1,9 @@ import sys -import logging from pathlib import Path from .executer import Interpreter from .error import InterpreterError -logging.basicConfig(level=logging.DEBUG) - def main(): try: scri_path = Path(sys.argv[1]).resolve() diff --git a/scritcher/utils.py b/scritcher/utils.py index fe5d775..64554bb 100644 --- a/scritcher/utils.py +++ b/scritcher/utils.py @@ -1,6 +1,5 @@ import sys from pathlib import Path - from .error import InterpreterError def load_file_path(arg: str) -> Path: