A tool for creating custom reports from music collection data
Project description
Discogs Custom Reports Tool
A Python tool for creating custom reports from your Discogs collection with sorting by shelf and then alphabetically.
Features
- Generate detailed collection reports in Excel, CSV, or HTML format
- Sort items by shelf, then alphabetically by artist and title
- Filter reports by specific shelves
- Export separate sheets for each shelf (Excel format)
- Command-line interface for easy automation
- Rate limiting to respect Discogs API limits
- Comprehensive logging and error handling
Setup
1. Get a Discogs API Token
- Go to Discogs Developer Settings
- Create a new application or use an existing one
- Generate a personal access token
- Save your token - you'll need it to run the tool
2. Install Dependencies
# Activate virtual environment
source venv/bin/activate
# Install required packages
pip install -r requirements.txt
3. Set Environment Variable (Optional)
You can set your Discogs token as an environment variable:
export DISCOGS_TOKEN="your_token_here"
Or pass it directly via the --token option when running commands.
Usage
Generate a Full Collection Report
python main.py generate --username YOUR_DISCOGS_USERNAME --output my_collection.xlsx
Generate Report with Token
python main.py generate --token YOUR_TOKEN --username YOUR_DISCOGS_USERNAME
Filter by Specific Shelf
python main.py generate --username YOUR_DISCOGS_USERNAME --shelf "Vinyl" --output vinyl_collection.xlsx
Generate CSV Report
python main.py generate --username YOUR_DISCOGS_USERNAME --format csv --output collection.csv
List Available Shelves
python main.py list-shelves --username YOUR_DISCOGS_USERNAME
Enable Debug Logging
python main.py --debug generate --username YOUR_DISCOGS_USERNAME
Report Format
The generated reports include the following columns:
- Shelf: Collection folder/shelf name
- Artist: Artist name(s)
- Title: Release title
- Label: Record label(s)
- Catalog Number: Label catalog number(s)
- Format: Format details (e.g., "Vinyl, LP, Album")
- Year: Release year
- Genre: Music genre(s)
- Style: Music style(s)
- Country: Country of release
- Discogs ID: Unique Discogs release ID
- Master ID: Master release ID (if applicable)
- Rating: Your rating (if set)
- Notes: Your personal notes (if any)
Output Formats
Excel (.xlsx)
- Main "Collection" sheet with all items
- Separate sheet for each shelf
- Sortable columns and formatting
CSV (.csv)
- Single file with all collection data
- Compatible with spreadsheet applications
HTML (.html)
- Web-viewable table format
- Can be opened in any web browser
Command Line Options
Global Options
--debug: Enable debug logging
Generate Command
--token: Discogs API token (or use DISCOGS_TOKEN env var)--username: Your Discogs username (required)--output,-o: Output file path (default: discogs_report.xlsx)--shelf: Filter by specific shelf name (optional)--format: Output format - xlsx, csv, or html (default: xlsx)
List Shelves Command
--token: Discogs API token (or use DISCOGS_TOKEN env var)--username: Your Discogs username (required)
Rate Limiting
The tool includes built-in rate limiting to respect Discogs API limits:
- 1 second delay between API calls (configurable)
- Progress bars show processing status
- Automatic retry on rate limit errors
Troubleshooting
Common Issues
Authentication Error
- Verify your Discogs token is correct
- Ensure token has proper permissions
- Check if token is set via environment variable or --token option
Empty Collection
- Verify the username is correct
- Check if the collection is public
- Ensure the user has items in their collection
Missing Shelves
- Some collections may not have custom shelves
- Default shelf names vary by user
Debug Mode
Run with --debug flag to see detailed logging:
python main.py --debug generate --username YOUR_USERNAME
Logs are also saved to discogs_tool.log.
Development
Project Structure
discogs-report-tool/
├── main.py # Main CLI application
├── config.py # Configuration management
├── report_generator.py # Core report generation logic
├── utils.py # Utility functions
├── requirements.txt # Python dependencies
├── README.md # This file
└── venv/ # Virtual environment
Adding New Features
- Core logic goes in
report_generator.py - CLI commands are added to
main.py - Configuration options go in
config.py - Utilities and helpers go in
utils.py
License
This project is for personal use. Please respect Discogs' Terms of Service and API rate limits.
Contributing
Feel free to submit issues and enhancement requests!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file record_shelf-1.0.0.tar.gz.
File metadata
- Download URL: record_shelf-1.0.0.tar.gz
- Upload date:
- Size: 16.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1b5051b67222a7d42c07f3983a8b4c17e53f5f8dad733440b2d9c84e5ecf24b
|
|
| MD5 |
2d350e92b27ede16934c186affd87559
|
|
| BLAKE2b-256 |
b77e295a014baacb5d648892517c59b4bfbc707432434afef7e2cba402266d46
|
File details
Details for the file record_shelf-1.0.0-py3-none-any.whl.
File metadata
- Download URL: record_shelf-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77282578565839e0221601b469c297742c0afdab6f3cec1fe54b1e485acb9249
|
|
| MD5 |
023d04677106fcd492e0a6386e6a9a70
|
|
| BLAKE2b-256 |
98efd831b86f79b1d2e8363b22b3c4fa5a625bca932b37f77ca86eac5cff9420
|