lobotmized goober and cleared out junk
This commit is contained in:
parent
b860d0e271
commit
8021d17d27
14 changed files with 19 additions and 1488 deletions
|
@ -56,7 +56,7 @@ latest_version = "0.0.0"
|
|||
local_version = "2.3.5"
|
||||
os.environ['gooberlocal_version'] = local_version
|
||||
REACT = os.getenv("REACT")
|
||||
if get_git_branch() == "dev":
|
||||
if get_git_branch() != "main":
|
||||
beta = True
|
||||
# this makes goober think its a beta version, so it will not update to the latest stable version or run any version checks
|
||||
else:
|
||||
|
|
|
@ -12,10 +12,6 @@ generated_sentences = set()
|
|||
|
||||
def load_font(size):
|
||||
return ImageFont.truetype("assets/fonts/Impact.ttf", size=size)
|
||||
|
||||
def load_tnr(size):
|
||||
return ImageFont.truetype("assets/fonts/TNR.ttf", size=size)
|
||||
|
||||
def draw_text_with_outline(draw, text, x, y, font):
|
||||
outline_offsets = [(-2, -2), (-2, 2), (2, -2), (2, 2), (0, -2), (0, 2), (-2, 0), (2, 0)]
|
||||
for ox, oy in outline_offsets:
|
||||
|
@ -115,63 +111,3 @@ async def gen_meme(input_image_path, sentence_size=5, max_attempts=10, custom_te
|
|||
draw_text_with_outline(draw, truncated, (width - text_width) / 2, 0, font)
|
||||
img.save(input_image_path)
|
||||
return input_image_path
|
||||
|
||||
async def gen_demotivator(input_image_path, max_attempts=5):
|
||||
markov_model = load_markov_model()
|
||||
if not markov_model or not os.path.isfile(input_image_path):
|
||||
return None
|
||||
|
||||
attempt = 0
|
||||
while attempt < max_attempts:
|
||||
with Image.open(input_image_path).convert("RGB") as img:
|
||||
size = max(img.width, img.height)
|
||||
frame_thick = int(size * 0.0054)
|
||||
inner_size = size - 2 * frame_thick
|
||||
resized_img = img.resize((inner_size, inner_size), Image.LANCZOS)
|
||||
framed = Image.new("RGB", (size, size), "white")
|
||||
framed.paste(resized_img, (frame_thick, frame_thick))
|
||||
landscape_w = int(size * 1.5)
|
||||
caption_h = int(size * 0.3)
|
||||
canvas_h = framed.height + caption_h
|
||||
canvas = Image.new("RGB", (landscape_w, canvas_h), "black")
|
||||
# the above logic didnt even work, fml
|
||||
fx = (landscape_w - framed.width) // 2
|
||||
canvas.paste(framed, (fx, 0))
|
||||
|
||||
draw = ImageDraw.Draw(canvas)
|
||||
|
||||
title = subtitle = None
|
||||
for _ in range(20):
|
||||
t = markov_model.make_sentence(tries=100, max_words=4)
|
||||
s = markov_model.make_sentence(tries=100, max_words=5)
|
||||
if t and s and t != s:
|
||||
title = t.upper()
|
||||
subtitle = s.capitalize()
|
||||
break
|
||||
if not title: title = "DEMOTIVATOR"
|
||||
if not subtitle: subtitle = "no text generated"
|
||||
|
||||
title_sz = int(caption_h * 0.4)
|
||||
sub_sz = int(caption_h * 0.25)
|
||||
title_font = load_tnr(title_sz)
|
||||
sub_font = load_tnr(sub_sz)
|
||||
|
||||
bbox = draw.textbbox((0, 0), title, font=title_font)
|
||||
txw, txh = bbox[2] - bbox[0], bbox[3] - bbox[1]
|
||||
tx = (landscape_w - txw) // 2
|
||||
ty = framed.height + int(caption_h * 0.1)
|
||||
draw_text_with_outline(draw, title, tx, ty, title_font)
|
||||
|
||||
bbox = draw.textbbox((0, 0), subtitle, font=sub_font)
|
||||
sxw, sxh = bbox[2] - bbox[0], bbox[3] - bbox[1]
|
||||
sx = (landscape_w - sxw) // 2
|
||||
sy = ty + txh + int(caption_h * 0.05)
|
||||
for ox, oy in [(-1, -1), (1, -1), (-1, 1), (1, 1)]:
|
||||
draw.text((sx + ox, sy + oy), subtitle, font=sub_font, fill="black")
|
||||
draw.text((sx, sy), subtitle, font=sub_font, fill="#AAAAAA")
|
||||
|
||||
canvas.save(input_image_path)
|
||||
return input_image_path
|
||||
|
||||
attempt += 1
|
||||
return None
|
||||
|
|
|
@ -6,7 +6,7 @@ from modules.globalvars import *
|
|||
from modules.volta.main import _
|
||||
import logging
|
||||
logger = logging.getLogger("goober")
|
||||
# Get file size and line count for a given file path
|
||||
|
||||
def get_file_info(file_path):
|
||||
try:
|
||||
file_size = os.path.getsize(file_path)
|
||||
|
@ -15,12 +15,8 @@ def get_file_info(file_path):
|
|||
return {"file_size_bytes": file_size, "line_count": len(lines)}
|
||||
except Exception as e:
|
||||
return {"error": str(e)}
|
||||
|
||||
# Load memory data from file, or use default dataset if not loaded yet
|
||||
def load_memory():
|
||||
data = []
|
||||
|
||||
# Try to load data from MEMORY_FILE
|
||||
try:
|
||||
with open(MEMORY_FILE, "r") as f:
|
||||
data = json.load(f)
|
||||
|
@ -28,12 +24,9 @@ def load_memory():
|
|||
pass
|
||||
|
||||
return data
|
||||
|
||||
# Save memory data to MEMORY_FILE
|
||||
def save_memory(memory):
|
||||
with open(MEMORY_FILE, "w") as f:
|
||||
json.dump(memory, f, indent=4)
|
||||
|
||||
def train_markov_model(memory, additional_data=None):
|
||||
if not memory:
|
||||
return None
|
||||
|
@ -45,14 +38,9 @@ def train_markov_model(memory, additional_data=None):
|
|||
text = "\n".join(filtered_memory)
|
||||
model = markovify.NewlineText(text, state_size=2)
|
||||
return model
|
||||
|
||||
# Save the Markov model to a pickle file
|
||||
def save_markov_model(model, filename='markov_model.pkl'):
|
||||
with open(filename, 'wb') as f:
|
||||
pickle.dump(model, f)
|
||||
logger.info(f"Markov model saved to {filename}.")
|
||||
|
||||
# Load the Markov model from a pickle file
|
||||
def load_markov_model(filename='markov_model.pkl'):
|
||||
try:
|
||||
with open(filename, 'rb') as f:
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
import random
|
||||
import discord
|
||||
from discord import ui, Interaction, TextStyle
|
||||
from discord.ext import commands
|
||||
import aiohttp
|
||||
import asyncio
|
||||
from modules.globalvars import bot
|
||||
from modules.volta.main import _
|
||||
|
||||
# @bot.hybrid_command(description=_('minigames_guess_the_number'))
|
||||
async def guessthenumber(ctx: commands.Context):
|
||||
number = random.randint(1, 10)
|
||||
class GuessModal(ui.Modal, title=_('minigames_guess_the_number')):
|
||||
guess = ui.TextInput(label=_('minigames_your_guess'), style=TextStyle.short)
|
||||
async def on_submit(self, interaction: Interaction):
|
||||
try:
|
||||
user_guess = int(self.guess.value)
|
||||
except:
|
||||
await interaction.response.send_message(_('minigames_invalid_number'), ephemeral=True)
|
||||
return
|
||||
if user_guess == number:
|
||||
await interaction.response.send_message(_('minigames_correct'), ephemeral=True)
|
||||
else:
|
||||
await interaction.response.send_message(f"{_('minigames_wrong_number')} {number}.", ephemeral=True)
|
||||
async def button_callback(interaction: Interaction):
|
||||
await interaction.response.send_modal(GuessModal())
|
||||
button = ui.Button(label=_('minigames_guess_button'), style=discord.ButtonStyle.primary)
|
||||
button.callback = button_callback
|
||||
view = ui.View()
|
||||
view.add_item(button)
|
||||
await ctx.send(_('minigames_click_to_guess'), view=view)
|
||||
|
||||
# @bot.hybrid_command(description=_('minigames_hangman')) nope nope nope fuck no nope no thanks no nuh uh not today nope
|
||||
async def hangman(ctx: commands.Context):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get("https://random-word-api.herokuapp.com/word?number=1") as resp:
|
||||
if resp.status != 200:
|
||||
await ctx.send("Failed to get a random word.")
|
||||
return
|
||||
data = await resp.json()
|
||||
word = data[0].lower()
|
||||
print(word)
|
||||
guessed_letters = set()
|
||||
wrong_guesses = 0
|
||||
max_wrong = 6
|
||||
def display_word():
|
||||
return " ".join([c if c in guessed_letters else "_" for c in word])
|
||||
class GuessModal(ui.Modal, title=_('minigames_hangman_guess')):
|
||||
letter = ui.TextInput(label=_('minigames_hangman_user_letter_guess'), style=TextStyle.short, max_length=1)
|
||||
async def on_submit(self, interaction: Interaction):
|
||||
nonlocal guessed_letters, wrong_guesses
|
||||
guess = self.letter.value.lower()
|
||||
if guess in guessed_letters:
|
||||
await interaction.response.send_message(f"{_('minigames_hangman_already_guessed')}'{guess}'!", ephemeral=True)
|
||||
return
|
||||
guessed_letters.add(guess)
|
||||
if guess not in word:
|
||||
wrong_guesses += 1
|
||||
if all(c in guessed_letters for c in word):
|
||||
await interaction.response.edit_message(content=f"{_('minigames_hangman_won')} **{word}**", view=None)
|
||||
elif wrong_guesses >= max_wrong:
|
||||
await interaction.response.edit_message(content=f"{_('minigames_hangman_lost')} **{word}**", view=None)
|
||||
else:
|
||||
await interaction.response.edit_message(content=_('minigames_hangman_game').format(display_word=display_word(),wrong_guesses=wrong_guesses,max_wrong=max_wrong), view=view)
|
||||
async def button_callback(interaction: Interaction):
|
||||
await interaction.response.send_modal(GuessModal())
|
||||
button = ui.Button(label=_('minigames_click_to_guess'), style=discord.ButtonStyle.primary)
|
||||
button.callback = button_callback
|
||||
view = ui.View()
|
||||
view.add_item(button)
|
||||
await ctx.send(_('minigames_hangman_game').format(display_word=display_word,wrong_guesses=wrong_guesses,max_wrong=max_wrong), view=view)
|
|
@ -28,8 +28,7 @@ def check_for_model():
|
|||
logger.info("Model is installed.")
|
||||
else:
|
||||
logger.info("Model is not installed.")
|
||||
|
||||
|
||||
|
||||
def iscloned():
|
||||
if os.path.exists(".git"):
|
||||
return True
|
||||
|
|
|
@ -6,18 +6,14 @@ from modules.volta.main import _
|
|||
|
||||
def handle_exception(exc_type, exc_value, exc_traceback, *, context=None):
|
||||
os.system('cls' if os.name == 'nt' else 'clear')
|
||||
|
||||
if issubclass(exc_type, KeyboardInterrupt):
|
||||
sys.__excepthook__(exc_type, exc_value, exc_traceback)
|
||||
return
|
||||
|
||||
print(splashtext)
|
||||
print(f"{RED}=====BEGINNING OF TRACEBACK====={RESET}")
|
||||
traceback.print_exception(exc_type, exc_value, exc_traceback)
|
||||
print(f"{RED}========END OF TRACEBACK========{RESET}")
|
||||
print(f"{RED}{_('unhandled_exception')}{RESET}")
|
||||
|
||||
|
||||
if context:
|
||||
print(f"{RED}Context: {context}{RESET}")
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ def is_remote_ahead(branch='main', remote='origin'):
|
|||
count = run_cmd(f'git rev-list --count HEAD..{remote}/{branch}')
|
||||
return int(count) > 0
|
||||
|
||||
# Automatically update the local repository if the remote is ahead
|
||||
def auto_update(branch='main', remote='origin'):
|
||||
if launched == True:
|
||||
print(_("already_started"))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue