from fastapi import FastAPI, Body import gradio as gr from build_dynamic_prompt import * from scripts.onebuttonprompt import subjects, artists, imagetypes def one_button_prompt_api(_: gr.Blocks, app: FastAPI): @app.get("/one_button_prompt/version") async def version(): return {"version": 1.0} @app.get("/one_button_prompt/config") async def get_config(): config ={ "subjects": subjects, "artists": artists, "imagetypes": imagetypes, } return config @app.post("/one_button_prompt/prompt/random") async def random_prompts(numberofprompts:int = Body(1,title="number of prompts"), insanitylevel: int= Body(5,title="insanity level"), forcesubject: str =Body('all',title="force subject"), artists : str =Body('all',title="artists"), imagetype : str =Body('all',title="image type"), onlyartists: bool =Body(False,title="only artists"), antivalues : str =Body('',title="anti values"), prefixprompt: str =Body('',title="prefix prompt"), suffixprompt: str =Body('',title="suffix prompt"), promptcompounderlevel: str =Body('1',title="prompt compounder level"), seperator: str =Body('comma',title="seperator"), givensubject: str =Body('',title="givensubject"), smartsubject:bool = Body(True,title='smart subject'), giventypeofimage: str = Body('',title='given type of image'), imagemodechance: int = Body(20,title='image mode chance'), gender: str = Body('all',title='gender'), subtypeobject: str = Body('all',title='subtypeobject'), subtypehumanoid: str = Body('all', title='subtypehumanoid'), subtypeconcept: str = Body('all', title='subtypeconcept'), advancedprompting:bool = Body(True,title='advancedprompting'), hardturnoffemojis:bool = Body(False,title='hardturnoffemojis') ): keys = ['insanitylevel', 'forcesubject', 'artists', 'imagetype', 'onlyartists', 'antivalues', 'prefixprompt', 'suffixprompt', 'promptcompounderlevel', 'seperator', 'givensubject', 'smartsubject', 'giventypeofimage', 'imagemodechance', 'gender', 'subtypeobject','subtypehumanoid','subtypeconcept','advancedprompting','hardturnoffemojis'] payload = {} for key in keys: payload[key] = locals()[key] prompts = [build_dynamic_prompt(**payload) for _ in range(numberofprompts)] return {"prompts": prompts} try: import modules.script_callbacks as script_callbacks script_callbacks.on_app_started(one_button_prompt_api) except: pass