mirror of
https://github.com/vladmandic/sdnext.git
synced 2026-01-27 15:02:48 +03:00
75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
import os
|
|
from types import SimpleNamespace
|
|
from modules import paths
|
|
from installer import log
|
|
|
|
|
|
dir_timestamps = {}
|
|
dir_cache = {}
|
|
|
|
|
|
def listdir(path):
|
|
if not os.path.exists(path):
|
|
return []
|
|
mtime = os.path.getmtime(path)
|
|
if path in dir_timestamps and mtime == dir_timestamps[path]:
|
|
return dir_cache[path]
|
|
else:
|
|
dir_cache[path] = [os.path.join(path, f) for f in os.listdir(path)]
|
|
dir_timestamps[path] = mtime
|
|
return dir_cache[path]
|
|
|
|
|
|
def walk_files(path, allowed_extensions=None):
|
|
if not os.path.exists(path):
|
|
return
|
|
if allowed_extensions is not None:
|
|
allowed_extensions = set(allowed_extensions)
|
|
for root, _dirs, files in os.walk(path, followlinks=True):
|
|
for filename in files:
|
|
if allowed_extensions is not None:
|
|
_, ext = os.path.splitext(filename)
|
|
if ext not in allowed_extensions:
|
|
continue
|
|
yield os.path.join(root, filename)
|
|
|
|
|
|
def html_path(filename):
|
|
return os.path.join(paths.script_path, "html", filename)
|
|
|
|
|
|
def html(filename):
|
|
path = html_path(filename)
|
|
if os.path.exists(path):
|
|
with open(path, encoding="utf8") as file:
|
|
return file.read()
|
|
return ""
|
|
|
|
|
|
def req(url_addr, headers = None, **kwargs):
|
|
import requests
|
|
if headers is None:
|
|
headers = { 'Content-type': 'application/json' }
|
|
try:
|
|
res = requests.get(url_addr, timeout=30, headers=headers, verify=False, allow_redirects=True, **kwargs)
|
|
except Exception as err:
|
|
log.error(f'HTTP request error: url={url_addr} {err}')
|
|
res = { 'status_code': 500, 'text': f'HTTP request error: url={url_addr} {err}' }
|
|
res = SimpleNamespace(**res)
|
|
return res
|
|
|
|
|
|
class TotalTQDM: # compatibility with previous global-tqdm
|
|
# import tqdm
|
|
def __init__(self):
|
|
pass
|
|
def reset(self):
|
|
pass
|
|
def update(self):
|
|
pass
|
|
def updateTotal(self, new_total):
|
|
pass
|
|
def clear(self):
|
|
pass
|
|
total_tqdm = TotalTQDM()
|