8.1 KiB
Plex Library Scanner Documentation
Overview
The Plex Library Scanner provides a comprehensive command-line interface for managing Plex Media Server libraries. It wraps the native Plex Media Scanner binary with enhanced functionality, error handling, and user-friendly output.
Features
- Library Management: List, scan, refresh, and analyze Plex libraries
- Interactive Mode: User-friendly menu system for easy operation
- Batch Operations: Perform operations on all libraries or specific ones
- Enhanced Output: Colored, styled terminal output with progress indicators
- Error Handling: Comprehensive validation and error reporting
- Logging: Detailed operation logs for troubleshooting
Scripts
scan-plex-libraries.sh
Primary script for library scanning operations.
Location: /home/acedanger/shell/plex/scan-plex-libraries.sh
Features:
- Automatic detection of Plex Media Scanner binary
- Service status validation
- Section ID validation
- Comprehensive error handling
- Interactive and command-line modes
Integration with plex.sh
The scanner is integrated into the main plex.sh script as the scan command.
Usage
Via plex.sh (Recommended)
# Launch interactive scanner
plex scan
# Pass arguments directly to scanner
plex scan list
plex scan scan 29
plex scan refresh "" true
Direct Usage
# Interactive mode
./scan-plex-libraries.sh
# List all libraries
./scan-plex-libraries.sh list
# Scan specific library
./scan-plex-libraries.sh scan 29
# Scan all libraries
./scan-plex-libraries.sh scan
# Refresh with force flag
./scan-plex-libraries.sh refresh 29 true
# Deep analysis
./scan-plex-libraries.sh analyze 29 true
# Generate thumbnails
./scan-plex-libraries.sh generate 29
# Show library tree
./scan-plex-libraries.sh tree 29
Via Aliases
# Using new aliases
plex-scan # Launch scanner via plex.sh
plex-scanner # Direct access to scanner script
plex-scanner list # List libraries directly
Commands
list
Lists all available library sections with their IDs and names.
Usage: scan-plex-libraries.sh list
Output:
Available Library Sections:
=========================
29: Movies
30: TV Shows
31: Music
scan
Scans libraries for new media files.
Usage:
scan-plex-libraries.sh scan(all libraries)scan-plex-libraries.sh scan <section_id>(specific library)
Examples:
# Scan all libraries
scan-plex-libraries.sh scan
# Scan Movies library (ID 29)
scan-plex-libraries.sh scan 29
refresh
Refreshes metadata for library items.
Usage:
scan-plex-libraries.sh refresh [section_id] [force]
Parameters:
section_id: Library section ID (optional, scans all if omitted)force: Set to "true" for forced refresh (optional)
Examples:
# Refresh all libraries
scan-plex-libraries.sh refresh
# Refresh specific library
scan-plex-libraries.sh refresh 29
# Force refresh all libraries
scan-plex-libraries.sh refresh "" true
# Force refresh specific library
scan-plex-libraries.sh refresh 29 true
analyze
Analyzes media files for metadata and codec information.
Usage:
scan-plex-libraries.sh analyze [section_id] [deep]
Parameters:
section_id: Library section ID (optional)deep: Set to "true" for deep analysis (optional)
Examples:
# Analyze all libraries
scan-plex-libraries.sh analyze
# Analyze specific library
scan-plex-libraries.sh analyze 29
# Deep analyze all libraries
scan-plex-libraries.sh analyze "" true
# Deep analyze specific library
scan-plex-libraries.sh analyze 29 true
generate
Generates thumbnails and fanart for media items.
Usage:
scan-plex-libraries.sh generate [section_id]
Examples:
# Generate for all libraries
scan-plex-libraries.sh generate
# Generate for specific library
scan-plex-libraries.sh generate 29
tree
Shows the hierarchical structure of a library.
Usage:
scan-plex-libraries.sh tree <section_id>
Example:
# Show Movies library structure
scan-plex-libraries.sh tree 29
interactive
Launches the interactive menu system.
Usage: scan-plex-libraries.sh interactive (or just scan-plex-libraries.sh)
Options
-v, --verbose
Enables verbose output showing detailed progress information.
Usage: scan-plex-libraries.sh -v <command>
-h, --help
Shows help information and usage examples.
Usage: scan-plex-libraries.sh --help
Prerequisites
- Plex Media Server: Must be installed and running
- Plex Media Scanner: Binary must be available (automatically detected)
- Permissions: Script must be run with appropriate user permissions
- Service Access: Access to systemctl for service status checking
Automatic Detection
The scanner automatically detects the Plex Media Scanner binary from these locations:
/usr/lib/plexmediaserver/Plex Media Scanner(Linux - most common)/opt/plex/Plex Media Scanner(Alternative Linux)/usr/local/plex/Plex Media Scanner(Custom installations)/Applications/Plex Media Server.app/Contents/MacOS/Plex Media Scanner(macOS)- System PATH
Error Handling
The script provides comprehensive error handling for:
- Missing Plex Media Scanner binary
- Plex service not running
- Invalid section IDs
- Scanner operation failures
- Permission issues
Logging
Operations are logged to: /home/acedanger/shell/logs/plex-scanner.log
Log entries include:
- Timestamp
- Operation type
- Success/failure status
- Error details (if applicable)
- Debug information (in verbose mode)
Integration Examples
Automated Scanning
#!/bin/bash
# Scan all libraries after adding new media
plex-scanner scan
# Force refresh if metadata seems outdated
plex-scanner refresh "" true
Maintenance Script
#!/bin/bash
# Daily maintenance routine
echo "Starting Plex maintenance..."
# Scan for new media
plex-scanner scan
# Analyze any new files
plex-scanner analyze
# Generate missing thumbnails
plex-scanner generate
echo "Maintenance complete!"
Specific Library Management
#!/bin/bash
# Update specific library after batch media addition
MOVIES_ID=29
TV_SHOWS_ID=30
# Scan and refresh movies
plex-scanner scan $MOVIES_ID
plex-scanner refresh $MOVIES_ID true
# Deep analyze TV shows
plex-scanner analyze $TV_SHOWS_ID true
Troubleshooting
Common Issues
-
"Plex Media Server is not running"
- Start Plex:
sudo systemctl start plexmediaserver - Check status:
systemctl status plexmediaserver
- Start Plex:
-
"Plex Media Scanner binary not found"
- Verify Plex installation
- Check if binary exists in expected locations
- Ensure proper PATH configuration
-
"Section ID not found"
- Use
plex-scanner listto see valid section IDs - Ensure the library hasn't been deleted
- Use
-
Permission denied errors
- Don't run as root
- Ensure user has access to Plex directories
- Check file permissions on scanner binary
Debug Mode
Enable verbose logging for troubleshooting:
plex-scanner -v list
plex-scanner -v scan 29
Log Analysis
Check logs for detailed error information:
tail -f /home/acedanger/shell/logs/plex-scanner.log
Performance Considerations
- Large Libraries: Operations on large libraries may take considerable time
- Deep Analysis: Deep analysis is resource-intensive, use sparingly
- Concurrent Operations: Avoid running multiple scanner operations simultaneously
- System Resources: Scanner operations can be CPU and I/O intensive
Best Practices
- Regular Scanning: Set up regular scans for libraries with frequent additions
- Selective Operations: Use specific section IDs for targeted operations
- Monitor Logs: Regular log review helps identify issues early
- Test First: Use verbose mode to understand operation impact
- Service Health: Ensure Plex service is healthy before operations