dragon-bot/app/meme_gen.py

50 lines
1.7 KiB
Python

import os
import requests
import help_methods
supported_templates = sorted(list(map(lambda x: x['id'], requests.get('https://api.memegen.link/templates/').json())))
def parse_message(message):
if len(message.split()) <= 2:
return get_meme_help()
escaped_chars = {'_' : '__', ' ' : '_', '-' : '--', '?' : '~q', '%' : '~p', '#' : '~h', '/' : '~s', '\'\'' : '\"'}
# Unwrap message from discord
template = message.split()[1]
text = message.replace('!meme {}'.format(template), '').lstrip().split(',')
upper = text[0].split(';')[0].lstrip()
lower = text[0].split(';')[1].lstrip()
# Escape special characters in upper/lower text
for char, escaped in escaped_chars.items():
upper = upper.replace(char, escaped)
lower = lower.replace(char, escaped)
usesTemplate = True
if template.startswith('http'):
usesTemplate = False
elif template not in supported_templates:
return 'Template not supported!'
return get_meme_url(template, upper, lower, usesTemplate)
def get_meme_url(template, upper, lower, usesTemplate):
#TODO: Implement format as a parameter?
base_URL = 'https://memegen.link'
custom_URL = '{}/custom'.format(base_URL)
default_format = 'jpg'
# Generate meme url
meme = '{}/{}/{}.{}?alt={}'.format(custom_URL, upper, lower, default_format, template)
if usesTemplate:
meme = '{}/{}/{}/{}.{}'.format(base_URL, template, upper, lower, default_format)
return meme
def get_meme_help():
return "{}\nYou must supply a valid template for the meme. Templates are one of the following: \n```{}```".format(
help_methods.get_help_message('meme'),
', '.join(supported_templates)
)