单目3D初始代码
This commit is contained in:
59
tools/pdcl_inference/pdcl_clip_service.py
Executable file
59
tools/pdcl_inference/pdcl_clip_service.py
Executable file
@@ -0,0 +1,59 @@
|
||||
import re
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from typing import Optional, Sequence
|
||||
|
||||
from pdcl_dss import Clip
|
||||
|
||||
|
||||
class PDCLClipService:
|
||||
"""Resolve clip_uuid to local clip cache path."""
|
||||
|
||||
@staticmethod
|
||||
@lru_cache(maxsize=4096)
|
||||
def get_clip_path(clip_uuid: str) -> Optional[str]:
|
||||
clip = Clip(clip_uuid)
|
||||
files, _ = clip.list_files()
|
||||
if not files:
|
||||
return None
|
||||
return clip.get_cache_path(files[0])
|
||||
|
||||
@staticmethod
|
||||
def _extract_timestamp_token(text: str) -> Optional[str]:
|
||||
if not text:
|
||||
return None
|
||||
|
||||
patterns = (
|
||||
r"(20\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})",
|
||||
r"(20\d{2})[-_](\d{2})[-_](\d{2})[-_](\d{2})[-_](\d{2})[-_](\d{2})",
|
||||
)
|
||||
for pattern in patterns:
|
||||
match = re.search(pattern, text)
|
||||
if match:
|
||||
return "".join(match.groups())
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
@lru_cache(maxsize=4096)
|
||||
def get_clip_sort_key(clip_uuid: str) -> tuple[int, str, str]:
|
||||
clip_path = PDCLClipService.get_clip_path(clip_uuid)
|
||||
candidates = []
|
||||
if clip_path:
|
||||
path = Path(clip_path)
|
||||
candidates.extend([path.name, str(path)])
|
||||
candidates.append(clip_uuid)
|
||||
|
||||
for candidate in candidates:
|
||||
timestamp = PDCLClipService._extract_timestamp_token(candidate)
|
||||
if timestamp:
|
||||
return (0, timestamp, clip_uuid)
|
||||
return (1, clip_uuid, clip_uuid)
|
||||
|
||||
@staticmethod
|
||||
def sort_clip_uuids(clip_uuids: Sequence[str]) -> list[str]:
|
||||
unique_clips = [
|
||||
clip_uuid
|
||||
for clip_uuid in dict.fromkeys(clip_uuids).keys()
|
||||
if clip_uuid
|
||||
]
|
||||
return sorted(unique_clips, key=PDCLClipService.get_clip_sort_key)
|
||||
Reference in New Issue
Block a user