Updated Lidarr configuration details in the README.
🎵 Lidarr Barcode Scanner Integration
This project provides a web-based barcode scanner connected to a Flask backend that integrates directly with Lidarr. It allows users to scan the barcode of a CD or vinyl, retrieve album information from MusicBrainz, confirm the details, and automatically add the album to Lidarr while displaying real-time progress updates.
🚀 Features
🔍 Barcode Scanning
- Uses QuaggaJS for live camera scanning (EAN-13 barcodes).
- Works with any webcam or mobile device camera.
- Automatically detects valid barcodes and fetches album info.
- Visual scanning guides help align the barcode correctly.
🎶 Album Lookup (MusicBrainz)
-
Once a barcode is detected, the app retrieves:
- Artist name
- Album title
- Release information from the MusicBrainz API
-
Displays the album and artist name for user confirmation.
➕ Add to Lidarr
-
After confirming the album, the user can click “Add Album to Lidarr”.
-
The Flask backend communicates with your Lidarr API:
- Verifies if the artist already exists.
- Creates the artist in Lidarr if missing.
- Adds and monitors the album automatically.
-
A live progress bar shows the operation stages:
- Processing barcode
- Retrieving album data
- Checking/creating artist
- Adding/monitoring album
💡 Utility Controls
- Reset button: Clears the scanner, progress bar, and album info for a new scan.
- Start/Stop scanner: Full control of scanning state.
🧩 UI Highlights
- Clean Lidarr-inspired dark theme.
- Responsive layout compatible with desktop and mobile browsers.
- Inline progress updates via Server-Sent Events (SSE) for smooth feedback.
⚙️ Setup & Configuration
1. Requirements
- Python 3.9+
- Flask
- Requests
Install dependencies:
pip install flask requests
2. Configure Lidarr API
Edit the following variables in your app.py:
# Your Lidarr config
LIDARR_URL = "https://XXXX"
API_KEY = "XXXXX"
HEADERS = {"X-Api-Key": API_KEY}
LIDARR_DEFAULTS = {
"rootFolderPath": "/music",
"qualityProfileId": 2,
"metadataProfileId": 9,
"monitored": False,
"monitorNewItems": "none",
"addOptions": {
"searchForMissingAlbums": False
}
}
Ensure that your Lidarr instance is reachable and the API key is valid.
3. Run the Application
Start Flask:
python app.py
Then open your browser and navigate to:
http://localhost:5083
4. Usage
- Click Start Scanner.
- Point your camera at a CD barcode.
- Confirm the album details from MusicBrainz.
- Click Add Album to Lidarr.
- Watch progress updates until completion.
📱 Mobile Camera Access
If you want to use your phone camera to scan barcodes:
⚠️ Browsers only allow camera access on secure (HTTPS) connections or localhost.
🧠 Architecture Overview
Frontend:
- HTML + CSS + JavaScript (QuaggaJS)
- Fetches MusicBrainz data and displays results
- Sends album addition requests to Flask via
POST /submit - Listens to server-sent progress events for updates
Backend (Flask):
-
Handles barcode submission
-
Integrates with:
- MusicBrainz API (for metadata)
- Lidarr API (for artist and album management)
-
Streams progress updates to the browser in real time
📸 Example Workflow
- Scan barcode → “💿 CD Barcode detected: 602438979812”
- Fetch MusicBrainz info → “🎵 Album found: Ghost Stories by Coldplay”
- Confirm addition → “✅ Artist created and album added to Lidarr”
🧰 Optional Enhancements
- Display album cover from MusicBrainz or Cover Art Archive.
- Support manual input for fallback barcodes.
- Add multiple Lidarr root folders or quality profiles as configuration options.
🛠️ License
This project is distributed under the MIT License.