feat: real EXIF extraction via adapters-exif crate
- MetadataExtractorPort in domain (bytes → StructuredData) - adapters-exif: NomExifExtractor using nom-exif, handles EXIF + TrackInfo - Worker's MetadataExtractorPlugin delegates to port, no longer knows nom-exif - Filters noisy binary tags (U8Array, Undefined, Unknown)
This commit is contained in:
@@ -3,8 +3,9 @@ use super::entities::{
|
||||
MetadataSource,
|
||||
};
|
||||
use crate::common::errors::DomainError;
|
||||
use crate::common::value_objects::{Checksum, SystemId};
|
||||
use crate::common::value_objects::{Checksum, StructuredData, SystemId};
|
||||
use async_trait::async_trait;
|
||||
use bytes::Bytes;
|
||||
|
||||
// --- AssetRepository ---
|
||||
|
||||
@@ -74,3 +75,9 @@ pub trait DuplicateRepository: Send + Sync {
|
||||
async fn find_by_asset(&self, asset_id: &SystemId) -> Result<Vec<DuplicateGroup>, DomainError>;
|
||||
async fn save(&self, group: &DuplicateGroup) -> Result<(), DomainError>;
|
||||
}
|
||||
|
||||
// --- MetadataExtractorPort ---
|
||||
|
||||
pub trait MetadataExtractorPort: Send + Sync {
|
||||
fn extract(&self, bytes: &Bytes) -> Result<StructuredData, DomainError>;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user