xo-JokeGen-NoAI / app.py
xyizko's picture
Update app.py
1ab143e verified
# x.com/xyizko
import gradio as gr
import asyncio
from jokeapi import Jokes
def jokerz():
"""Main function containing all sub-functions for fetching and displaying jokes."""
async def get_joke():
"""Fetch a random joke asynchronously from JokeAPI."""
j = await Jokes()
joke = await j.get_joke()
if isinstance(joke, list):
joke = joke[0]
return (
joke["joke"]
if joke["type"] == "single"
else f"{joke['setup']} - {joke['delivery']}"
)
def fetch_joke():
"""Handles sync & async cases without crashing."""
try:
return asyncio.run(get_joke())
except RuntimeError:
loop = asyncio.get_event_loop()
return loop.run_until_complete(get_joke())
def get_joke_response(message, history):
"""Handles incoming chat messages and returns a joke."""
return fetch_joke()
def run_interface():
"""Creates and returns the Gradio ChatInterface."""
return gr.ChatInterface(
get_joke_response,
type="messages",
title=" xyizko - Random Joke Generator 🤣",
description="Get random jokes from JokeAPI!",
)
jokeapp = run_interface()
jokeapp.launch()
if __name__ == "__main__":
jokerz()