Dieses Python-Skript durchsucht das aktuelle Verzeichnis nach Videodateien, extrahiert ein Datum im Format yyyymmdd
zu Beginn des Dateinamens (z. B. 20240131_Urlaub.mp4
) und setzt anschließend Zugriffszeit (atime) und Änderungszeit (mtime) der passenden Dateien auf dieses Datum.
Beispiel:
20231224_Familie.mkv
→ Datei erhält Zeitstempel 24.12.2023 00:00:00.
- Erkennt Datumspräfixe per Regex
^(\d{8})
. - Parst das Datum mit
datetime.strptime(..., "%Y%m%d")
. - Setzt atime und mtime via
os.utime()
auf Mitternacht des erkannten Tages. - Protokolliert pro Datei:
✓ Updated
(gesetzt),✗ Failed
(Fehler),- Skipped
(kein gültiges Datum am Anfang).
Unterstützte Endungen:
.mp4, .avi, .mkv, .mov, .wmv, .flv, .webm, .mpg, .mpeg
- Python 3.8+
- Ausführung im Verzeichnis, das verarbeitet werden soll (oder Skript entsprechend anpassen).
Es werden keine zusätzlichen Pakete benötigt.
- Speichere den Code z. B. als
set_video_dates_from_filename.py
. - Öffne ein Terminal/PowerShell im Zielordner.
- Starte:
(Windows:
python set_video_dates_from_filename.py
py set_video_dates_from_filename.py
)
Die Ausgabe zeigt den Fortschritt und eine Zusammenfassung.
- Das Datum muss am Anfang des Dateinamens stehen.
- Format
yyyymmdd
ohne Trennzeichen:- ✅
20240815_Urlaub.mp4
- ✅
20210101.mp4
- ❌
Video_20240815.mp4
(Datum nicht am Anfang) - ❌
2024-08-15.mp4
(falsches Format)
- ✅
- Exporte/Downloads, deren Dateisystemzeiten verloren gingen.
- Angleichen von Metadaten an Benennungsstandard (z. B. Home-Videos, Timelapse-Sequenzen).
-
Creation/Erstellungszeit:
os.utime()
setzt nur atime/mtime.
Die Erstellungszeit (ctime/creation time) kann unter Windows nicht mitos.utime()
gesetzt werden.- Falls du die Creation Time unter Windows setzen willst, brauchst du z. B.
pywin32
und einen separaten Aufruf der WinAPI (nicht in diesem Skript enthalten).
-
Zeitzone / Mitternacht:
- Das Datum wird auf 00:00:00 (lokale Zeit) des erkannten Tages gesetzt.
Python interpretiert naivedatetime
standardmäßig in lokaler Zeitzone. DST kann Mitternacht technisch verschieben.
- Das Datum wird auf 00:00:00 (lokale Zeit) des erkannten Tages gesetzt.
-
Validierung:
- Es wird nur geprüft, ob
yyyymmdd
ein gültiges Datum ist (viastrptime
). Semantische Plausibilität (z. B. „Jahr realistisch?“) wird nicht weiter geprüft.
- Es wird nur geprüft, ob
-
Sicherheit:
- Das Skript ändert Dateizeiten in-place.
Lege bei Bedarf ein Backup an.
- Das Skript ändert Dateizeiten in-place.
Processing videos in: D:\Videos
Looking for files with yyyymmdd date format at the beginning...
✓ Updated: 20240131_Skiurlaub.mp4
- Skipped (no valid date found): Urlaub_alt.mov
✓ Updated: 20231224_Familie.mkv
--- Summary ---
Files processed: 2
Errors: 0
- Weitere Endungen: Passe
video_extensions
im Code an. - Anderes Verzeichnis: Ersetze
os.getcwd()
durch einen festen Pfad oder CLI-Argumente. - Zeit auf eine Uhrzeit > 00:00 setzen: Nach
strptime
diedatetime
-Komponente ergänzen (z. B.date_obj.replace(hour=12)
).
- Keine Dateien verarbeitet: Prüfe, ob die Dateinamen wirklich mit
yyyymmdd
beginnen und die Endungen unterstützt sind. - Berechtigungsfehler: Terminal als Admin/mit ausreichenden Rechten starten; bei Netzlaufwerken Schreibrechte prüfen.
- Falsche Zeitstempel: Prüfe lokale Zeitzone/DST-Effekte oder setze eine feste Uhrzeit (siehe „Anpassungen“).
MIT
Verwendung auf eigenes Risiko. Prüfe Ergebnisse stichprobenartig, insbesondere bei großen Mengen produktiver Daten.