54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
import os
|
|
from scripts.iib.db.datamodel import DirCoverCache, DataBase
|
|
from scripts.iib.tool import get_formatted_date, is_valid_media_path, get_video_type
|
|
|
|
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=lambda x: x.stat().st_birthtime if hasattr(x.stat(), 'st_birthtime') else x.stat().st_ctime, 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_formatted_date(stat.st_birthtime if hasattr(stat, 'st_birthtime') else stat.st_ctime)
|
|
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
|