Replace Apple Music with Spotify on Discogs release pages
Discotify is a Chrome extension that automatically replaces Apple Music embeds on Discogs with Spotify players. Browse vinyl releases and listen instantly on your preferred streaming service.
| Feature | Description |
|---|---|
| π Auto-Replace | Detects Apple Music players and swaps them with Spotify |
| π― Smart Matching | Fuzzy search algorithm finds the right album |
| π Multi-language | Works on all Discogs locales (/de/, /ja/, /fr/, etc.) |
| π¨ Native Look | Dark-themed player matches Discogs aesthetic |
| β‘ SPA Support | Works with Discogs' client-side navigation |
| π Privacy First | Credentials stored locally, never shared |
β Install from Chrome Web Store
git clone https://github.com/allexlima/discotify.git- Open
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked β select the
discotifyfolder
- Go to Spotify Developer Dashboard
- Click Create App
- Fill in:
- Name:
Discotify - Redirect URI: Copy from the extension popup
- Check Web API
- Name:
- Save β Settings β Copy Client ID and Client Secret
- Click the Discotify extension icon
- Paste your credentials
- Click Save & Connect
β Done! Visit any Discogs release page to see it in action.
Discogs Page β Detect Apple Music β Extract Metadata β Search Spotify β Embed Player
- Detection: Scans for Apple Music widgets or audio sections
- Extraction: Parses artist and album from page metadata
- Search: Queries Spotify API with multiple search strategies
- Matching: Scores results using fuzzy matching algorithm
- Display: Embeds the best match as a Spotify player
| Status | Meaning |
|---|---|
| π’ Connected | Ready to use |
| π‘ Checking | Validating credentials |
| π΄ Error | Check your Client ID/Secret |
| βͺ Setup needed | Enter credentials |
Spotify requires authentication for search. The extension uses Client Credentials Flow:
- β No Spotify login required
- β Free account works
- β Keys stay in your browser
- β Auto-refreshes tokens
discotify/
βββ manifest.json # Extension manifest (V3)
βββ package.json # Dev dependencies
βββ icons/ # Extension icons (SVG + PNGs)
βββ src/
βββ background/
β βββ background.js # Spotify API, auth, search
βββ content/
β βββ content.js # Page detection & injection
β βββ styles.css # Player styles
βββ popup/
βββ popup.html # Settings UI
βββ popup.css
βββ popup.js
npm install # Install dev dependencies
npm run lint # ESLint check
npm run format # Prettier format- Edit files in
src/ - Go to
chrome://extensions/β Click π on Discotify - Refresh the Discogs page
| Component | How to Debug |
|---|---|
| Content Script | DevTools Console on Discogs β filter [Discotify] |
| Background | chrome://extensions/ β "Service Worker" link |
| Popup | Right-click extension icon β "Inspect Popup" |
Contributions welcome! Please:
- Fork the repo
- Create a feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing) - Open a Pull Request
This project uses GitHub Actions to automatically deploy new versions to the Chrome Web Store.
-
Update the code and ensure all changes are committed to the
mainbranch -
Create and push a version tag:
git tag v1.0.1 git push origin v1.0.1
-
Automatic deployment happens via GitHub Actions:
- Updates
manifest.jsonwith the new version - Creates a production-ready zip file
- Uploads to Chrome Web Store
- Publishes the extension
- Creates a GitHub release
- Updates
Follow Semantic Versioning:
v1.0.0- Major release (breaking changes)v1.1.0- Minor release (new features, backward compatible)v1.0.1- Patch release (bug fixes)
To enable automated deployment, the following GitHub repository secrets must be configured:
| Secret | Description | How to Get |
|---|---|---|
CHROME_CLIENT_ID |
OAuth Client ID | Google Cloud Console β APIs & Services β Credentials |
CHROME_CLIENT_SECRET |
OAuth Client Secret | Same as above |
CHROME_REFRESH_TOKEN |
OAuth Refresh Token | Run npm run get-refresh-token |
CHROME_EXTENSION_ID |
Extension ID | ghbmjpggoefbcffdflkjnddhlibchlch |
-
Enable Chrome Web Store API:
- Go to Google Cloud Console
- Create or select a project
- Navigate to "APIs & Services" β "Enable APIs and Services"
- Search for "Chrome Web Store API" and enable it
-
Create OAuth Credentials:
- Go to "APIs & Services" β "Credentials"
- Click "Create Credentials" β "OAuth client ID"
- Application type: "Desktop app" or "Web application"
- Add redirect URI:
http://localhost:8080/oauth2callback - Save your Client ID and Client Secret
-
Generate Refresh Token:
npm install npm run get-refresh-token
Follow the prompts to authorize and obtain your refresh token.
-
Add Secrets to GitHub:
- Go to your repository β Settings β Secrets and variables β Actions
- Click "New repository secret"
- Add all four secrets listed above
To test the build process locally:
npm install
npm run buildThis creates dist/extension.zip ready for Chrome Web Store upload.
This extension is not affiliated with Spotify, Apple, or Discogs. All trademarks belong to their respective owners.
Vibecoded by Allex with π for vinyl lovers