Refactor code structure for improved readability and maintainability
This commit is contained in:
BIN
PiCopy_Logo.png
Normal file
BIN
PiCopy_Logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 450 KiB |
@@ -1,3 +1,7 @@
|
|||||||
|
<div align="center">
|
||||||
|
<img src="PiCopy_Logo.png" alt="PiCopy Logo" width="160">
|
||||||
|
</div>
|
||||||
|
|
||||||
# PiCopy
|
# PiCopy
|
||||||
|
|
||||||
**Automatische USB-Backup-Station für den Raspberry Pi mit Web-Interface**
|
**Automatische USB-Backup-Station für den Raspberry Pi mit Web-Interface**
|
||||||
|
|||||||
13
app.py
13
app.py
@@ -16,7 +16,7 @@ import urllib.request as _urlreq
|
|||||||
import urllib.error as _urlerr
|
import urllib.error as _urlerr
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from flask import Flask, jsonify, request
|
from flask import Flask, jsonify, request, send_file
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
@@ -1506,6 +1506,13 @@ def run_uploads(local_dir: Path, cfg: dict, upload_files=None):
|
|||||||
def index():
|
def index():
|
||||||
return HTML.replace('__PICOPY_VERSION__', VERSION)
|
return HTML.replace('__PICOPY_VERSION__', VERSION)
|
||||||
|
|
||||||
|
@app.route('/logo.png')
|
||||||
|
def r_logo():
|
||||||
|
logo = Path(__file__).with_name('PiCopy_Logo.png')
|
||||||
|
if logo.exists():
|
||||||
|
return send_file(logo, mimetype='image/png')
|
||||||
|
return '', 404
|
||||||
|
|
||||||
@app.route('/api/devices')
|
@app.route('/api/devices')
|
||||||
def r_devices():
|
def r_devices():
|
||||||
return jsonify(usb_devices())
|
return jsonify(usb_devices())
|
||||||
@@ -2084,7 +2091,7 @@ body{background:var(--bg);color:var(--txt);font-family:-apple-system,BlinkMacSys
|
|||||||
/* -- Topbar -- */
|
/* -- Topbar -- */
|
||||||
.topbar{background:var(--bg2);border-bottom:1px solid var(--brd);padding:.75rem 1.5rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:100;backdrop-filter:blur(8px)}
|
.topbar{background:var(--bg2);border-bottom:1px solid var(--brd);padding:.75rem 1.5rem;display:flex;align-items:center;gap:1rem;position:sticky;top:0;z-index:100;backdrop-filter:blur(8px)}
|
||||||
.logo{display:flex;align-items:center;gap:.55rem;font-size:1rem;font-weight:700;letter-spacing:-.02em;color:var(--txt)}
|
.logo{display:flex;align-items:center;gap:.55rem;font-size:1rem;font-weight:700;letter-spacing:-.02em;color:var(--txt)}
|
||||||
.logo-dot{width:8px;height:8px;border-radius:50%;background:var(--acc);box-shadow:0 0 8px var(--acc)}
|
.logo-img{height:28px;width:auto;object-fit:contain}
|
||||||
.topbar-wifi{margin-left:auto;display:flex;align-items:center;gap:.6rem;font-size:.82rem;background:var(--surf);border:1px solid var(--brd);border-radius:9999px;padding:.3rem .75rem}
|
.topbar-wifi{margin-left:auto;display:flex;align-items:center;gap:.6rem;font-size:.82rem;background:var(--surf);border:1px solid var(--brd);border-radius:9999px;padding:.3rem .75rem}
|
||||||
.topbar-wifi~.topbar-wifi,.wdot{width:7px;height:7px;border-radius:50%;transition:.3s;flex-shrink:0}
|
.topbar-wifi~.topbar-wifi,.wdot{width:7px;height:7px;border-radius:50%;transition:.3s;flex-shrink:0}
|
||||||
.wdot.c{background:var(--grn);box-shadow:0 0 6px var(--grn)}
|
.wdot.c{background:var(--grn);box-shadow:0 0 6px var(--grn)}
|
||||||
@@ -2273,7 +2280,7 @@ body{background:var(--bg);color:var(--txt);font-family:-apple-system,BlinkMacSys
|
|||||||
<!-- Topbar -->
|
<!-- Topbar -->
|
||||||
<header class="topbar">
|
<header class="topbar">
|
||||||
<div class="logo">
|
<div class="logo">
|
||||||
<div class="logo-dot"></div>
|
<img src="/logo.png" alt="PiCopy" class="logo-img">
|
||||||
PiCopy
|
PiCopy
|
||||||
</div>
|
</div>
|
||||||
<div id="upd-badge" class="upd-badge" onclick="installUpdate()" title="Klicken zum Installieren">
|
<div id="upd-badge" class="upd-badge" onclick="installUpdate()" title="Klicken zum Installieren">
|
||||||
|
|||||||
11
install.sh
11
install.sh
@@ -64,6 +64,17 @@ else
|
|||||||
fi
|
fi
|
||||||
ok "version.txt installiert"
|
ok "version.txt installiert"
|
||||||
|
|
||||||
|
# ── Logo kopieren oder herunterladen ─────────────────────────────────────────
|
||||||
|
if [ -f "./PiCopy_Logo.png" ]; then
|
||||||
|
info "Lokales Logo wird verwendet..."
|
||||||
|
cp PiCopy_Logo.png "$INSTALL_DIR/PiCopy_Logo.png"
|
||||||
|
else
|
||||||
|
info "Logo wird heruntergeladen..."
|
||||||
|
curl -sSfL "$REPO_RAW/PiCopy_Logo.png" -o "$INSTALL_DIR/PiCopy_Logo.png" \
|
||||||
|
|| warn "Logo konnte nicht heruntergeladen werden (nicht kritisch)."
|
||||||
|
fi
|
||||||
|
ok "Logo installiert"
|
||||||
|
|
||||||
# ── Python-Umgebung ───────────────────────────────────────────────────────────
|
# ── Python-Umgebung ───────────────────────────────────────────────────────────
|
||||||
info "Python venv wird erstellt..."
|
info "Python venv wird erstellt..."
|
||||||
python3 -m venv "$INSTALL_DIR/venv"
|
python3 -m venv "$INSTALL_DIR/venv"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.0.62
|
1.0.63
|
||||||
Reference in New Issue
Block a user