sd-webui-discord-ex/scripts/base.py

85 lines
2.7 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

'''
Author: SpenserCai
Date: 2023-08-23 23:12:27
version:
LastEditors: SpenserCai
LastEditTime: 2023-08-24 11:36:53
Description: file content
'''
import os
import modules.scripts as scripts
import requests
import sys
import tarfile
import shutil
bin_path = None
api_url = "https://api.github.com/repos/SpenserCai/sd-webui-discord/releases/latest"
def init_base():
global bin_path
bin_path = os.path.join(get_my_dir(), "bin")
def get_bin_path():
return os.path.join(get_my_dir(), "bin")
def get_bin_process_path():
if sys.platform == "win32":
return os.path.join(bin_path, "sd-webui-discord.exe")
elif sys.platform == "linux":
return os.path.join(bin_path, "sd-webui-discord")
def get_my_dir():
if os.path.isdir("extensions/sd-webui-discord-ex"):
return "extensions/sd-webui-discord-ex"
return scripts.basedir()
def check_bin():
print(bin_path)
if os.path.isfile(get_bin_process_path()):
return True
return False
def need_update():
response = requests.get(api_url)
data = response.json()
tag_name = data["tag_name"]
with open(os.path.join(bin_path, ".version"), "r") as file:
version = file.read()
# version 去掉头尾空格换行符
version = version.strip()
if tag_name == version:
return False
return True
def download_bin():
response = requests.get(api_url)
data = response.json()
tag_name = data["tag_name"]
print(f"Downloading sd-webui-discord {tag_name}...")
download_url = f"https://github.com/SpenserCai/sd-webui-discord/releases/download/{tag_name}/sd-webui-discord-release-{tag_name}.tar.gz"
response = requests.get(download_url)
release_path = os.path.join(bin_path, f"sd-webui-discord-{tag_name}.tar.gz")
with open(release_path, "wb") as file:
file.write(response.content)
print("Extracting sd-webui-discord...")
with tarfile.open(release_path, "r:gz") as tar:
members = [m for m in tar.getmembers() if m.name.startswith("release")]
tar.extractall(path=bin_path, members=members)
# 判断release目录是否存在如果存在把里面的文件移动到bin目录下然后删除release目录
if os.path.isdir(os.path.join(bin_path, "release")):
for file in os.listdir(os.path.join(bin_path, "release")):
# 如果config.json存在不移动
if file == "config.json":
continue
shutil.move(os.path.join(bin_path, "release", file), bin_path)
shutil.rmtree(os.path.join(bin_path, "release"))
os.remove(release_path)
with open(os.path.join(bin_path, ".version"), "w") as file:
file.write(tag_name)
print("Done!")