Update GUI building script
This commit is contained in:
parent
6598f0e2c3
commit
e9b2653ad0
@ -1 +1,4 @@
|
|||||||
* [Ubuntu](https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip) font family.
|
## 🧰 Завиисимости для сборки:
|
||||||
|
|
||||||
|
* webui 2.4.2
|
||||||
|
* Семейство шрифтов [Ubuntu](https://assets.ubuntu.com/v1/0cef8205-ubuntu-font-family-0.83.zip)
|
||||||
|
179
build_gui.py
179
build_gui.py
@ -6,99 +6,114 @@ from bs4 import BeautifulSoup, Tag
|
|||||||
from jsmin import jsmin
|
from jsmin import jsmin
|
||||||
from csscompressor import compress
|
from csscompressor import compress
|
||||||
|
|
||||||
# html param
|
if __name__ == '__main__':
|
||||||
html = sys.argv[1]
|
# html input param
|
||||||
# target param
|
html = sys.argv[1]
|
||||||
target = sys.argv[2]
|
# target output param
|
||||||
# path from html param
|
target = sys.argv[2]
|
||||||
path = re.sub(r"[^\/]*$", "", html)
|
|
||||||
# open html file
|
|
||||||
soup = BeautifulSoup(open(html), 'html.parser')
|
|
||||||
# find last script as anchorpoint
|
|
||||||
lastScript = soup.findAll("script", attrs = {"src" : True})[-1]
|
|
||||||
# get all scripts containing src attribute (= external scripts)
|
|
||||||
scripts = soup.findAll("script", attrs = {"src" : True})
|
|
||||||
# find last style link as anchorpoint
|
|
||||||
lastStylesheet = soup.findAll("link", attrs = {"rel" : "stylesheet"})[-1]
|
|
||||||
# get all links to css stylesheets
|
|
||||||
stylesheets = soup.findAll("link", attrs = {"rel" : "stylesheet"})
|
|
||||||
|
|
||||||
# create list of script srcs
|
# path from html param
|
||||||
print("\nRead Scripts:")
|
path = re.sub(r'[^\/]*$', '', html)
|
||||||
scriptsSrc = deque()
|
|
||||||
for script in scripts:
|
|
||||||
scriptsSrc.append(path + script.attrs["src"])
|
|
||||||
print("\t" + path + script.attrs["src"])
|
|
||||||
|
|
||||||
# create list of stylesheets srcs
|
# open html file
|
||||||
print("\nRead Stylesheets:")
|
print('📂 Open HTML file...', end=' ')
|
||||||
stylesheetsSrc = deque()
|
soup = BeautifulSoup(open(html), 'html.parser')
|
||||||
for stylesheet in stylesheets:
|
print('OK!')
|
||||||
stylesheetsSrc.append(path + stylesheet.attrs["href"])
|
|
||||||
print("\t" + path + stylesheet.attrs["href"])
|
|
||||||
|
|
||||||
# merge scripts to temp.js
|
# find last script as anchorpoint
|
||||||
print("\nMerge Scripts:")
|
lastScript = soup.findAll('script', attrs={'src': True})[-1]
|
||||||
print("\t", end="")
|
# get all scripts containing src attribute (= external scripts)
|
||||||
with open("temp.js", "w") as outfileScript:
|
scripts = soup.findAll('script', attrs={'src': True})
|
||||||
for fname in scriptsSrc:
|
|
||||||
# add space every script
|
# find last style link as anchorpoint
|
||||||
if fname != 'gui//webui.js':
|
lastStylesheet = soup.findAll('link', attrs={'rel': 'stylesheet'})[-1]
|
||||||
outfileScript.write("\n")
|
# get all links to css stylesheets
|
||||||
print("~", end="")
|
stylesheets = soup.findAll('link', attrs={'rel': 'stylesheet'})
|
||||||
|
|
||||||
|
# create list of script srcs
|
||||||
|
print('🔎 Create list of scripts...', end=' ')
|
||||||
|
scriptsSrc = deque()
|
||||||
|
for script in scripts:
|
||||||
|
scriptsSrc.append(path + script.attrs['src'])
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
|
# create list of stylesheets srcs
|
||||||
|
print('🔎 Create list of stylesheets...', end=' ')
|
||||||
|
stylesheetsSrc = deque()
|
||||||
|
for stylesheet in stylesheets:
|
||||||
|
stylesheetsSrc.append(path + stylesheet.attrs['href'])
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
|
# merge scripts to .temp.js
|
||||||
|
print('📥 Merge scripts...', end=' ')
|
||||||
|
with open('.temp.js', 'w') as outfileScript:
|
||||||
|
for fname in scriptsSrc:
|
||||||
|
# add space every script
|
||||||
|
if fname != 'gui//webui.js':
|
||||||
|
outfileScript.write('\n')
|
||||||
|
with open(fname) as infile:
|
||||||
|
for line in infile:
|
||||||
|
outfileScript.write(line)
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
|
print('📥 Merge stylsheets...', end=' ')
|
||||||
|
# merge stylsheets to temp.css
|
||||||
|
with open('.temp.css', 'w') as outfileCSS:
|
||||||
|
for fname in stylesheetsSrc:
|
||||||
|
# add space every script
|
||||||
|
outfileCSS.write('\n')
|
||||||
with open(fname) as infile:
|
with open(fname) as infile:
|
||||||
for line in infile:
|
for line in infile:
|
||||||
outfileScript.write(line)
|
outfileCSS.write(line)
|
||||||
print("\n");
|
print('Complete!')
|
||||||
|
|
||||||
# merge stylsheets to temp.css
|
# minify javascript
|
||||||
print("Merge Stylesheets:")
|
print('🗃️ Minify scripts...', end=' ')
|
||||||
print("\t", end="")
|
with open('.temp.js') as js:
|
||||||
with open("temp.css", "w") as outfileCSS:
|
minified_js = jsmin(js.read())
|
||||||
for fname in stylesheetsSrc:
|
print('Complete!')
|
||||||
# add space every script
|
|
||||||
outfileCSS.write("\n")
|
|
||||||
print("~", end="")
|
|
||||||
with open(fname) as infile:
|
|
||||||
for line in infile:
|
|
||||||
outfileCSS.write(line)
|
|
||||||
print("\n");
|
|
||||||
|
|
||||||
# minify javascript
|
# minify css
|
||||||
print("Minify temp.js\n\t~")
|
print('🗃️ Minify stylsheets...', end=' ')
|
||||||
with open("temp.js") as js:
|
with open('.temp.css') as css:
|
||||||
minified_js = jsmin(js.read())
|
minified_css = compress(css.read())
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
# minify css
|
# replace scripts with merged and min embed script / css
|
||||||
print("\nMinify temp.css\n\t~")
|
print('🔄 Embedding script and stylsheets...', end=' ')
|
||||||
with open("temp.css") as css:
|
tag = soup.new_tag('script')
|
||||||
minified_css = compress(css.read())
|
tag['type'] = 'text/javascript'
|
||||||
|
tag.append(minified_js)
|
||||||
|
lastScript.replace_with(tag)
|
||||||
|
|
||||||
# replace scripts with merged and min embed script / css
|
webui_tag = soup.new_tag('script')
|
||||||
print("\nReplacing and deleting\n\t~")
|
webui_tag['type'] = 'text/javascript'
|
||||||
tag = soup.new_tag("script")
|
webui_tag['src'] = '/webui.js'
|
||||||
tag["type"] = "text/javascript"
|
tag.insert_before(webui_tag)
|
||||||
tag.append(minified_js)
|
|
||||||
lastScript.replace_with(tag)
|
|
||||||
|
|
||||||
tag = soup.new_tag("style")
|
tag = soup.new_tag('style')
|
||||||
tag["type"] = "text/css"
|
tag['type'] = 'text/css'
|
||||||
tag.append(minified_css)
|
tag.append(minified_css)
|
||||||
lastStylesheet.replace_with(tag)
|
lastStylesheet.replace_with(tag)
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
#remove script and style tags
|
# remove script and style tags
|
||||||
for script in scripts:
|
print('🧹 Cleaning...', end=' ')
|
||||||
script.decompose()
|
for script in scripts:
|
||||||
for stylesheet in stylesheets:
|
script.decompose()
|
||||||
stylesheet.decompose()
|
for stylesheet in stylesheets:
|
||||||
|
stylesheet.decompose()
|
||||||
|
|
||||||
#remove temp
|
# remove temp files
|
||||||
os.remove("temp.js")
|
os.remove('.temp.js')
|
||||||
os.remove("temp.css")
|
os.remove('.temp.css')
|
||||||
|
print('Complete!')
|
||||||
|
|
||||||
#save html as target
|
# save html as target
|
||||||
file = open(target,"w")
|
print('💾 Save builded document...', end=' ')
|
||||||
file.write(soup.prettify())
|
file = open(target, 'w')
|
||||||
file.close()
|
file.write(soup.prettify())
|
||||||
|
file.close()
|
||||||
|
print('Complete!', end='\n\n')
|
||||||
|
|
||||||
print("\nFIN\n")
|
print('🏁 Complete')
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
<link rel="stylesheet" type="text/css" href="bootstrap-v5.3.1.min.css" />
|
<link rel="stylesheet" type="text/css" href="bootstrap-v5.3.1.min.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="ubuntu-font.css" />
|
<link rel="stylesheet" type="text/css" href="ubuntu-font.css" />
|
||||||
<link rel="stylesheet" type="text/css" href="styles.css" />
|
<link rel="stylesheet" type="text/css" href="styles.css" />
|
||||||
<script src="app.js"></script>
|
|
||||||
<script src="/webui.js"></script>
|
<script src="/webui.js"></script>
|
||||||
|
<script src="/app.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body class="d-flex h-100 text-bg-dark">
|
<body class="d-flex h-100 text-bg-dark">
|
||||||
<div class="d-flex h-100 mx-auto p-3">
|
<div class="d-flex h-100 mx-auto p-3">
|
||||||
|
4
pyproject.toml
Normal file
4
pyproject.toml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[tool.black]
|
||||||
|
skip-string-normalization = true
|
||||||
|
pycodestyle = true
|
||||||
|
line-length = 100
|
Loading…
Reference in New Issue
Block a user