feat: Aktualisierung der Speicherinformationen-Funktion zur besseren Handhabung von Laufwerken; Versionsnummer auf 1.0.69 erhöht

This commit is contained in:
2026-05-13 11:02:30 +02:00
parent ed969fe0a7
commit cf2d2869d8
2 changed files with 14 additions and 8 deletions

20
app.py
View File

@@ -1534,36 +1534,42 @@ def r_storage_info():
devs = usb_devices() devs = usb_devices()
result = [] result = []
def _du_entry(mount_path): def _du_for_dev(dev):
mp, owned = ensure_mount(dev)
if not mp:
return dict(mounted=False, total=None, used=None, free=None, pct=None)
try: try:
du = shutil.disk_usage(mount_path) du = shutil.disk_usage(mp)
return dict(mounted=True, total=du.total, used=du.used, free=du.free, return dict(mounted=True, total=du.total, used=du.used, free=du.free,
pct=round(du.used / du.total * 100) if du.total else 0) pct=round(du.used / du.total * 100) if du.total else 0)
except Exception: except Exception:
return dict(mounted=False, total=None, used=None, free=None, pct=None) return dict(mounted=False, total=None, used=None, free=None, pct=None)
finally:
if owned:
subprocess.run(['umount', mp], capture_output=True)
for sp in _resolve_source_ports(cfg): for sp in _resolve_source_ports(cfg):
dev = next((d for d in devs if d['usb_port'] == sp['port']), None) dev = next((d for d in devs if d['usb_port'] == sp['port']), None)
entry = dict(type='source', label=sp.get('label') or f"Port {sp['port']}", entry = dict(type='source', label=sp.get('label') or f"Port {sp['port']}",
port=sp['port'], mounted=False, port=sp['port'], mounted=False,
total=None, used=None, free=None, pct=None) total=None, used=None, free=None, pct=None)
if dev and dev.get('mount'): if dev:
entry.update(_du_entry(dev['mount'])) entry.update(_du_for_dev(dev))
result.append(entry) result.append(entry)
if cfg.get('dest_type') == 'internal': if cfg.get('dest_type') == 'internal':
entry = dict(type='dest', entry = dict(type='dest',
label=cfg.get('internal_dest_label') or 'Interner Speicher', label=cfg.get('internal_dest_label') or 'Interner Speicher',
port='__internal__') port='__internal__')
entry.update(_du_entry(str(INTERNAL_DEST_DIR))) entry.update(_du_for_dev({'internal': True}))
result.append(entry) result.append(entry)
elif cfg.get('dest_port'): elif cfg.get('dest_port'):
dev = next((d for d in devs if d['usb_port'] == cfg['dest_port']), None) dev = next((d for d in devs if d['usb_port'] == cfg['dest_port']), None)
entry = dict(type='dest', label=cfg.get('dest_label') or f"Port {cfg['dest_port']}", entry = dict(type='dest', label=cfg.get('dest_label') or f"Port {cfg['dest_port']}",
port=cfg['dest_port'], mounted=False, port=cfg['dest_port'], mounted=False,
total=None, used=None, free=None, pct=None) total=None, used=None, free=None, pct=None)
if dev and dev.get('mount'): if dev:
entry.update(_du_entry(dev['mount'])) entry.update(_du_for_dev(dev))
result.append(entry) result.append(entry)
return jsonify(result) return jsonify(result)

View File

@@ -1 +1 @@
1.0.68 1.0.69