From de5b5ab9c401cdfaac1a9c7adf6b30e6ed46a2d7 Mon Sep 17 00:00:00 2001 From: 4njru Date: Wed, 31 Jul 2024 14:12:10 -0400 Subject: [PATCH] The Bends album cover maker --- crimsobot/cogs/image.py | 13 +++++++++++ crimsobot/data/img/__init__.py | 1 + crimsobot/data/img/rules.yaml | 37 +++++++++++++++++++++++++++++++ crimsobot/data/img/the_bends.png | Bin 0 -> 19978 bytes crimsobot/utils/image.py | 24 ++++++++++++++++++++ 5 files changed, 75 insertions(+) create mode 100644 crimsobot/data/img/the_bends.png diff --git a/crimsobot/cogs/image.py b/crimsobot/cogs/image.py index 3ea89e90..283d7d6d 100644 --- a/crimsobot/cogs/image.py +++ b/crimsobot/cogs/image.py @@ -12,6 +12,7 @@ from crimsobot.data.img import ( AENIMA, AEROPLANE, + BENDS, CAPTION_RULES, CURRENTS, DAMN, @@ -195,6 +196,18 @@ async def aeroplane(self, ctx: commands.Context, image: Optional[str] = None) -> await self.get_image_and_embed(ctx, image, effect, None, title) + @commands.command() + async def bends(self, ctx: commands.Context, image: Optional[str] = None) -> None: + """Make a new cover for The Bends.""" + + effect = 'bends' + title = random.choice(BENDS) + + if image is None: + image = await self.get_previous_image(ctx) # will be a URL + + await self.get_image_and_embed(ctx, image, effect, None, title) + @commands.command(hidden=True) @commands.cooldown(1, 4 * 60 * 60, commands.BucketType.user) @shared_max_concurrency(eface_bucket) diff --git a/crimsobot/data/img/__init__.py b/crimsobot/data/img/__init__.py index 3029e211..90e026ae 100644 --- a/crimsobot/data/img/__init__.py +++ b/crimsobot/data/img/__init__.py @@ -23,6 +23,7 @@ AENIMA = _ruleset['aenima'] AEROPLANE = _ruleset['aeroplane'] +BENDS = _ruleset['bends'] CURRENTS = _ruleset['currents'] DAMN = _ruleset['damn'] LATERALUS = _ruleset['lateralus'] diff --git a/crimsobot/data/img/rules.yaml b/crimsobot/data/img/rules.yaml index 38759dc2..9a6c4bc3 100644 --- a/crimsobot/data/img/rules.yaml +++ b/crimsobot/data/img/rules.yaml @@ -115,6 +115,43 @@ aeroplane: - Blister, please, with those wings in your spine - Secret songs that you keep wrapped in boxes so tight - Your brains fell out through your teeth +bends: + - You can force it but it will not come + - You can crush it dry as a bone + - Everything is broken + - Where are you now when I need you? + - Baby's got the bends + - The planet is a gunboat in a sea of fear + - Don't leave me high, don't leave me dry + - You're turning into something you're not + - It's the best thing that you ever had + - And it wears him out + - She looks like the real thing + - A cracked polystyrene man who just crumbles and burns + - Pieces missing everywhere + - I used to fly like Peter Pan + - When you've got to feel it in your bones + - They love me like I was a brother + - But the sea would electrocute us all + - Nice dream + - Can't get the stink off + - Comes like a comet + - And teach you how to get to purest hell + - Suck, suck your teenage thumb + - My brain says I'm receiving pain + - The headshrinkers, they want everything + - Limb by limb and tooth by tooth + - Lead-fill the hold in me + - Wax me, mould me, heat the pins and stab them in + - What are we coming to? + - Blame it on the black star + - Troubled words of a troubled mind + - Each time it comes it eats me alive + - Disaffected and eager to please + - Sometimes you sulk, sometimes you burn + - Rows of houses, all bearing down on me + - I can feel their blue hands touching me + - I can feel death, can see its beady eyes currents: - All this running around - Just let it happen diff --git a/crimsobot/data/img/the_bends.png b/crimsobot/data/img/the_bends.png new file mode 100644 index 0000000000000000000000000000000000000000..7048092a07e5ef2e5d855f553f2bb9adf6fafd49 GIT binary patch literal 19978 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 literal 0 HcmV?d00001 diff --git a/crimsobot/utils/image.py b/crimsobot/utils/image.py index f9ec5413..4fc8b81c 100644 --- a/crimsobot/utils/image.py +++ b/crimsobot/utils/image.py @@ -455,6 +455,29 @@ def make_aeroplane_img(img: Image.Image, arg: None) -> Image.Image: return bg +def make_bends_img(img: Image.Image, arg: None) -> Image.Image: + # 1. determine user image size, resize to fit in its place + width, height = img.size + + # resize to album asset width (600 px) + ratio = width / 600 + + img = img.resize((int(width / ratio), int(height / ratio)), resample=Image.BICUBIC) + + # get new size + width, height = img.size + + # 2. paste input image over dark bg + bg = Image.new('RGBA', (width, height), (13, 16, 19, 255)) + bg.alpha_composite(img) + + # 3. paste wordmark over result (aligned/affixed to bottom) + with Image.open(c.clib_path_join('img', 'the_bends.png')) as wordmark: + bg.alpha_composite(wordmark, (0, height - 600)) + + return bg + + def make_captioned_img(img: Image.Image, caption_list: List[str]) -> Image.Image: """Captions an image!""" # 1. determine image size, resize to standardize text addition @@ -736,6 +759,7 @@ def process_lower_level(img: Image.Image, effect: str, arg: int) -> BytesIO: 'acid': make_acid_img, 'aenima': make_aenima_img, 'aeroplane': make_aeroplane_img, + 'bends': make_bends_img, 'caption': make_captioned_img, 'currents': make_currents_img, 'damn': make_damn_img,