from PIL import Image import glob import gradio as gr import warnings import io import pandas as pd import replicate import json import requests import os from datetime import date import secrets import string import b2sdk.v2 as b2 #Backblaze img2img upload bucket import os import requests from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) ## Backclaze info = b2.InMemoryAccountInfo() b2_api = b2.B2Api(info) application_key_id = os.getenv("BB_KeyID") application_key = os.getenv("BB_AppKey") #print(application_key_id,application_key) b2_api.authorize_account("production", application_key_id, application_key) BB_bucket_name=os.getenv("BB_bucket") BB_bucket=b2_api.get_bucket_by_name(os.getenv("BB_bucket")) BB_defurl=os.getenv("BB_defurl") def BB_uploadfile(local_file,file_name,b2_api=b2_api,BB_bucket_name=BB_bucket_name,FRIENDLY_URL=True): metadata = {"key": "value"} uploaded_file = BB_bucket.upload_local_file( local_file=local_file, file_name=file_name, file_infos=metadata, ) img_url=b2_api.get_download_url_for_fileid(uploaded_file.id_) if FRIENDLY_URL: #Get friendly URP img_url=BB_defurl+"/file/"+BB_bucket_name+"/"+file_name print("backblaze", img_url) return img_url #deepL api def DeepL(text,source_lang="JA",target_lang="EN",API_KEY= os.getenv("DEEPL_Key")): # パラメータの指定 params = { 'auth_key' : API_KEY, 'text' : text, 'source_lang' : source_lang, # 翻訳対象の言語 "target_lang": target_lang # 翻訳後の言語 } # リクエストを投げる request = requests.post("https://api-free.deepl.com/v2/translate", data=params) # URIは有償版, 無償版で異なるため要注意 result = request.json() return result["translations"][0]["text"] ##Email client import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.utils import formatdate def send_email(image_path, recipient_email,prompt=None,email=os.getenv("email"),pw=os.getenv("email_pw")): sender_email = email password = pw msg = MIMEMultipart() msg['From'] = sender_email msg['To'] = recipient_email msg['Subject'] =f"「Saiseisei Generated Image」: {os.path.basename(image_path)}" msg['Date'] = formatdate() # Attach prompt Text=f""" 再生成のワークショップをご参加ありがとうございました 生成したAI画像はこのメールに添付しました。 -- file name: {os.path.basename(image_path)} prompt: {prompt} -- 再生成について最も知りたいなら、IGで@pp_yokoと@jarvis_labsを連絡してください https://www.instagram.com/jarvis_labs/ https://www.instagram.com/pp_yoko/ -- そして、SNSで画像を共有したいなら、ぜひしてお願いいたします よろしくお願いいたします。 Jarvis """ msg.attach(MIMEText(Text, 'plain', 'utf-8')) # Attach the image with open(image_path, 'rb') as f: img = MIMEImage(f.read()) msg.attach(img) server = smtplib.SMTP('smtp.gmail.com', 587) #smtp_server = "smtp.gmail.com" Google server.ehlo() server.starttls() server.ehlo() server.login(sender_email, password) server.send_message(msg) server.quit() #Other def random_str(n=8): # Define the characters to choose from characters = string.ascii_letters + string.digits # Generate the unreplicable string of length 8 unreplicable_string = ''.join(secrets.choice(characters) for _ in range(n)) return unreplicable_string #Replicate img gen base_model="lucataco/sdxl:c86579ac5193bf45422f1c8b92742135aa859b1850a8e4c531bff222fc75273d" img_loc="./Tiles/" example_data=[] example_data.append({"img":img_loc+"4tile_20240115.png","promt":"Green garden with a water water fountain and a river","ps":0.6}) example_data.append({"img":img_loc+"Tile_20240123_1.jpg","promt": "Outer space dust cloud","ps":0.6}) example_data.append({"img":img_loc+"Tile_20240404.JPG","promt": "Volcano","ps":0.6}) example_data.append({"img":img_loc+"Tile_20240421_1.jpg","promt": "Outer space dust cloud with a small ship flying through","ps":0.6}) #"jarvissan22/kawasehasui_backgrounds:a4bb8bb1beb503b02c93789381544097dcb70afc92c512ea1500e70ccf704bc4" def Gen_image(prompt,img=None,ps=0.7,lr=0.8,model=base_model,save_loc="",w=1024,h=1024): input={ "width": w, "height": h, "prompt": prompt, "refine": "no_refiner", "scheduler": "K_EULER", "lora_scale": lr, "num_outputs": 1, "guidance_scale": 7.5, "apply_watermark": True, "high_noise_frac": 0.8, "negative_prompt": "", "prompt_strength": ps, "num_inference_steps": 50 } if img: #Upload image to backblaze img_url=BB_uploadfile(img,os.path.basename(img)) input["image"]=img_url #Gen image output = replicate.run( model, input=input, ) #Get image img_url=output[0] r=requests.get(img_url) image = Image.open(io.BytesIO(r.content)) #Save image file_saveloc=os.path.join(save_loc,f"GenImage_{date.today().strftime('%Y-%m-%d')}_{random_str()}.jpg") image.save(file_saveloc) #Upload image to backblaze _=BB_uploadfile(file_saveloc,os.path.basename(file_saveloc)) return image,file_saveloc