Usage Guide =========== Command Line Interface ---------------------- Record Shelf provides a command-line interface with two main commands: - ``generate`` - Generate collection reports - ``list-shelves`` - List available shelves Basic Syntax ~~~~~~~~~~~~ :: record-shelf [GLOBAL_OPTIONS] COMMAND [COMMAND_OPTIONS] Global Options ~~~~~~~~~~~~~~ ``--debug`` Enable debug logging for troubleshooting ``--help`` Show help message and exit Generate Command ---------------- The ``generate`` command creates collection reports with various customization options. Syntax ~~~~~~ :: record-shelf generate [OPTIONS] Required Options ~~~~~~~~~~~~~~~~ ``--username TEXT`` Discogs username (required) Optional Arguments ~~~~~~~~~~~~~~~~~~ ``--token TEXT`` Discogs API token. If not provided, uses the ``DISCOGS_TOKEN`` environment variable. ``--output TEXT, -o TEXT`` Output file path (default: ``collection_report.xlsx``) ``--shelf TEXT`` Filter by specific shelf name (optional). If not specified, includes all shelves. ``--format [xlsx|csv|html]`` Output format (default: ``xlsx``) Examples ~~~~~~~~ **Basic usage**:: record-shelf generate --username myusername **With custom output file**:: record-shelf generate --username myusername --output my_collection.xlsx **Filter by shelf**:: record-shelf generate --username myusername --shelf "Vinyl" **CSV format**:: record-shelf generate --username myusername --format csv --output collection.csv **HTML format**:: record-shelf generate --username myusername --format html --output collection.html **With API token**:: record-shelf generate --token abc123def456 --username myusername **Debug mode**:: record-shelf --debug generate --username myusername List Shelves Command -------------------- The ``list-shelves`` command displays all available shelves in a user's collection. Syntax ~~~~~~ :: record-shelf list-shelves [OPTIONS] Required Options ~~~~~~~~~~~~~~~~ ``--username TEXT`` Discogs username (required) Optional Arguments ~~~~~~~~~~~~~~~~~~ ``--token TEXT`` Discogs API token. If not provided, uses the ``DISCOGS_TOKEN`` environment variable. Examples ~~~~~~~~ **Basic usage**:: record-shelf list-shelves --username myusername **With API token**:: record-shelf list-shelves --token abc123def456 --username myusername Output Formats -------------- Record Shelf supports three output formats: Excel (.xlsx) ~~~~~~~~~~~~~ - **Default format** - **Main features**: - "Collection" sheet with all items - Separate sheet for each shelf - Professional formatting - Sortable columns - Excel-compatible formulas **Best for**: Detailed analysis, sharing with others, professional reports CSV (.csv) ~~~~~~~~~~ - **Plain text format** - **Main features**: - Single file with all data - Compatible with spreadsheet applications - Easy to import into databases - Universal format support **Best for**: Data analysis, importing to other tools, automation HTML (.html) ~~~~~~~~~~~~ - **Web format** - **Main features**: - Viewable in any web browser - Professional table styling - No additional software required - Easy to share via web **Best for**: Web viewing, sharing online, quick previews Data Fields ----------- All reports include the following data fields: **Core Information** - **Shelf**: Collection folder/shelf name - **Artist**: Artist name(s) - **Title**: Release title - **Label**: Record label(s) - **Catalog Number**: Label catalog number(s) **Format Details** - **Format**: Format details (e.g., "Vinyl, LP, Album") - **Year**: Release year - **Country**: Country of release **Classification** - **Genre**: Music genre(s) - **Style**: Music style(s) **Identifiers** - **Discogs ID**: Unique Discogs release ID - **Master ID**: Master release ID (if applicable) **Personal Data** - **Rating**: Your rating (if set) - **Notes**: Your personal notes (if any) Sorting and Organization ------------------------ Record Shelf automatically sorts data in a logical hierarchy: 1. **Primary sort**: By shelf name (alphabetical) 2. **Secondary sort**: By artist name (alphabetical, case-insensitive) 3. **Tertiary sort**: By title (alphabetical, case-insensitive) This ensures consistent, predictable organization across all reports. Rate Limiting ------------- Record Shelf includes built-in rate limiting to respect Discogs API limits: - **Default delay**: 1 second between API calls - **Progress indicators**: Visual progress bars for long operations - **Automatic retry**: Built-in retry logic for rate limit errors - **Respectful usage**: Designed to stay within API limits Error Handling -------------- Record Shelf provides comprehensive error handling: **Authentication Errors** - Clear messages for invalid tokens - Guidance on obtaining tokens - Environment variable instructions **API Errors** - Rate limiting detection - Network error handling - Service unavailability alerts **Data Errors** - Graceful handling of missing data - Partial data recovery - Detailed error logging **File Errors** - Permission error detection - Disk space warnings - File format validation Logging ------- Record Shelf provides detailed logging: **Log Levels** - **INFO**: Normal operation messages - **DEBUG**: Detailed operation information (use ``--debug``) - **WARNING**: Non-fatal issues - **ERROR**: Fatal errors **Log Destinations** - **Console**: Real-time feedback - **File**: ``record_shelf.log`` in current directory **Log Content** - API call details - Processing progress - Error diagnostics - Performance metrics Advanced Usage -------------- Automation Scripts ~~~~~~~~~~~~~~~~~~ Record Shelf is designed for automation:: #!/bin/bash # Backup script export DISCOGS_TOKEN="your_token" # Generate daily backup record-shelf generate --username myuser --output "backup_$(date +%Y%m%d).xlsx" # Generate format-specific reports record-shelf generate --username myuser --shelf "Vinyl" --output vinyl.csv --format csv record-shelf generate --username myuser --shelf "CD" --output cd.html --format html Batch Processing ~~~~~~~~~~~~~~~~ Process multiple users or shelves:: #!/bin/bash export DISCOGS_TOKEN="your_token" for shelf in "Vinyl" "CD" "Digital"; do record-shelf generate --username myuser --shelf "$shelf" --output "${shelf,,}.xlsx" done Cron Jobs ~~~~~~~~~ Schedule regular reports:: # Run daily at 2 AM 0 2 * * * /path/to/record-shelf generate --username myuser --output /backup/daily.xlsx # Run weekly full report 0 0 * * 0 /path/to/record-shelf generate --username myuser --output /backup/weekly.xlsx Troubleshooting --------------- Common Issues and Solutions ~~~~~~~~~~~~~~~~~~~~~~~~~~~ **"No module named 'record_shelf'"** - Ensure Record Shelf is installed: ``pip install record-shelf`` - Check if you're in the correct virtual environment **"Authentication failed"** - Verify your Discogs token is correct - Check the ``DISCOGS_TOKEN`` environment variable - Ensure token has proper permissions **"User not found"** - Verify the username is correct - Check if the user's collection is public **"Rate limit exceeded"** - Wait a few minutes and try again - Record Shelf includes automatic rate limiting **"Permission denied" when writing files** - Check file permissions in the output directory - Ensure you have write access to the target location **"Empty collection"** - Verify the user has items in their collection - Check if you're filtering by a non-existent shelf Performance Tips ~~~~~~~~~~~~~~~~ **Large Collections** - Use shelf filtering to process smaller subsets - Run during off-peak hours - Consider CSV format for faster processing **Slow Network** - Increase rate limiting delay (requires code modification) - Use debug mode to monitor progress - Process during better network conditions **Memory Usage** - CSV format uses less memory than Excel - Process shelves separately for very large collections - Close other applications during processing