- 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
57 lines
1.7 KiB
Rust
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};
|