diff --git a/app.py b/app.py index b2496b1..0f3fecf 100644 --- a/app.py +++ b/app.py @@ -1534,36 +1534,42 @@ def r_storage_info(): devs = usb_devices() 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: - du = shutil.disk_usage(mount_path) + du = shutil.disk_usage(mp) 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) except Exception: 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): 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']}", port=sp['port'], mounted=False, total=None, used=None, free=None, pct=None) - if dev and dev.get('mount'): - entry.update(_du_entry(dev['mount'])) + if dev: + entry.update(_du_for_dev(dev)) result.append(entry) if cfg.get('dest_type') == 'internal': entry = dict(type='dest', label=cfg.get('internal_dest_label') or 'Interner Speicher', port='__internal__') - entry.update(_du_entry(str(INTERNAL_DEST_DIR))) + entry.update(_du_for_dev({'internal': True})) result.append(entry) elif cfg.get('dest_port'): 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']}", port=cfg['dest_port'], mounted=False, total=None, used=None, free=None, pct=None) - if dev and dev.get('mount'): - entry.update(_du_entry(dev['mount'])) + if dev: + entry.update(_du_for_dev(dev)) result.append(entry) return jsonify(result) diff --git a/version.txt b/version.txt index 01c08cf..3116087 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.0.68 +1.0.69