From e667dc37c99f2000fef1c879ab3bdafdbb6d1080 Mon Sep 17 00:00:00 2001 From: Jarian Cottingham Date: Thu, 19 Feb 2026 10:08:11 -0600 Subject: [PATCH] Implement mutually exclusive tagging with untagging, fix UI shifting, and add clapper emoji to title --- PROJECT_OVERVIEW.md | 163 +++++++++++++++++++++++++++++++ index.html | 28 +++++- renderer.js | 233 ++++++++++++++++++-------------------------- 3 files changed, 286 insertions(+), 138 deletions(-) create mode 100644 PROJECT_OVERVIEW.md diff --git a/PROJECT_OVERVIEW.md b/PROJECT_OVERVIEW.md new file mode 100644 index 0000000..e5dccc4 --- /dev/null +++ b/PROJECT_OVERVIEW.md @@ -0,0 +1,163 @@ +# 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 +1. **Electron-based Desktop Application** - Cross-platform desktop application using Electron +2. **Main Process** (`main.js`) - Handles application lifecycle, IPC communication, and API interactions +3. **Renderer Process** (`renderer.js`) - Manages the user interface and user interactions +4. **File Utilities** (`utils/fileUtils.js`) - Handles file scanning, metadata extraction, and media processing +5. **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 +- **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 FFmpeg + - `extractVideoQuality()`: Determines video quality and frame rate + - `extractFileMetadata()`: 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` +- **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 +1. Node.js installed +2. FFmpeg installed (required for video metadata extraction) +3. TheTVDB API key (included in .env file) + +### Setup Process +1. Clone the repository +2. Install dependencies: `npm install` +3. Run the application: `npm start` or `electron .` + +## Usage Workflow + +1. **Select Directory**: Click "Select Directory" to choose a folder containing media files +2. **Scan Files**: Application automatically scans the directory and displays media files with metadata +3. **Browse Files**: View files with duration, quality, and frame rate information +4. **Rename Files**: Click on any file name to rename it +5. **Search Shows**: Use the search functionality to find TV shows and their details +6. **View Seasons**: Click on seasons to see episode information +7. **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 \ No newline at end of file diff --git a/index.html b/index.html index 9676ffa..5e338a4 100644 --- a/index.html +++ b/index.html @@ -166,7 +166,7 @@