Miscellaneous updates.
This commit is contained in:
parent
ab24374041
commit
bcac3d716e
4 changed files with 44 additions and 5 deletions
1
eval.py
1
eval.py
|
@ -1,4 +1,5 @@
|
||||||
import argparse
|
import argparse
|
||||||
|
import PIL.Image
|
||||||
import glob
|
import glob
|
||||||
import math
|
import math
|
||||||
import os
|
import os
|
||||||
|
|
39
q.py
39
q.py
|
@ -84,6 +84,7 @@ def handle_failure(file):
|
||||||
def override_extension_commands(extension, command):
|
def override_extension_commands(extension, command):
|
||||||
extension = extension.lower().strip('.')
|
extension = extension.lower().strip('.')
|
||||||
|
|
||||||
|
print(command)
|
||||||
if command:
|
if command:
|
||||||
command = [f'"{x}"' if ' ' in x else x for x in command]
|
command = [f'"{x}"' if ' ' in x else x for x in command]
|
||||||
command = ' '.join(command).strip()
|
command = ' '.join(command).strip()
|
||||||
|
@ -91,7 +92,7 @@ def override_extension_commands(extension, command):
|
||||||
command = qcommands.EXTENSION_COMMANDS[extension]
|
command = qcommands.EXTENSION_COMMANDS[extension]
|
||||||
|
|
||||||
qcommands.EXTENSION_COMMANDS.clear()
|
qcommands.EXTENSION_COMMANDS.clear()
|
||||||
qcommands.EXTENSION_COMMANDS[extension] = command
|
qcommands.EXTENSION_COMMANDS[extension] = (command, '{id}')
|
||||||
|
|
||||||
def parse_collaborate(collaborate):
|
def parse_collaborate(collaborate):
|
||||||
if collaborate is None:
|
if collaborate is None:
|
||||||
|
@ -237,10 +238,40 @@ def q_argparse(args):
|
||||||
@operatornotify.main_decorator(subject='q.py', notify_every_line=True)
|
@operatornotify.main_decorator(subject='q.py', notify_every_line=True)
|
||||||
@vlogging.main_decorator
|
@vlogging.main_decorator
|
||||||
def main(argv):
|
def main(argv):
|
||||||
parser = argparse.ArgumentParser(description=__doc__)
|
parser = argparse.ArgumentParser(description='''
|
||||||
|
This program is used to process so-called "queuefiles".
|
||||||
|
|
||||||
parser.add_argument('extension', nargs='?', default=None)
|
The queuefile is a file where the extension indicates what command
|
||||||
parser.add_argument('command', nargs='*', default=None)
|
should be used to handle it, and the command's argument is either the
|
||||||
|
file's name, or the content of the file.
|
||||||
|
|
||||||
|
If the queuefile is zero bytes, then the name of the file is the
|
||||||
|
argument to the command. If the file is non-empty, then the contents
|
||||||
|
are read as lines, and the command is invoked once for each line as
|
||||||
|
an argument.
|
||||||
|
|
||||||
|
For example, 0123456789a.youtube could be a zero-byte queuefile
|
||||||
|
that will be handled by youtube-dl to download the youtube video
|
||||||
|
with 0123456789a.
|
||||||
|
|
||||||
|
On the other hand, 012345789.wayback could be a queuefile that contains
|
||||||
|
an HTTP link inside, and the command will post it to web.archive.org.
|
||||||
|
''')
|
||||||
|
|
||||||
|
parser.add_argument(
|
||||||
|
'extension',
|
||||||
|
nargs='?',
|
||||||
|
default=None,
|
||||||
|
help='''
|
||||||
|
Process only queuefiles with this particular extension. Leave blank
|
||||||
|
to process all recognized extensions.
|
||||||
|
''',
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
'command',
|
||||||
|
nargs='*',
|
||||||
|
default=None,
|
||||||
|
)
|
||||||
parser.add_argument('--folders', nargs='*', default=None)
|
parser.add_argument('--folders', nargs='*', default=None)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--once',
|
'--once',
|
||||||
|
|
|
@ -3,6 +3,7 @@ import argparse
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from voussoirkit import betterhelp
|
from voussoirkit import betterhelp
|
||||||
|
from voussoirkit import imagetools
|
||||||
from voussoirkit import pathclass
|
from voussoirkit import pathclass
|
||||||
from voussoirkit import pipeable
|
from voussoirkit import pipeable
|
||||||
from voussoirkit import sentinel
|
from voussoirkit import sentinel
|
||||||
|
@ -17,6 +18,7 @@ def stitch_argparse(args):
|
||||||
patterns = pipeable.input_many(args.image_files, skip_blank=True, strip=True)
|
patterns = pipeable.input_many(args.image_files, skip_blank=True, strip=True)
|
||||||
files = pathclass.glob_many_files(patterns)
|
files = pathclass.glob_many_files(patterns)
|
||||||
images = [PIL.Image.open(file.absolute_path) for file in files]
|
images = [PIL.Image.open(file.absolute_path) for file in files]
|
||||||
|
images = [imagetools.rotate_by_exif(image)[0] for image in images]
|
||||||
|
|
||||||
if args.grid:
|
if args.grid:
|
||||||
(grid_x, grid_y) = [int(part) for part in args.grid.split('x')]
|
(grid_x, grid_y) = [int(part) for part in args.grid.split('x')]
|
||||||
|
@ -68,8 +70,12 @@ def stitch_argparse(args):
|
||||||
offset_y += row_heights[index_y]
|
offset_y += row_heights[index_y]
|
||||||
offset_y += args.gap
|
offset_y += args.gap
|
||||||
|
|
||||||
|
output_file = pathclass.Path(args.output)
|
||||||
|
if output_file.extension in {'jpg', 'jpeg'}:
|
||||||
|
final_image = final_image.convert('RGB')
|
||||||
|
|
||||||
log.info(args.output)
|
log.info(args.output)
|
||||||
final_image.save(args.output)
|
final_image.save(output_file.absolute_path)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
@vlogging.main_decorator
|
@vlogging.main_decorator
|
||||||
|
|
|
@ -121,6 +121,7 @@ def prepare_urls_filenames(urls, filename_format):
|
||||||
index=index,
|
index=index,
|
||||||
index1=index1,
|
index1=index1,
|
||||||
now=now,
|
now=now,
|
||||||
|
random=random.getrandbits(32),
|
||||||
)
|
)
|
||||||
|
|
||||||
if os.path.exists(filename):
|
if os.path.exists(filename):
|
||||||
|
|
Loading…
Reference in a new issue