mirror of
https://github.com/Physton/sd-webui-prompt-all-in-one.git
synced 2026-01-26 19:29:56 +00:00
89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
import os
|
|
import re
|
|
import requests
|
|
import subprocess
|
|
import hashlib
|
|
|
|
|
|
def get_git_commit_version():
|
|
extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../../'
|
|
extension_dir = os.path.normpath(extension_dir)
|
|
git_path = os.path.join(extension_dir, '.git')
|
|
if os.path.exists(git_path):
|
|
try:
|
|
git = os.environ.get('GIT', "git")
|
|
if not git:
|
|
git = "git"
|
|
cmd = [git, 'rev-parse', 'HEAD']
|
|
commit_version = subprocess.check_output(cmd, cwd=extension_dir).decode('utf-8').strip()
|
|
if re.match(r'^[0-9a-f]{40}$', commit_version):
|
|
return commit_version
|
|
except Exception as e:
|
|
pass
|
|
|
|
try:
|
|
ref_path = os.path.join(git_path, 'refs', 'heads', 'main')
|
|
with open(ref_path, 'r') as f:
|
|
commit_version = f.read().strip()
|
|
if re.match(r'^[0-9a-f]{40}$', commit_version):
|
|
return commit_version
|
|
except Exception as e:
|
|
pass
|
|
|
|
return ''
|
|
|
|
|
|
def _handle_versions(response, filter_update_readme=False):
|
|
try:
|
|
if response.status_code != 200:
|
|
return []
|
|
result = response.json()
|
|
if not result:
|
|
return []
|
|
versions = []
|
|
for item in result:
|
|
message = item['commit']['message']
|
|
is_update_readme = False
|
|
if message.lower().strip() == 'update readme.md':
|
|
if filter_update_readme:
|
|
continue
|
|
is_update_readme = True
|
|
versions.append({
|
|
'version': item['sha'],
|
|
'message': message,
|
|
'date': item['commit']['committer']['date'],
|
|
'is_update_readme': is_update_readme
|
|
})
|
|
return versions
|
|
except Exception as e:
|
|
return []
|
|
|
|
|
|
def get_git_remote_versions(page=1, per_page=100, filter_update_readme=False):
|
|
api_urls = [
|
|
'https://api.github.com/repos/physton/sd-webui-prompt-all-in-one/commits',
|
|
'https://gitee.com/api/v5/repos/physton/sd-webui-prompt-all-in-one/commits'
|
|
]
|
|
|
|
for api_url in api_urls:
|
|
try:
|
|
api_url += f'?page={page}&per_page={per_page}'
|
|
key = hashlib.md5(api_url.encode('utf-8')).hexdigest()
|
|
response = requests.get(api_url)
|
|
versions = _handle_versions(response, filter_update_readme)
|
|
return versions
|
|
except Exception as e:
|
|
pass
|
|
|
|
return []
|
|
|
|
|
|
def get_latest_version():
|
|
current_version = get_git_commit_version()
|
|
# if not current_version:
|
|
# return current_version
|
|
versions = get_git_remote_versions(1, 10, False)
|
|
if len(versions) < 1:
|
|
return current_version
|
|
return versions[0]['version']
|