docs: update README — importer sources, metadata editor, file conventions, project structure
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
4842c89c4e
commit
5093ce1f9d
1 file changed
+30
-9
@@ -22,6 +22,7 @@ Built with Vite + vanilla ES modules, served via nginx in Docker.
|
|||||||
|
|
||||||
### Playback
|
### Playback
|
||||||
- Queue management with shuffle, repeat (all / once), and radio mode (endless random)
|
- Queue management with shuffle, repeat (all / once), and radio mode (endless random)
|
||||||
|
- Spotify-style shuffle — pre-shuffles the full queue so every song plays exactly once
|
||||||
- Now Playing overlay with swipe-to-dismiss; queue tab stays active when selecting a song from the queue
|
- Now Playing overlay with swipe-to-dismiss; queue tab stays active when selecting a song from the queue
|
||||||
- Lock screen media controls (Android / iOS via Media Session API)
|
- Lock screen media controls (Android / iOS via Media Session API)
|
||||||
- Gapless-style queue with prev/next, skip forward/back
|
- Gapless-style queue with prev/next, skip forward/back
|
||||||
@@ -29,13 +30,24 @@ Built with Vite + vanilla ES modules, served via nginx in Docker.
|
|||||||
|
|
||||||
### Discovery
|
### Discovery
|
||||||
- iTunes / Last.fm integration — charts, global search, 30-second previews, similar artists, recommendations
|
- iTunes / Last.fm integration — charts, global search, 30-second previews, similar artists, recommendations
|
||||||
- Spotify playlist importer — paste a Spotify playlist URL to preview and download all tracks, enriched with iTunes metadata and cover art
|
- Song Importer — paste a link from Spotify, YouTube, YouTube Music, or SoundCloud to preview and download tracks, enriched with iTunes metadata and cover art
|
||||||
|
|
||||||
### Downloads (yt-dlp backend)
|
### Downloads (yt-dlp backend)
|
||||||
- Download individual tracks, full albums, or entire artists from YouTube / SoundCloud
|
- Download individual tracks, full albums, or entire artists
|
||||||
- Spotify playlist importer downloads with iTunes-enriched metadata (album, year, track number, genre, cover art)
|
- Sources: YouTube Music (primary), YouTube, SoundCloud, Spotify (via playlist importer)
|
||||||
|
- iTunes enrichment — album, year, track number, genre, 1000×1000 cover art
|
||||||
- Duplicate detection — skips tracks already present on the server
|
- Duplicate detection — skips tracks already present on the server
|
||||||
- Lyrics embedded into downloaded files (LRCLIB)
|
- Standard filename convention: `{01 - }Artist1, Artist2 - Title.ext`
|
||||||
|
- Files organised into `MusicRoot/AlbumArtist/Album/` folders automatically
|
||||||
|
|
||||||
|
### Metadata Editor
|
||||||
|
- Edit title, artist, album artist, album, genre, year, track number, disc number from within the app
|
||||||
|
- Update embedded cover art via URL or file upload
|
||||||
|
- Artist separator normalization — accepts `•`, `;`, `,` as input; stores as `;` (Navidrome/MusicBrainz style)
|
||||||
|
- File renamed automatically on save to match the standard naming convention
|
||||||
|
- File moved to the correct `AlbumArtist/Album/` folder when those fields change
|
||||||
|
- Empty folders cleaned up after a move
|
||||||
|
- Navidrome rescan triggered automatically after every save
|
||||||
|
|
||||||
### Playlists
|
### Playlists
|
||||||
- Create, edit, and delete playlists
|
- Create, edit, and delete playlists
|
||||||
@@ -67,18 +79,27 @@ Music_App/
|
|||||||
│ ├── api.js # Subsonic API, Navidrome REST, iTunes API
|
│ ├── api.js # Subsonic API, Navidrome REST, iTunes API
|
||||||
│ ├── player.js # Playback, transport, queue, media session, preview
|
│ ├── player.js # Playback, transport, queue, media session, preview
|
||||||
│ ├── views.js # Navigation, page loaders, card makers, search
|
│ ├── views.js # Navigation, page loaders, card makers, search
|
||||||
│ ├── ui.js # Modals, overlays, sidebar, settings, context menu
|
│ ├── ui.js # Modals, overlays, sidebar, settings, context menu, metadata editor
|
||||||
│ ├── nowplaying.js # Now Playing overlay
|
│ ├── nowplaying.js # Now Playing overlay
|
||||||
│ ├── abs.js # Audiobookshelf integration
|
│ ├── abs.js # Audiobookshelf integration
|
||||||
│ ├── spotify.js # Spotify playlist importer
|
│ ├── spotify.js # Spotify importer (resolve + download)
|
||||||
│ ├── components.js # Shared UI components
|
│ ├── youtube.js # YouTube / YouTube Music importer
|
||||||
|
│ ├── soundcloud.js # SoundCloud importer
|
||||||
|
│ ├── components.js # Shared UI components (song rows, cards)
|
||||||
│ ├── themes.js # Theme switching
|
│ ├── themes.js # Theme switching
|
||||||
│ ├── pwa.js # Service worker registration + update banner
|
│ ├── pwa.js # Service worker registration + update banner
|
||||||
│ └── main.js # App init, audio wiring, window globals
|
│ └── main.js # App init, audio wiring, window globals
|
||||||
├── backend/
|
├── backend/
|
||||||
│ ├── novasonic-server.js # Node.js download backend (yt-dlp + ffmpeg)
|
│ ├── novasonic-server.js # Express API: download jobs, metadata edit, resolvers
|
||||||
|
│ ├── spotify_resolve.py # Spotify page scraper (track/album/playlist metadata)
|
||||||
│ └── lib/
|
│ └── lib/
|
||||||
│ └── metadata.js # iTunes lookup, lyrics fetch, artwork download
|
│ ├── config.js # Backend config (env vars, paths, format)
|
||||||
|
│ ├── jobs.js # In-memory job store + log helper
|
||||||
|
│ ├── metadata.js # iTunes lookup, artwork download, lyrics fetch, filename helpers
|
||||||
|
│ ├── ytdlp.js # yt-dlp download cascade + ffmpeg metadata embedding
|
||||||
|
│ ├── squid.js # Squid/Qobuz download backend
|
||||||
|
│ ├── downloader.js # Unified downloadTrack / downloadAlbumTracks entry point
|
||||||
|
│ └── romaji.js # Japanese → romaji index for search
|
||||||
├── public/ # Static assets (copied as-is to dist/)
|
├── public/ # Static assets (copied as-is to dist/)
|
||||||
│ ├── sw.js # Service worker
|
│ ├── sw.js # Service worker
|
||||||
│ ├── manifest.json # PWA manifest
|
│ ├── manifest.json # PWA manifest
|
||||||
|
|||||||
Reference in new issue
Block a user