| import os | |
| from scripts.iib.db.datamodel import DirCoverCache, DataBase | |
| from scripts.iib.tool import get_created_date_by_stat, get_formatted_date, is_valid_media_path, get_video_type, birthtime_sort_key_fn | |
| def get_top_4_media_info(folder_path): | |
| """ | |
| 获取给定文件夹路径下的前4个媒体文件的完整路径。 | |
| 参数: | |
| folder_path (str): 文件夹的路径。 | |
| 返回值: | |
| list: 包含前4个媒体文件完整路径的列表。 | |
| """ | |
| conn = DataBase.get_conn() | |
| if DirCoverCache.is_cache_expired(conn, folder_path): | |
| media_files = get_media_files_from_folder(folder_path) | |
| DirCoverCache.cache_media_files(conn, folder_path, media_files) | |
| else: | |
| media_files = DirCoverCache.get_cached_media_files(conn, folder_path) | |
| return media_files[:4] | |
| def get_media_files_from_folder(folder_path): | |
| """ | |
| 从文件夹中获取媒体文件的完整路径。 | |
| 参数: | |
| folder_path (str): 文件夹的路径。 | |
| 返回值: | |
| list: 包含媒体文件完整路径的列表。 | |
| """ | |
| media_files = [] | |
| with os.scandir(folder_path) as entries: | |
| for entry in sorted(entries, key=birthtime_sort_key_fn, reverse=True): | |
| if entry.is_file() and is_valid_media_path(entry.path): | |
| name = os.path.basename(entry.path) | |
| stat = entry.stat() | |
| date = get_formatted_date(stat.st_mtime) | |
| created_time = get_created_date_by_stat(stat) | |
| media_files.append({ | |
| "fullpath": entry.path, | |
| "media_type": "video" if get_video_type(entry.path) else "image", | |
| "type": "file", | |
| "date": date, | |
| "created_time": created_time, | |
| "name": name, | |
| }) | |
| if len(media_files) > 3: | |
| return media_files | |
| return media_files | |