Hallo,
Jetzt fühle ich mich nun ein wenig veralbert
Sorry, ja den Link hatte ich mir angesehen doch leider habe ich das nicht wirklich verstanden. Dein Script habe ich ausprobiert und es funktioniert hervorragend, vielen Dank dafür. Jetzt weiß ich außerdem das es sich lohnt wenn ich mich mit Python etwas eingehender beschäftige.
LG Karsten
Suchen hilft manchmal.
Jetzt fühle ich mich nun ein wenig veralbert. Ich habe doch die URL angegeben. Hast du das nicht gelesen? Aber ok, wenn du gern ein "python" Script geliefert haben willst, statt es selbst zu schreiben, habe ich (wohl didaktisch unklug) es dir unten eingefügt:
#!/usr/bin/env python3 import csv import datetime from pathlib import Path from mutagen.mp3 import MP3 def get_text(mp3, key, default=None): tag = mp3.get(key) if tag is None: return default # # Take the first value if there are multiple values, for instance because # the file has idv1 *and* idv2 tags. # return tag.text[0] if isinstance(tag.text, list) else tag.text def main(): with open("test.csv", "w", encoding="utf-8", newline="") as csv_file: writer = csv.writer(csv_file, delimiter=";") writer.writerow(["Artist", "Album", "Track", "Title", "Dauer", "File"]) for mp3_path in Path(".").rglob("*.mp3"): if mp3_path.is_file(): audio=MP3(mp3_path) row = [ get_text(audio, key, "") for key in ["TPE1", "TALB", "TRCK", "TIT2"] ] row.append(str(datetime.timedelta(seconds=round(audio.info.length)))) row.append(str(mp3_path)) writer.writerow(row) if __name__ == "__main__": main()
Post Scriptum:
Ich habe leider wegen der "python" Variante die "id3v2" und "id3" Variante vergessen beizufügen, was hiermit erfolgen soll. Zuerst die "id3v2" Variante:#!/bin/bash id3v2 -R *.mp3 | awk -v HDR="TPE1,TALB,TRCK,TIT2,TLEN" 'BEGIN { nh=split(HDR,val,",") for (i in val){ahead[i]=val[i]} } function p(val,n){ o="" for (i=1; i<=n; i++){ o=o"\";\""val[i] } print substr(o,3)"\"" } { if ( $0 == "" ){ p(val,nh) delete val } else { n=split($0,arr,": ");arr[2]=substr($0,length(arr[1])+3);gsub("\"","\"\"",arr[2]) for ( i in ahead ){ if ( ahead[i] == arr[1] ){ if ( arr[1] == "TLEN" ) { m=int(arr[2]/60000);s=arr[2]/1000-m*60;val[i]=sprintf("%02d:%02d",m,s); } else { val[i]=arr[2]; } } } } }'und nun die "id3" Variante:
id3 -q '"%a";"%l";"%n";"%t";%{TLEN};"%f"' *.mp3 | awk -F";" -v OFS=";" '{m=int($5/60000);s=$5/1000-m*60;$5=sprintf("%02d:%02d",m,s);print}'