6.7 KiB
6.7 KiB
MovieMapper Project Overview
Project Description
MovieMapper is a desktop application designed for organizing and managing movie and TV show collections. It provides a user-friendly interface for browsing media files, searching TV shows using TheTVDB API, and managing file metadata including durations and quality information.
Architecture
Main Components
- Electron-based Desktop Application - Cross-platform desktop application using Electron
- Main Process (
main.js) - Handles application lifecycle, IPC communication, and API interactions - Renderer Process (
renderer.js) - Manages the user interface and user interactions - File Utilities (
utils/fileUtils.js) - Handles file scanning, metadata extraction, and media processing - Frontend Interface (
index.html) - HTML structure with CSS styling
Core Features
1. Directory Browsing and Media Scanning
- Directory Selection: Users can select any directory containing media files
- Recursive Scanning: Automatically scans subdirectories for media files
- Media File Detection: Identifies media files based on supported extensions (.mp4, .mkv, .avi, .mov, .flv, .webm)
- File Metadata Extraction:
- Video duration in mm:ss format
- Video quality (4K, 1080p, 720p, etc.)
- Frame rate information
- File size and modification date
2. TV Show Search and Management
- TheTVDB API Integration: Search and retrieve TV show information
- Show Details: View show information including:
- Series name
- Status
- First aired date
- Overview/plot summary
- Image/artwork
- Season Management: Browse seasons with episode counts
- Episode Information: View episode details including:
- Episode names
- Episode numbers
- Runtime information
- Air dates
3. File Management
- File Renaming: Click on file names to rename them directly in the interface (changes persist to actual file system)
- File Tagging: Mark files as extras or with commentary tags
- File Untagging: Click on already tagged files to remove the tag
- File Organization: Move files to "extras" folder for better organization
- Problematic File Handling: Identifies and flags files that cause issues during metadata extraction
4. Technical Features
- Electron Framework: Cross-platform desktop application
- FFmpeg Integration: For video metadata extraction (duration, quality, frame rate)
- API Error Handling: Robust error handling for API calls and file operations
- IPC Communication: Inter-process communication between main and renderer processes
- Environment Configuration: API keys and configuration loaded from .env file
Technical Implementation
Main Process (main.js)
- IPC Handlers:
- Directory selection and scanning
- File renaming
- TVDB API integration (search, show details, season episodes)
- File system operations (moving files to extras)
- Debugging utilities
- Electron Integration: Window management, application lifecycle
- API Authentication: Handles TVDB v4 API authentication with bearer tokens
Renderer Process (renderer.js)
- UI Management: Handles all user interface interactions
- Event Handling: Click events, input handling, form submissions
- File Display: Renders file lists with metadata
- Search Functionality: Debounced search with API integration
- Editing Support: Makes file names editable with save functionality
- Tagging System: Visual indicators for tagged files
File Utilities (utils/fileUtils.js)
- Directory Scanning: Recursively scans directories for media files
- Metadata Extraction:
extractFileDuration(): Gets video duration using FFmpegextractVideoQuality(): Determines video quality and frame rateextractFileMetadata(): Comprehensive metadata extraction
- Error Handling: Graceful handling of permission errors and file issues
API Integration
TheTVDB v4 API
- Authentication: Uses bearer token authentication
- Endpoints:
- Search:
https://api4.thetvdb.com/v4/search - Show Details:
https://api4.thetvdb.com/v4/series/{id}/extended - Episodes:
https://api4.thetvdb.com/v4/series/{id}/episodes
- Search:
- Configuration: API key loaded from environment variables
User Interface
Layout
- Sidebar:
- Directory selection controls
- TV show search input
- Search results display
- Show details and seasons display
- Main Content Area:
- File listing with metadata
- File renaming capability
- File tagging indicators
Features
- Responsive Design: Clean, organized interface
- Visual Feedback:
- File renaming with editing support
- Tagging indicators with visual effects
- Problematic file highlighting
- Search Integration: Real-time search with debouncing
- Episode Display: Organized season and episode information
Dependencies
Core Dependencies
- Electron: Desktop application framework
- fluent-ffmpeg: Video metadata extraction
- axios: HTTP client for API requests
- dotenv: Environment variable management
Development Dependencies
- package.json: Project metadata and dependencies
- package-lock.json: Exact dependency versions
Installation and Setup
Prerequisites
- Node.js installed
- FFmpeg installed (required for video metadata extraction)
- TheTVDB API key (included in .env file)
Setup Process
- Clone the repository
- Install dependencies:
npm install - Run the application:
npm startorelectron .
Usage Workflow
- Select Directory: Click "Select Directory" to choose a folder containing media files
- Scan Files: Application automatically scans the directory and displays media files with metadata
- Browse Files: View files with duration, quality, and frame rate information
- Rename Files: Click on any file name to rename it
- Search Shows: Use the search functionality to find TV shows and their details
- View Seasons: Click on seasons to see episode information
- Organize Files: Use tagging and moving to extras functionality for better organization
Error Handling and Debugging
- File System Errors: Graceful handling of permission errors and missing files
- API Errors: Comprehensive error handling for TVDB API calls
- Metadata Extraction: Fallbacks when FFmpeg fails to extract information
- Debug Tools: Built-in debugging utilities for problematic files
Future Enhancements
- Enhanced file matching algorithms for better episode identification
- Database storage for persistent show and file information
- Additional tagging and categorization features
- Export functionality for organized collections
- Advanced search and filtering options