am besten beschreibe ich das Problem mit einem Beispiel.
Ich möchte die Tags von MP3 und Bild-Dateien mit ExifTool auslesen und in einer CSV-Datei speichern. Die hat den Vorteil, dass ich dann direkt in LibreOffice weiter arbeiten kann.
Das funktioniert auch soweit. Auslesen, speichern und auch wieder einlesen ist mit wenig Aufwand möglich.
Hier mal mein bisheriges Ergebnis, wobei das nicht alle Tags sind und es nicht das eigentliche Verzeichnis ist, in dem die Dateien liegen. Aber der Übersichtlichkeit halber habe ich das mal eingeschränkt.
Code: Alles auswählen
import exiftool, csv
import glob
tags = ["SourceFile","ID3:Album","ID3:Artist","ID3:Track","ID3:Title"]
verzeichnis = "/tmp/"
csvdatei = verzeichnis + "tags.csv"
dateien = glob.glob(verzeichnis + "*.mp3")
with exiftool.ExifTool() as et:
auslese = et.get_tags_batch(tags,dateien)
print(auslese)
with open(csvdatei , "w") as cd:
cd2 = csv.DictWriter(cd, tags)
cd2.writeheader()
cd2.writerows(auslese)
with open(csvdatei , "r") as cd:
liste = list(csv.reader(cd))
print(liste)
Auslese der Tags in eine Liste mit Directories:
[codebox=text file=Unbenannt.txt][{'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/10 - lady jd.mp3', 'ID3:Title': 'Lady JD', 'ID3:Track': '10/11', 'ID3:Album': 'Dos Bros - Platinum Edition'}, {'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/02 - dos bros.mp3', 'ID3:Title': 'Dos Bros', 'ID3:Track': '2/11', 'ID3:Album': 'Dos Bros - Platinum Edition'}, {'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/07 - she is a little b.mp3', 'ID3:Title': 'She Is a Little B', 'ID3:Track': '7/11', 'ID3:Album': 'Dos Bros - Platinum Edition'}][/code]
Wieder eingelesene Daten aus der CSV-Datei:
[codebox=text file=Unbenannt.txt][['SourceFile', 'ID3:Album', 'ID3:Artist', 'ID3:Track', 'ID3:Title'], ['/tmp/10 - lady jd.mp3', 'Dos Bros - Platinum Edition', 'The BossHoss', '10/11', 'Lady JD'], ['/tmp/02 - dos bros.mp3', 'Dos Bros - Platinum Edition', 'The BossHoss', '2/11', 'Dos Bros'], ['/tmp/07 - she is a little b.mp3', 'Dos Bros - Platinum Edition', 'The BossHoss', '7/11', 'She Is a Little B']][/code]
Nur möchte ich einige Daten vor dem Schreiben in die CSV-Datei noch ändern. Z.B. möchte ich bei der Track-Nr. den Schrägstrich und die Gesamtanzahl nach dem Schrägstrich entfernen. Dazu wäre es vorteilhaft, die ausgelesene Liste schon vor dem Speichern umzuwandeln.
Ja, ich könnte die Modifikation auch schon in der Directory-Liste vornehmen.
Code: Alles auswählen
for i in auslese:
i["ID3:Track"] = i["ID3:Track"].split("/")[0]
print(auslese)
[codebox=text file=Unbenannt.txt][{'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/10 - lady jd.mp3', 'ID3:Title': 'Lady JD', 'ID3:Track': '10', 'ID3:Album': 'Dos Bros - Platinum Edition'}, {'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/02 - dos bros.mp3', 'ID3:Title': 'Dos Bros', 'ID3:Track': '2', 'ID3:Album': 'Dos Bros - Platinum Edition'}, {'ID3:Artist': 'The BossHoss', 'SourceFile': '/tmp/07 - she is a little b.mp3', 'ID3:Title': 'She Is a Little B', 'ID3:Track': '7', 'ID3:Album': 'Dos Bros - Platinum Edition'}][/code]
Aber der andere Weg gefällt mir besser.
Gibt es eine einfache Möglichkeit der Umwandlung?
Viele Grüße