Add duplicate filename diagnostics
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
from serato_doctor.models.crate import Crate, CrateKind
|
||||
from serato_doctor.models.duplicate import DuplicateGroup, DuplicateKind
|
||||
from serato_doctor.models.health import HealthReport
|
||||
from serato_doctor.models.library import Library
|
||||
from serato_doctor.models.match import MatchEvidence, TrackMatch
|
||||
@@ -9,6 +10,8 @@ __all__ = [
|
||||
"Crate",
|
||||
"CrateKind",
|
||||
"DiskTrack",
|
||||
"DuplicateGroup",
|
||||
"DuplicateKind",
|
||||
"HealthReport",
|
||||
"Library",
|
||||
"MatchEvidence",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from typing import Tuple
|
||||
|
||||
from serato_doctor.models.track import DiskTrack
|
||||
|
||||
|
||||
class DuplicateKind(str, Enum):
|
||||
EXACT_NAME = "exact_name"
|
||||
CLOUD_CONFLICT = "cloud_conflict"
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class DuplicateGroup:
|
||||
"""A deterministic group of files that warrants duplicate review."""
|
||||
|
||||
kind: DuplicateKind
|
||||
comparison_key: str
|
||||
tracks: Tuple[DiskTrack, ...]
|
||||
|
||||
@property
|
||||
def extra_files(self) -> int:
|
||||
return max(0, len(self.tracks) - 1)
|
||||
|
||||
@property
|
||||
def display_name(self) -> str:
|
||||
return min(
|
||||
(track.filename for track in self.tracks),
|
||||
key=lambda name: (len(name), name.casefold()),
|
||||
)
|
||||
@@ -15,6 +15,8 @@ class HealthReport:
|
||||
disk_tracks: int
|
||||
duplicate_filename_groups: int
|
||||
duplicate_files: int
|
||||
suspected_cloud_conflict_groups: int
|
||||
suspected_cloud_conflict_files: int
|
||||
unused_tracks: int
|
||||
suggested_matches: int
|
||||
static_crates: int
|
||||
|
||||
Reference in New Issue
Block a user