Jarian Cottingham 6dd4e83ddf feat: Add Rust implementation for performance-critical components
- Implement core Rust backend with FFmpeg integration
- Add TheTVDB API client with token caching
- Implement directory scanner with progress callbacks
- Create file manager with rename and move operations
- Add audit logging functionality
- Implement file mapping for TV episode renaming
- Build Node.js native addon via NAPI
- Include comprehensive unit and integration tests
- Update gitignore to exclude build artifacts and temp files

Resolves #TBD
2026-02-28 09:52:08 -06:00

57 lines
1.7 KiB
Rust

//! MovieMapper Rust Implementation
//!
//! A Rust-based version of MovieMapper for organizing and managing movie and TV show collections.
//!
//! # Features
//!
//! - Directory browsing and media scanning
//! - TVDB API integration for show search and management
//! - File metadata extraction using FFmpeg
//! - File tagging and organization
//! - Episode mapping to Jellyfin naming convention
//! - Audit logging
//!
//! # Example
//!
//! ```rust,no_run
//! use movie_mapper::service::file_scanner::FileScanner;
//! use movie_mapper::service::tvdb_api::TVDBClient;
//! use std::path::Path;
//!
//! #[tokio::main]
//! async fn main() {
//! // Initialize file scanner
//! let scanner = FileScanner::new();
//!
//! // Scan a directory (progress_callback is optional)
//! let files = scanner
//! .scan_directory(Path::new("/path/to/media"), None)
//! .await
//! .unwrap();
//!
//! // Initialize TVDB client (TVDBClient::new is not async)
//! let mut tvdb = TVDBClient::new("your-api-key").unwrap();
//!
//! // Authenticate (this is async)
//! tvdb.authenticate().await.unwrap();
//!
//! // Search for a show
//! let shows = tvdb.search("Breaking Bad").await.unwrap();
//!
//! // Fetch show details
//! let details = tvdb.get_show_details(shows[0].id).await.unwrap();
//!
//! println!("Found {} results", shows.len());
//! }
//! ```
pub mod model;
pub mod service;
pub mod utils;
pub use model::{Episode, MediaFile, Season, Show, ShowDetails, TaggedFile};
pub use service::{
AuditLogger, FileMapper, FileScanner, MetadataExtractor, TVDBClient, TagManager,
};
pub use utils::{FileError, MappingError, MetadataError, Result, ScannerError, TVDBError};