Research-Stack/4-Infrastructure/NoDupeLabs/nodupe/core/mime_interface.py

42 lines
1.2 KiB
Python

# SPDX-License-Identifier: Apache-2.0
# Copyright (c) 2025 Allaun
"""MIME Detection Interface.
Defines the interface for MIME detection aspects to be used by plugins and core.
"""
from abc import ABC, abstractmethod
from typing import Optional, Dict
from pathlib import Path
class MIMEDetectionInterface(ABC):
"""Abstract base class for MIME detectors."""
@abstractmethod
def detect_mime_type(self, file_path: str, use_magic: bool = True) -> str:
"""Detect MIME type."""
@abstractmethod
def get_extension_for_mime(self, mime_type: str) -> Optional[str]:
"""Get file extension for MIME type."""
@abstractmethod
def is_text(self, mime_type: str) -> bool:
"""Check if MIME type is text."""
@abstractmethod
def is_image(self, mime_type: str) -> bool:
"""Check if MIME type is image."""
@abstractmethod
def is_audio(self, mime_type: str) -> bool:
"""Check if MIME type is audio."""
@abstractmethod
def is_video(self, mime_type: str) -> bool:
"""Check if MIME type is video."""
@abstractmethod
def is_archive(self, mime_type: str) -> bool:
"""Check if MIME type is archive."""