import gradio as gr import diff import os from PIL import Image import uuid import random import bg from rembg import remove as rm import datetime from huggingface_hub import (HfApi) import uuid import json import requests uid=uuid.uuid4() proc1=diff proc2=diff save_data='https://huggingface.co/datasets/Omnibus/game-data-1/raw/main/' token_self = os.environ['HF_TOKEN'] api=HfApi(token=token_self) #bg1=gr.Interface.load("spaces/Omnibus/fast-bg-remove-mod") #proc2=gr.Interface.load("spaces/Omnibus/fast-diff") sky = "https://huggingface.co/spaces/Omnibus/game-test/resolve/main/assets/sky.png" platform = 'https://huggingface.co/spaces/Omnibus/game-test/resolve/main/assets/platform.png' star = 'https://huggingface.co/spaces/Omnibus/game-test/resolve/main/assets/star.png' bomb = 'https://huggingface.co/spaces/Omnibus/game-test/resolve/main/assets/bomb.png' dude = 'https://huggingface.co/spaces/Omnibus/game-test/resolve/main/assets/dude.png' def game_fn(sky=sky,star=star,bomb=bomb,platform=platform,dude=dude): html_mod=f"""
""" return html_mod def update_game(inp): return game_fn(sky=sky) def sky_fn(inp): rand = random.randint(1,200) for i in range(rand): inp+=" " uid=uuid.uuid4() output=proc1.send_it(inp,5,1) print(output) outp=Image.open(output[0]) width, height = outp.size rat = width/height if width > height: outp = outp.resize((600*rat,600)) elif width < height: outp = outp.resize((800,800*rat)) else: outp = outp.resize((800,536)) outp.save(f"{uid}_sky.png") out = os.path.abspath(f"{uid}_sky.png") #out = os.path.abspath(outp) out_url = f'https://omnibus-game-test.hf.space/file={out}' return output[0],out_url def star_fn(inp): rand = random.randint(1,200) for i in range(rand): inp+=" " uid=uuid.uuid4() output=proc2.send_it(inp,5,1) outp=Image.open(output[0]) out=rm(outp) outrs = out.resize((36,36)) outrs.save(f"{uid}_star.png") out_file = os.path.abspath(f"{uid}_star.png") out_url = f'https://omnibus-game-test.hf.space/file={out_file}' return out,out_url def enemy_fn(inp): rand = random.randint(1,200) for i in range(rand): inp+=" " uid=uuid.uuid4() output=proc2.send_it(inp,5,1) outp=Image.open(output[0]) out=rm(outp) outrs = out.resize((24,24)) outrs.save(f"{uid}_enemy.png") out_file = os.path.abspath(f"{uid}_enemy.png") out_url = f'https://omnibus-game-test.hf.space/file={out_file}' return out,out_url def save_game(background_img,star_img,enemy_img,platform_img,dude_img): user_repo=save_data.split('datasets/',1)[1].split('/raw',1)[0] out_lod=[] try: r = requests.get(f'{save_data}game_data.json') lod = json.loads(r.text) out_lod.append(lod) print (out_lod) except: pass timestamp=str(datetime.datetime.now()) timename=timestamp.replace(" ","--").replace(":","-").replace(".","-") print(timestamp) try: api.upload_file( path_or_fileobj=background_img, path_in_repo=f"{save_data.split('main/',1)[1]}/images/background/{timename}-background_img.png", repo_id=save_data.split('datasets/',1)[1].split('/raw',1)[0], token=token_self, repo_type="dataset", ) except Exception as e: print (e) pass try: api.upload_file( path_or_fileobj=star_img, path_in_repo=f"{save_data.split('main/',1)[1]}/images/star/{timename}-star_img.png", repo_id=save_data.split('datasets/',1)[1].split('/raw',1)[0], token=token_self, repo_type="dataset", ) except Exception as e: print (e) pass try: api.upload_file( path_or_fileobj=enemy_img, path_in_repo=f"{save_data.split('main/',1)[1]}/images/enemy/{timename}-enemy_img.png", repo_id=save_data.split('datasets/',1)[1].split('/raw',1)[0], token=token_self, repo_type="dataset", ) except Exception as e: print (e) pass block = {'index': len(out_lod) + 1, 'timestamp': timestamp, 'background_url': f'https://huggingface.co/datasets/{user_repo}/resolve/main/images/background/{timename}-background_img.png', 'star_url': f'https://huggingface.co/datasets/{user_repo}/resolve/main/images/star/{timename}-star_img.png', 'enemy_url': f'https://huggingface.co/datasets/{user_repo}/resolve/main/images/enemy/{timename}-enemy_img.png', #'platform_url': f'https://huggingface.co/datasets/{repo}/{space}/raw/main/{platform_img}', #'dude_url': f'https://huggingface.co/datasets/{repo}/{space}/raw/main/{dude_img}', } print(block) out_lod.append(block) json_object = json.dumps(out_lod, indent=4) with open("tmp1.json", "w") as outfile: outfile.write(json_object) try: api.upload_file( path_or_fileobj="tmp1.json", path_in_repo=f"{save_data.split('main/',1)[1]}/game_data.json", repo_id=save_data.split('datasets/',1)[1].split('/raw',1)[0], token=token_self, repo_type="dataset", ) os.remove("tmp1.json") print("success") except Exception as e: print (e) pass score_js=""" function(text_input,url_params) { console.log(text_input, url_params); const iframe = document.getElementById("myIframe").contentWindow.document.getElementById('my_score'); text_input = Object.fromEntries(iframe); console.log(text_input); return [text_input,url_params]; } """ with gr.Blocks() as app: with gr.Row(): with gr.Column(): prompt_sky=gr.Textbox(label="Background",value="beautiful landscape, real, 8k") btn_sky=gr.Button("Make") out_im_sky=gr.Image(type='filepath') out_sky_url=gr.Textbox(visible=False) with gr.Column(): prompt_star=gr.Textbox(label="Star",value="Colorful Star, blank background") btn_star=gr.Button("Make") out_im_star=gr.Image(type='filepath') out_star_url=gr.Textbox(visible=False) with gr.Column(): prompt_enemy=gr.Textbox(label="Enemy",value="Ball on fire, blank background") btn_enemy=gr.Button("Make") out_im_enemy=gr.Image(type='filepath') out_enemy_url=gr.Textbox(visible=False) gr.Column() gr.Column() with gr.Row(): update_game=gr.Button("Make Game") #start_prompt=gr.Textbox(value="beautiful landscape, real, 8k",visible=False) html_game = gr.HTML() save_btn=gr.Button("Save") get_score=gr.Button("Get Score") with gr.Row(): text_input=gr.Textbox() url_params=gr.Textbox() def return_score(text, url_params): '''if url_params.get('url') ==check_acc: out = gr.update(visible=True) else: out=gr.update(visible=False) #out=gr.HTML.update("""""")''' return ["" + text + "", url_params] get_score.click(return_score,text_input,text_input,_js=score_js) save_btn.click(save_game,[out_im_sky,out_im_star,out_im_enemy,out_im_enemy,out_im_enemy],None) update_game.click(game_fn,[out_sky_url,out_star_url,out_enemy_url],html_game) btn_sky.click(sky_fn,prompt_sky,[out_im_sky,out_sky_url]) btn_star.click(star_fn,prompt_star,[out_im_star,out_star_url]) btn_enemy.click(enemy_fn,prompt_enemy,[out_im_enemy,out_enemy_url]) #app.load(sky_fn,prompt_sky,[out_im_sky,out_sky_url]).then(game_fn,[out_sky_url],html_game) app.queue(concurrency_count=10).launch()