JarvisLabs's picture
Update utils.py
9217efd verified
raw
history blame
No virus
5.53 kB
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