Skip to main content

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

  1. Go to Discogs Developer Settings
  2. Create a new application or use an existing one
  3. Generate a personal access token
  4. 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

  1. Core logic goes in report_generator.py
  2. CLI commands are added to main.py
  3. Configuration options go in config.py
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

record_shelf-1.0.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

record_shelf-1.0.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

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

Hashes for record_shelf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 a1b5051b67222a7d42c07f3983a8b4c17e53f5f8dad733440b2d9c84e5ecf24b
MD5 2d350e92b27ede16934c186affd87559
BLAKE2b-256 b77e295a014baacb5d648892517c59b4bfbc707432434afef7e2cba402266d46

See more details on using hashes here.

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

Hashes for record_shelf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77282578565839e0221601b469c297742c0afdab6f3cec1fe54b1e485acb9249
MD5 023d04677106fcd492e0a6386e6a9a70
BLAKE2b-256 98efd831b86f79b1d2e8363b22b3c4fa5a625bca932b37f77ca86eac5cff9420

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page