# tool/core/cmd/put_file.py import struct import zlib from pathlib import Path from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, DownloadColumn, TransferSpeedColumn, TimeRemainingColumn from core.utils import console, console_err from core.protocol import COMMANDS from core.tag import TagManager from core.cmd.put_tags import put_tags class put_file: def __init__(self, bus): self.bus = bus def get(self, source_path: str, dest_path: str, cli_tags_json: str = None): try: p = Path(source_path) if not p.exists() or not p.is_file(): console_err.print(f"Fehler: Quelldatei existiert nicht: {source_path}") return None with open(p, 'rb') as f: file_data = f.read() except Exception as e: console_err.print(f"Fehler beim Lesen: {e}") return None # 1. Lokale Tags abtrennen audio_data, local_tlvs = TagManager.split_file(file_data) audio_size = len(audio_data) # 2. Upload der REINEN Audiodaten dest_path_bytes = dest_path.encode('utf-8') payload = struct.pack('B', len(dest_path_bytes)) + dest_path_bytes + struct.pack(' 0: console.print(f" • Dauer: [info]{result['duration']:.2f} s[/info]")