Skip to content

medienoekonom/date_changer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 

Repository files navigation

Videodateien nach Dateinamen-Datum datieren (atime/mtime setzen)

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.


Was das Skript macht

  • 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

Voraussetzungen

  • Python 3.8+
  • Ausführung im Verzeichnis, das verarbeitet werden soll (oder Skript entsprechend anpassen).

Es werden keine zusätzlichen Pakete benötigt.


Nutzung

  1. Speichere den Code z. B. als set_video_dates_from_filename.py.
  2. Öffne ein Terminal/PowerShell im Zielordner.
  3. Starte:
    python set_video_dates_from_filename.py
    (Windows: py set_video_dates_from_filename.py)

Die Ausgabe zeigt den Fortschritt und eine Zusammenfassung.


Benennungskonvention (wichtig)

  • 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)

Typische Anwendungsfälle

  • Exporte/Downloads, deren Dateisystemzeiten verloren gingen.
  • Angleichen von Metadaten an Benennungsstandard (z. B. Home-Videos, Timelapse-Sequenzen).

Einschränkungen & Hinweise

  • Creation/Erstellungszeit:

    • os.utime() setzt nur atime/mtime.
      Die Erstellungszeit (ctime/creation time) kann unter Windows nicht mit os.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 naive datetime standardmäßig in lokaler Zeitzone. DST kann Mitternacht technisch verschieben.
  • Validierung:

    • Es wird nur geprüft, ob yyyymmdd ein gültiges Datum ist (via strptime). Semantische Plausibilität (z. B. „Jahr realistisch?“) wird nicht weiter geprüft.
  • Sicherheit:

    • Das Skript ändert Dateizeiten in-place.
      Lege bei Bedarf ein Backup an.

Beispielausgabe

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

Anpassungen

  • 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 die datetime-Komponente ergänzen (z. B. date_obj.replace(hour=12)).

Fehlerbehebung

  • 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“).

Lizenz

MIT


Haftungsausschluss

Verwendung auf eigenes Risiko. Prüfe Ergebnisse stichprobenartig, insbesondere bei großen Mengen produktiver Daten.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages