| ecxod | 9 Beiträge | |
| schrieb am 28.12.24 um 15:29 Uhr zuletzt bearbeitet von ecxod am 28.12.24 um 15:34 Uhr | | > Sansibar schrieb am 11.10.12 um 17:54 Uhr > Jetzt möchte ich noch die schon bestehenden Dateien in die neue Struktur umsortieren, > aber dafür gibts Spezialprogramme, habe ich gesehen. Wer seine Sammlung umsortieren will, kann meinen Script nutzen Mein Script macht 3 Sachen gleichzeitig - er speichert die Daten aus den Tags in einer sqlite3 Datei - erzeugt eine m3u Playlist und - sortiert die Datein nach dem neuen Muster um
Anforderungen:
Einfach entpacken und dann den bin Ordner in den Path einfügen. Das kann man von Hand machen, oder den Environment Editor von Oleg Danilov nutzen https://www.rapidee.com
Dann erzeugt ihr eine Datei die z.B. "SortierTool.bat" heißt und kopiert den folgenden Code rein
@echo off setlocal enabledelayedexpansion
:: Benutzereingaben set "input_folder=C:\Pfad\zu\Ordner" set "output_folder=C:\Pfad\zu\Ausgang" set "playlist_file=C:\Pfad\zu\playlist.m3u" set "pattern=%%genre%%\%%artist%% - %%title%% (%%year%%)"
:: Erlaubte Muster set "allowed_patterns=%%artist%% %%title%% %%album%% %%genre%% %%streamtitle%% %%streamname%% %%number%% %%day%% %%month%% %%year%%"
:: SQLite-Datenbank initialisieren set "db_file=music_metadata.db" sqlite3 "%db_file%" "CREATE TABLE IF NOT EXISTS music (path TEXT, artist TEXT, title TEXT, album TEXT, genre TEXT, streamtitle TEXT, streamname TEXT, number TEXT, day TEXT, month TEXT, year TEXT);"
:: Musikdateien durchsuchen und Metadaten extrahieren for /r "%input_folder%" %%f in (*.mp3 *.ogg *.aac) do ( echo Verarbeite: %%f
:: Metadaten mit ffprobe extrahieren for /f "tokens=1,* delims==" %%a in ('ffprobe -v error -show_entries format_tags ^| find "="') do ( set "%%a=%%b" )
:: Daten in SQLite speichern sqlite3 "%db_file%" "INSERT INTO music (path, artist, title, album, genre, streamtitle, streamname, number, day, month, year) VALUES ('%%f', '!artist!', '!title!', '!album!', '!genre!', '!streamtitle!', '!streamname!', '!number!', '!day!', '!month!', '!year!');" )
:: Dateien umsortieren for /f "tokens=*" %%a in ('sqlite3 "%db_file%" "SELECT path, artist, title, album, genre, streamtitle, streamname, number, day, month, year FROM music;"') do ( set "source_file=%%~a" set "artist=%%~b" set "title=%%~c" set "album=%%~d" set "genre=%%~e" set "streamtitle=%%~f" set "streamname=%%~g" set "number=%%~h" set "day=%%~i" set "month=%%~j" set "year=%%~k"
:: Zielpfad basierend auf dem Muster erstellen set "output_path=%pattern%" for %%p in (%allowed_patterns%) do ( set "output_path=!output_path:%%p=%%%%~p!" ) set "output_path=%output_folder%\!output_path!"
:: Zielverzeichnis erstellen if not exist "!output_path!" mkdir "!output_path!"
:: Datei verschieben move "!source_file!" "!output_path!"
:: Playlist-Eintrag hinzufügen echo !output_path! >> "%playlist_file%" )
:: Playlist-Header hinzufügen (echo #EXTM3U echo) > "%playlist_file%.tmp" type "%playlist_file%" >> "%playlist_file%.tmp" move /y "%playlist_file%.tmp" "%playlist_file%"
echo Playlist erstellt: %playlist_file% echo Fertig! pause |
| | | | grüzzi ecxod |
|