File size: 2,051 Bytes
5546580 11ad260 740e062 72dd118 11ad260 2998219 e0461c3 11ad260 b56f69c c378b04 9650ea7 11ad260 d7fdc0e 11ad260 9650ea7 fad843f 1d604bd 2d3687c 96cd6d4 428e996 96cd6d4 740e062 fad843f 2d3687c 96cd6d4 740e062 fad843f 740e062 fad843f 740e062 fad843f 740e062 fad843f 740e062 fad843f 05a0741 fad843f 5546580 11ad260 5546580 dbb572b 5546580 dbb572b 740e062 dbb572b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
import discord
import os
import gradio as gr
import asyncio
import time #
from discord.ext import commands
from gradio_client import Client
from PIL import Image
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)
MAX_WORKERS = 5
worker_semaphore = asyncio.Semaphore(MAX_WORKERS)
async def jojo(ctx):
start_time = time.time()
style = 'JoJo'
atchurl = 'https://cdn.discordapp.com/attachments/1100458786826747945/1111746037640601610/image.png'
im = jojogan.predict(atchurl, style)
end_time = time.time()
generation_time = end_time - start_time
await ctx.send(f"jojo image generated in {generation_time:.2f} seconds.")
await ctx.send(file=discord.File(im))
async def process_requests(queue):
while True:
ctx = await queue.get()
async with worker_semaphore:
await jojo(ctx)
queue.task_done()
@bot.command()
async def command(ctx, num_requests: int):
start_time = time.time()
queue = asyncio.Queue()
# Start the worker tasks
worker_tasks = []
for _ in range(MAX_WORKERS):
task = asyncio.create_task(process_requests(queue))
worker_tasks.append(task)
# Add the requests to the queue
for _ in range(num_requests):
await queue.put(ctx)
# Wait for all requests to be processed
await queue.join()
# Cancel the worker tasks
for task in worker_tasks:
task.cancel()
await ctx.send("Command executed.")
end_time = time.time()
generation_time = end_time - start_time
await ctx.send(f"{style} everything done in {generation_time:.2f} seconds.")
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()
|