huggingbots / app.py
lunarflu's picture
lunarflu HF Staff
await asyncio.to_thread(jojogan.predict
75abc54
raw
history blame
2.75 kB
import discord
import os
import threading
import gradio as gr
import requests
import json
import random
import time
import re
from discord import Embed, Color
from discord.ext import commands
from gradio_client import Client
from PIL import Image
import asyncio
import shutil # for doing image movement magic
import concurrent.futures
DFIF_TOKEN = os.getenv('HF_TOKEN')
DISCORD_TOKEN = os.environ.get("GRADIOTEST_TOKEN", None)
jojogan = Client("akhaliq/JoJoGAN", DFIF_TOKEN)
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.command()
async def lunar(ctx):
await ctx.message.add_reaction('πŸ€–')
@bot.command()
async def jojo(ctx):
attachment = await discord_before(ctx)
if attachment:
asyncio.create_task(generation(ctx, attachment))
#await generation(ctx, attachment)
async def discord_before(ctx):
if ctx.message.attachments:
await asyncio.gather(
ctx.message.add_reaction('πŸ€–'),
ctx.message.add_reaction('βŒ›')
)
attachment = ctx.message.attachments[0]
return attachment
else:
await asyncio.gather(
ctx.send(f"{ctx.author.mention} No attachments to be found... Can't animify dat! Try sending me an image πŸ˜‰"),
ctx.message.add_reaction('❌')
)
return None
async def generation(ctx, attachment):
if attachment:
style = 'JoJo'
im = await asyncio.to_thread(jojogan.predict, attachment.url, style)
#im = jojogan.predict(attachment.url, style)
await asyncio.gather(
ctx.send(f'{ctx.author.mention} Here is the jojo version of it'),
ctx.send(file=discord.File(im)),
ctx.message.remove_reaction('βŒ›', bot.user),
ctx.message.add_reaction('βœ…')
)
#--------------------------------------------------------
def run_bot():
bot.run(DISCORD_TOKEN)
threading.Thread(target=run_bot).start()
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
#--------------------------------------------------------
'''
async def discord_after(ctx, im):
await asyncio.gather(
ctx.send(f'{ctx.author.mention} Here is the jojo version of it'),
ctx.send(file=discord.File(im)),
ctx.message.remove_reaction('βŒ›', bot.user),
ctx.message.add_reaction('βœ…')
)
'''
'''
def blocking_io():
#generate
#return image
async def main():
loop = asyncio.get_running_loop()
exeresult = await loop.run_in_executor(
None, blocking_io)
print('default thread pool', exeresult)
'''