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

discogs_record_shelf-1.0.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

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

discogs_record_shelf-1.0.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file discogs_record_shelf-1.0.0.tar.gz.

File metadata

  • Download URL: discogs_record_shelf-1.0.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.0

File hashes

Hashes for discogs_record_shelf-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d241b9165a0c1a5d7dadd696c29b91f8af223c3dc99efedf27986514d73e1368
MD5 e1bf81ed8ccd087e1c335e34ab1ec765
BLAKE2b-256 70768e69e1409ab1b00e658c0a4413019951efeb3f64edaeb7a55e0a673f597a

See more details on using hashes here.

File details

Details for the file discogs_record_shelf-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for discogs_record_shelf-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4f1a2bd59dd4df911dd19d70c20c4e5aaa9b5d2844fbe0e8c5af9cf7bea47a27
MD5 5f5aa1614a01450cfca095ed8f66e88a
BLAKE2b-256 6c517d138b48517c83247ecd7d4aecda499acd1a6eca6235065411daa20b811f

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