Compare commits

...

7 commits

Author SHA1 Message Date
ebdac7c89d PEP 8 compliance. 2025-06-15 13:33:33 -04:00
2076e7341d PEP 8 compliance. 2025-06-15 13:31:32 -04:00
84b8c1b626 PEP 8 compliance. 2025-06-15 12:31:37 -04:00
66fd1bfe11 PEP 8 compliance. 2025-06-15 12:25:52 -04:00
dace0de99b PEP 8 compliance. 2025-06-15 12:23:32 -04:00
69ce445225 PEP 8 compliance. 2025-06-15 12:20:12 -04:00
80070e3a5e PEP 8 compliance. 2025-06-15 12:18:46 -04:00
7 changed files with 174 additions and 126 deletions

View file

@ -1,6 +1,7 @@
import dcc.config import dcc.config
import os import os
class List(dcc.config.Base): class List(dcc.config.Base):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super().get_parser(prog_name) parser = super().get_parser(prog_name)
@ -13,11 +14,22 @@ class List(dcc.config.Base):
case "pwads": case "pwads":
self.list(x.name for x in os.scandir(self.pwads) if x.is_dir()) self.list(x.name for x in os.scandir(self.pwads) if x.is_dir())
case "iwads": case "iwads":
self.list(x.name for x in os.scandir(self.iwads) if x.is_file()) self.list(
x.name for x in os.scandir(self.iwads)
if x.is_file()
)
case "demos": case "demos":
self.list(x.name for x in os.scandir(self.demos.joinpath(parsed_args.wad)) if x.name.endswith(".lmp")) self.list(
x.name for x in
os.scandir(self.demos.joinpath(parsed_args.wad))
if x.name.endswith(".lmp")
)
case "videos": case "videos":
self.list(x.name for x in os.scandir(self.fabricate.joinpath(parsed_args.wad)) if x.name.endswith(".mp4")) self.list(
x.name for x in
os.scandir(self.fabricate.joinpath(parsed_args.wad))
if x.name.endswith(".mp4")
)
case _: case _:
raise Exception(f"unknown target {parsed_args.target}") raise Exception(f"unknown target {parsed_args.target}")

View file

@ -3,6 +3,7 @@ import sys
from cliff.app import App from cliff.app import App
from cliff.commandmanager import CommandManager from cliff.commandmanager import CommandManager
class DCC(App): class DCC(App):
def __init__(self): def __init__(self):
super().__init__( super().__init__(
@ -21,9 +22,11 @@ class DCC(App):
def clean_up(self, cmd, result, err): def clean_up(self, cmd, result, err):
pass pass
def main(argv=sys.argv[1:]): def main(argv=sys.argv[1:]):
dcc = DCC() dcc = DCC()
return dcc.run(argv) return dcc.run(argv)
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())

View file

@ -2,6 +2,7 @@ import dcc.config
import dcc.doom_base import dcc.doom_base
import subprocess import subprocess
class PB(dcc.doom_base.WadMap): class PB(dcc.doom_base.WadMap):
def take_action(self, parsed_args): def take_action(self, parsed_args):
subprocess.run(["ffplay", self.video_path()]) subprocess.run(["ffplay", self.video_path()])

View file

@ -2,6 +2,7 @@ import boto3
import dcc.config import dcc.config
import dcc.doom_base import dcc.doom_base
class Put(dcc.doom_base.WadMap): class Put(dcc.doom_base.WadMap):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super().get_parser(prog_name) parser = super().get_parser(prog_name)
@ -13,5 +14,10 @@ class Put(dcc.doom_base.WadMap):
demo = self.demo_in_path() demo = self.demo_in_path()
bucket = self.target_bucket() bucket = self.target_bucket()
print("Uploading {} to bucket {}.".format(demo, bucket)) print("Uploading {} to bucket {}.".format(demo, bucket))
s3_client.upload_file(demo, 'yrriban', bucket, s3_client.upload_file(
ExtraArgs={'ContentType': 'binary/octet-stream', 'ACL': 'public-read'}) demo, 'yrriban', bucket,
ExtraArgs={
'ContentType': 'binary/octet-stream',
'ACL': 'public-read'
}
)

View file

@ -5,6 +5,7 @@ import sys
import wand.display import wand.display
import wand.image import wand.image
class SS(dcc.doom_base.WadMap): class SS(dcc.doom_base.WadMap):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super().get_parser(prog_name) parser = super().get_parser(prog_name)
@ -13,24 +14,39 @@ class SS(dcc.doom_base.WadMap):
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
def try_screenshot(): while not self._try_screenshot(parsed_args.gravity, parsed_args.yolo):
with wand.image.Image(width=dcc.config.THUMB_WIDTH, height=dcc.config.THUMB_HEIGHT, pseudo="x:") as img: pass
def _try_screenshot(self, gravity, yolo):
with wand.image.Image(
width=dcc.config.THUMB_WIDTH,
height=dcc.config.THUMB_HEIGHT,
pseudo="x:"
) as img:
img.reset_coords() img.reset_coords()
if img.size[0] < dcc.config.THUMB_WIDTH or img.size[1] < dcc.config.THUMB_HEIGHT: if (
if not messagebox.askretrycancel(title="DCC", message="Image too small. Try again?"): img.size[0] < dcc.config.THUMB_WIDTH
or img.size[1] < dcc.config.THUMB_HEIGHT
):
if not messagebox.askretrycancel(
title="DCC", message="Image too small. Try again?"
):
sys.exit("Gave up trying to select an image.") sys.exit("Gave up trying to select an image.")
return False return False
img.crop(width=dcc.config.THUMB_WIDTH,height=dcc.config.THUMB_HEIGHT,gravity=parsed_args.gravity) img.crop(
width=dcc.config.THUMB_WIDTH,
height=dcc.config.THUMB_HEIGHT,
gravity=gravity
)
img.reset_coords() img.reset_coords()
if not parsed_args.yolo: if not yolo:
wand.display.display(img) wand.display.display(img)
accepted = messagebox.askyesnocancel(title="DCC", message="Is this image acceptable?") accepted = messagebox.askyesnocancel(
title="DCC", message="Is this image acceptable?"
)
if accepted is None: if accepted is None:
sys.exit("Gave up on image verification") sys.exit("Gave up on image verification")
if not accepted: if not accepted:
return False return False
img.save(filename=self.base_thumb_path()) img.save(filename=self.base_thumb_path())
return True return True
while not try_screenshot():
pass

View file

@ -3,6 +3,7 @@ import sys
import wand.drawing import wand.drawing
import wand.image import wand.image
def draw_text(img, text, font_size=64): def draw_text(img, text, font_size=64):
with wand.drawing.Drawing() as draw: with wand.drawing.Drawing() as draw:
draw.font = dcc.config.FONT draw.font = dcc.config.FONT
@ -31,7 +32,10 @@ class Text(dcc.doom_base.WadMap):
if not parsed_args.nomap: if not parsed_args.nomap:
text = "MAP{}: {}".format(parsed_args.map, text) text = "MAP{}: {}".format(parsed_args.map, text)
text = "{}\n{}".format(text, parsed_args.demotype) text = "{}\n{}".format(text, parsed_args.demotype)
with wand.image.Image(height=dcc.config.THUMB_HEIGHT,width=dcc.config.THUMB_WIDTH) as img: with wand.image.Image(
height=dcc.config.THUMB_HEIGHT,
width=dcc.config.THUMB_WIDTH
) as img:
draw_text(img, text) draw_text(img, text)
img.trim() img.trim()
img.reset_coords() img.reset_coords()

View file

@ -3,6 +3,7 @@ import dcc.doom_base
import wand.color import wand.color
import wand.image import wand.image
class Thumb(dcc.doom_base.WadMap): class Thumb(dcc.doom_base.WadMap):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super().get_parser(prog_name) parser = super().get_parser(prog_name)
@ -13,7 +14,10 @@ class Thumb(dcc.doom_base.WadMap):
base = self.base_thumb_path() base = self.base_thumb_path()
text = self.text_thumb_path() text = self.text_thumb_path()
mdoom = self.m_doom_path() mdoom = self.m_doom_path()
with wand.image.Image(filename=base) as bi, wand.color.Color("transparent") as tc: with (
wand.image.Image(filename=base) as bi,
wand.color.Color("transparent") as tc
):
with wand.image.Image(filename=text) as ti: with wand.image.Image(filename=text) as ti:
ti.border(tc, 5, 5) ti.border(tc, 5, 5)
bi.composite(ti, gravity="south_west") bi.composite(ti, gravity="south_west")
@ -23,7 +27,9 @@ class Thumb(dcc.doom_base.WadMap):
bi.composite(mdi, gravity="north_west") bi.composite(mdi, gravity="north_west")
if parsed_args.index: if parsed_args.index:
with wand.image.Image(filename=self.output.joinpath("doomed_index.png")) as di: with wand.image.Image(
filename=self.output.joinpath("doomed_index.png")
) as di:
di.border(tc, 1, 1) di.border(tc, 1, 1)
bi.composite(di, gravity="north_east") bi.composite(di, gravity="north_east")