import '../library/database.dart'; /// Ordnet einen frisch heruntergeladenen Titel in die Bibliothek ein. /// /// YouTube-Dateien bringen ein Album-Tag mit, das yt-dlp aus Kanal, Playlist /// oder Videotitel ableitet. Da der Album-Titel in Melo die Kategorie ist, /// wäre das Unsinn — es würde für jeden Download eine Kategorie wie /// „Topic - Various Artists" erzeugen. Das Album wird deshalb verworfen; /// stattdessen zählt allein die beim Download gewählte [kategorie]. /// /// Ein leerer [kategorie]-Wert lässt den Titel bewusst ohne Kategorie. Beides /// wird als „von Hand gesetzt" markiert, damit der nächste Bibliotheks-Scan /// die Tags der Datei nicht wieder hereinholt. Future ordneDownloadEin( MeloDb db, String pfad, String kategorie, ) async { final song = await db.songByPath(pfad); if (song == null) return; await db.verwirfAlbum(song.id); final name = kategorie.trim(); await db.setCategories(song.id, name.isEmpty ? const [] : [name], byUser: true); } /// Kategorie-Vorschläge zur Eingabe [eingabe]: alles aus [vorhanden], das die /// Eingabe enthält. Leere Eingabe zeigt alles. List kategorieVorschlaege(String eingabe, List vorhanden) { final suche = eingabe.trim().toLowerCase(); if (suche.isEmpty) return vorhanden; return [ for (final name in vorhanden) if (name.toLowerCase().contains(suche)) name, ]; }