Files
Server-scripts/serverhost/.rename_camera_folder.py.swp
T

20 lines
16 KiB
Plaintext
Raw Normal View History

2026-08-06 10:35:33 +02:00
b0VIM 9.1dsjÅ9ùlucasserverhost~lucas/scripts/serverhost/rename_camera_folder.py
3210#"! U
ô
ó
Ð
Ê
V
<
1



õ ï Û � ƒ x g ` _ G A - ïÕʹ²°¯’KJIè¾�a`!óÞÝ [Z0ì㿾~mI@Ý·®†KB÷·y_8çΓkD*) ) "%Y-%m-%d" date_value, return datetime.datetime.strptime( try: # Try date-only format pass except ValueError: ) date_value.replace("Z", "+00:00") return datetime.datetime.fromisoformat( try: # Try full ISO datetime first date_value = str(mp4.tags["©day"][0]) if "©day" in mp4.tags: print(key, value) for key, value in mp4.tags.items(): # Print all available metadata mp4 = MP4(filepath) try: if filepath.lower().endswith((".mp4", ".mov", ".m4v")): from mutagen.mp4 import MP4 try: """Try to extract creation datetime from image EXIF metadata"""def get_exif_creation_datetime(filepath): print(f"Renamed: {os.path.basename(src_path)} âžœ {final_name}") os.rename(src_path, os.path.join(directory, final_name)) counter += 1 final_name = f"{base}_{counter}{ext}" while os.path.exists(os.path.join(directory, final_name)): final_name = new_filename counter = 1 base, ext = os.path.splitext(new_filename) directory = os.path.dirname(src_path) """Rename file safely, avoiding overwrites"""def local_safe_rename(src_path, new_filename):EXIF_DATE_TAGS = ['DateTimeOriginal', 'DateTimeDigitized', 'DateTime']# EXIF tag name for datetime] ), '%H%M%S' ), re.IGNORECASE rf'^(?:{prefix_group}_)?(\d{{6}})\.{ext_group}$', re.compile( ( # PREFIX_HHMMSS.ext ), '%Y%m%d' ), re.IGNORECASE rf'^(?:{prefix_group}_)?(\d{{8}})\.{ext_group}$', re.compile( ( # PREFIX_YYYYMMDD.ext ), '%Y.%m.%d-%H%M%S' ), re.IGNORECASE rf'^(?:{prefix_group}_)?(\d{{4}})\.(\d{{2}})\.(\d{{2}})-(\d{{6}}).*\.{ext_group}$', re.compile( ( # PREFIX_YYYY.MM.DD-HHMMSS.ext ), '%Y%m%d_%H%M%S' ), re.IGNORECASE rf'^(?:{prefix_group}_)?(\d{{8}})_(\d{{6}}).*\.{ext_group}$', re.compile( ( # PREFIX_YYYYMMDD_HHMMSS.ext ), '%Y_%m_%d_%H_%M_%S' ), re.IGNORECASE rf'^(?:{prefix_group}_)?(\d{{4}})_(\d{{2}})_(\d{{2}})_(\d{{2}})_(\d{{2}})_(\d{{2}}).*\.{ext_group}$', re.compile( ( # PREFIX_YYYY_MM_DD_HH_MM_SS.extalt_patterns = [# Alternate timestamp formats and their patterns) re.IGNORECASE rf'^{prefix_group}_(\d{{8}}_\d{{6}}).*\.{ext_group}$',correct_format_re = re.compile(# Correct format to keepprefix_group = r'(?:IMG|VID)'ext_group = r'(jpg|jpeg|png|heic|webp|mp4|mov|avi|mkv|hevc)'# Build reusable groups for regexprefixes = { 'IMG', 'VID'}extensions = img_extensions | video_extensions} '.jpg', '.jpeg', '.png', '.heic', '.webp',img_extensions = {} '.mp4', '.mov', '.avi', '.mkv', '.hevc', '.mov',video_extensions = {# Supported image and video extensionsfolder_path = '.'# Folder to scanfrom pathlib import Pathfrom serverlibary import safe_renameimport jsonimport subprocessfrom pillow_heif import open_heiffrom PIL import Image, ExifTagsimport sysimport datetimeimport randomimport reimport osadʦ1Ö§•€Y¸Pí
Ó
¬
�
Ž
z
e