SameDev / SameDev/lunare

#1 Feature: Playlist Import & Library Synchronization

Open
#1 0 comments 0 reactions 1 assignee View on GitHub

@SameDev is already working on this.

Since Jul 20, 2026.

enhancement good first issue
Dominant language
TypeScript
Stars
2
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Summary

Implement a playlist import system capable of importing playlists from multiple music platforms while preserving metadata and automatically organizing the local library.

The goal is to make MusicHub more than a downloader: it should become a complete personal music library manager capable of recreating playlists locally with high-quality metadata.


Motivation

Many users already have playlists on streaming platforms such as Spotify, YouTube Music or Deezer.

Instead of manually downloading tracks one by one, MusicHub should be able to:

  • Import an existing playlist.
  • Retrieve all available metadata.
  • Download the corresponding audio.
  • Embed metadata and artwork.
  • Organize the files in the local library.
  • Keep the playlist synchronized over time.

Supported Platforms

Initial targets
  • YouTube
  • YouTube Music
  • Spotify
  • Deezer
  • SoundCloud
Future support
  • Apple Music
  • TIDAL
  • Bandcamp
  • Public playlist URLs
  • Local .m3u / .m3u8 playlists

Proposed Workflow

Import Playlist
        ↓
Read playlist information
        ↓
Retrieve track list
        ↓
Match tracks
        ↓
Download audio
        ↓
Fetch metadata
        ↓
Download artwork
        ↓
Embed metadata
        ↓
Organize library
        ↓
Create local playlist

Metadata Preservation

Whenever available, preserve:

  • Track title
  • Artist(s)
  • Album
  • Album artist
  • Track number
  • Disc number
  • Release year
  • Genre
  • Cover artwork
  • Duration
  • ISRC
  • Explicit flag

Future:

  • Lyrics
  • Composer
  • BPM
  • Musical key

Metadata Providers

Possible providers:

  • MusicBrainz
  • Cover Art Archive
  • Deezer API
  • Spotify API
  • Last.fm (future)

Synchronization

Support optional playlist synchronization.

Features:

  • Detect newly added tracks.
  • Download only missing songs.
  • Skip duplicates.
  • Remove deleted tracks (optional).
  • Manual sync.
  • Scheduled automatic sync.

Duplicate Detection

Avoid downloading the same song multiple times.

Possible matching strategies:

  • ISRC
  • Artist + Title
  • Artist + Album + Track Number
  • Audio fingerprint (future)

User Experience

The import wizard should allow users to:

  • Paste a playlist URL.
  • Choose the destination folder.
  • Select the preferred audio format.
  • Configure audio quality.
  • Choose metadata providers.
  • Decide whether artwork should be downloaded.
  • Enable automatic synchronization.

Display:

  • Total tracks.
  • Successfully imported.
  • Failed.
  • Skipped.
  • Duplicates found.
  • Overall progress.

Possible Future Enhancements

  • Smart search when a track cannot be found.
  • Automatic metadata correction.
  • Multi-source fallback.
  • Playlist export.
  • Import from CSV.
  • Import from JSON.
  • Bulk playlist imports.
  • Cross-platform playlist migration.

Benefits

  • Makes MusicHub a complete personal music library manager rather than just a download interface.
  • Greatly improves migration from streaming services.
  • Keeps local libraries organized and synchronized.
  • Preserves as much metadata as possible.
  • Provides a seamless experience for self-hosted music collections.

Acceptance Criteria

  • Import playlists from supported platforms.
  • Create a local playlist automatically.
  • Preserve track order.
  • Download and embed metadata.
  • Download album artwork.
  • Organize files according to library rules.
  • Detect duplicate tracks.
  • Support optional playlist synchronization.
  • Show detailed progress and import statistics.
  • Expose the feature through both the Web UI and REST API.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.