From c37f01f39bfd3d7ecf8bff8ba7a5eaf71b6218e2 Mon Sep 17 00:00:00 2001 From: huangge1199 Date: Mon, 12 Aug 2024 11:41:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- renamePhotoBatch.py | 51 +++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/renamePhotoBatch.py b/renamePhotoBatch.py index 860f797..b6d72e4 100644 --- a/renamePhotoBatch.py +++ b/renamePhotoBatch.py @@ -3,10 +3,11 @@ # @date 2023/10/23 # @file renamePhotoBatch.py import os -import glob -import exifread +import os.path +import time -import os.path, time +import exifread +from moviepy.editor import VideoFileClip # 获取照片的拍摄时间 @@ -21,14 +22,31 @@ def get_photo_taken_time(image_path): def get_photo_update_time(image_path): with open(image_path, 'rb') as f: - return time.ctime(os.stat(image_path).st_mtime) + timestamp = time.strptime(time.ctime(os.stat(image_path).st_mtime),'%a %b %d %H:%M:%S %Y') + return f"{timestamp.tm_year}{timestamp.tm_mon}{timestamp.tm_mday}_{timestamp.tm_hour}{timestamp.tm_min}{timestamp.tm_sec}" + +def get_video_creation_time(video_path): + try: + # 使用 moviepy 读取视频文件 + clip = VideoFileClip(video_path) + + # 获取视频文件的元数据 + metadata = clip.reader.infos + + # 获取创建时间 + creation_time = metadata.get('creation_time', 'Unknown') + + return creation_time + except Exception as e: + print(f"Error: {e}") + return None def solution(): # 获取当前时间并格式化为年月日时分秒毫秒 # 设置照片所在的文件夹路径 - # folder_path = "C:\\Users\\hyy\\Pictures\\图片" - folder_path = "C:\\Users\\hyy\\Pictures\\轩辕龙儿的文件收集20240803" + folder_path = "C:\\Users\\hyy\\Pictures\\图片" + # folder_path = "C:\\Users\\hyy\\Pictures\\轩辕龙儿的文件收集20240803" # 获取文件夹中的所有照片文件 # photo_files = glob.glob(os.path.join(folder_path, "*")) @@ -37,16 +55,23 @@ def solution(): # 遍历照片文件并重命名 for photo in photo_files: name = photo + if name.endswith('.jpeg'): + continue photo = folder_path+"\\"+photo - creation_time_stamp = get_photo_taken_time(photo) + if name.endswith('.MOV'): + creation_time_stamp = get_photo_update_time(photo) + formatted_time = "VIDEO_" + creation_time_stamp + else: + creation_time_stamp = get_photo_taken_time(photo) + formatted_time = "IMG_" + creation_time_stamp.values.replace(':', '').replace(' ', '_') if creation_time_stamp is None: continue - if name.startswith('IMG'): - file_name, file_ext = os.path.splitext(photo) - file_name = file_name[:-2] - os.rename(photo, f"{file_name}.jpeg") - continue - formatted_time = "IMG_" + creation_time_stamp.values.replace(':', '').replace(' ', '_') + # if name.startswith('IMG'): + # file_name, file_ext = os.path.splitext(photo) + # if file_name.find('-'): + # file_name = file_name[:-2] + # os.rename(photo, f"{file_name}{file_ext}") + # continue file_name, file_ext = os.path.splitext(photo) if file_name.startswith('.'): file_name, file_ext = os.path.splitext(file_name)