Deluan
a7260727dd
feat(subsonic): implement transcode decision logic and codec handling for media files
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-08 20:06:29 -05:00
Maximilian
a704e86ac1
refactor: run Go modernize ( #5002 )
2026-02-08 09:57:30 -05:00
Deluan
408aa78ed5
fix(scanner): log warning when metadata extraction fails
...
Added a warning log when the gotaglib extractor fails to read metadata
from a file. Previously, extraction errors were silently skipped, making
it difficult to diagnose issues with unreadable files during scanning.
Ref: https://github.com/navidrome/navidrome/issues/4604#issuecomment-3865690165
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-07 21:39:07 -05:00
Kendall Garner
1e37e680d7
feat(agents): Add artist url and top and similar songs to ListenBrainz agent ( #4934 )
...
* feat(agents): Add artist url and top songs to ListenBrainz agent
* add newline at end of file
* respond to some feedback
* add more tests, include more metadata in top songs
* add duration to album info
* add similar artists from labs
* add similar artists and track radio
* fix(client): replace sort with slices.SortFunc for deterministic ordering of recordings with same score
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: typos
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: use struct literal initialization consistently
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: configurable artist and track algorithms
Signed-off-by: Deluan <deluan@navidrome.org >
* test configuration changes
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan Quintão <deluan@navidrome.org >
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-07 13:20:42 -05:00
Deluan
e11206f0ee
fix(lastfm): clean up Last.fm content by removing "Read more" links from descriptions and bios
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-06 16:52:34 -05:00
Deluan
4e720ee931
fix: handle WASM runtime panics in gotaglib openFile function.
...
see #4977
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-03 22:56:47 -05:00
Deluan
15526b25e5
docs: fix gotaglib comment
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-02-02 17:34:54 -05:00
Deluan Quintão
7b523d6b61
feat(agents): support multiple languages for Last.fm and Deezer metadata ( #4952 )
...
* feat(lastfm): support multiple languages for album and artist info retrieval
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(lastfm): improve content validation for album and artist descriptions
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(lastfm): remove single language test and clarify languages field in configuration
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(deezer): support multiple languages for artist bio retrieval
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(lastfm): rename ignoredBiographies to ignoredContent for clarity
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-29 13:05:51 -05:00
Deluan
51026de80b
fix(lastfm): send parameters in request body for POST requests in scrobble and updateNowPlaying methods
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-26 20:13:04 -05:00
Deluan Quintão
fda35dd8ce
feat(plugins): add similar songs retrieval functions and improve duration consistency ( #4933 )
...
* feat: add duration filtering for similar songs matching
Signed-off-by: Deluan <deluan@navidrome.org >
* test: refactor expectations for similar songs in provider matching tests
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(plugins): add functions to retrieve similar songs by track, album, and artist
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(plugins): support uint32 in ndpgen
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(plugins): update duration field to use seconds as float instead of milliseconds as uint32
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: add helper functions for Rust's skip_serializing_if with numeric types
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(provider): enhance track matching logic to fallback to title match when duration-filtered tracks fail
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-26 18:28:41 -05:00
Deluan Quintão
772d1f359b
feat: add similar songs functionality in agents, and Instant Mix (song-based) to UI ( #4919 )
...
* refactor: rename ArtistRadio to SimilarSongs for clarity and consistency
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: implement GetSimilarSongsByTrack and related functionality for song similarity retrieval
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance GetSimilarSongsByTrack to include artist and album details and update tests
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance song matching by implementing title and artist filtering in loadTracksByTitleAndArtist
Signed-off-by: Deluan <deluan@navidrome.org >
* test: add unit tests for song matching functionality in provider
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: extract song matching functionality into its own file
Signed-off-by: Deluan <deluan@navidrome.org >
* docs: clarify similarSongsFallback function description in provider.go
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: initialize result slice for songs with capacity based on response length
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: simplify agent method calls for retrieving images and similar songs
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: simplify agent method calls for retrieving images and similar songs
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: remove outdated comments in GetSimilarSongs methods
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: use composite key for song matches to handle duplicates by title and artist
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: consolidate expectations setup for similar songs tests
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: add instant mix action to song context menu and update translations
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(provider): handle unknown entity types in GetSimilarSongs
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: move playSimilar action to playbackActions and streamline song processing
Signed-off-by: Deluan <deluan@navidrome.org >
* format
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance instant mix functionality with loading notification and shuffle option
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: implement fuzzy matching for similar songs based on configurable threshold
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: implement track matching with multiple specificity levels
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: enhance track matching by implementing unified scoring with specificity levels
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance deezer top tracks result with album
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance track matching with fuzzy album similarity for improved scoring
Signed-off-by: Deluan <deluan@navidrome.org >
* docs: document multi-phase song matching algorithm with detailed scoring and prioritization
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-25 16:16:43 -05:00
Deluan
4ec6e7c56e
perf(taglib): update taglib to use ReadStyleFast for improved performance
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-18 21:10:06 -05:00
Deluan Quintão
2de2484bca
feat: add go-taglib pure Go metadata extractor ( #4902 )
...
* feat: implement go-taglib extractor
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance ID3v2 frame parsing for language-specific lyrics
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: add support for reading iTunes-specific tags from M4A files
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: expose BitDepth in AudioProperties struct
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance WMA tag parsing by adding support for ASF attributes
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance ID3v2 frame parsing for WAV and AIFF formats to support language codes
Signed-off-by: Deluan <deluan@navidrome.org >
* chore: usa a ignored go.work for local dependency management
* feat: optimize metadata extraction by consolidating file reads and improving tag processing
Signed-off-by: Deluan <deluan@navidrome.org >
* remove comment
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: improve language code extraction for lyrics tags in metadata processing
Signed-off-by: Deluan <deluan@navidrome.org >
* address PR comments
Signed-off-by: Deluan <deluan@navidrome.org >
* chore: remove outdated comments in gotaglib.go
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: enhance extractor to utilize filesystem for file handling
Signed-off-by: Deluan <deluan@navidrome.org >
* chore: update go-taglib dependency version in go.mod and go.sum
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: make new go-taglib extractor default
Signed-off-by: Deluan <deluan@navidrome.org >
* chore: formatting
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-18 14:42:53 -05:00
Deluan
7b9bc1c5ac
refactor: move agent files to adapters for consistency
...
Signed-off-by: Deluan <deluan@navidrome.org >
2026-01-14 19:33:54 -05:00
Deluan Quintão
cce11c5416
fix(scanner): restore basic tag extraction fallback mechanism for improved metadata parsing ( #4401 )
...
* feat: add basic tag extraction fallback mechanism
Added basic tag extraction from TagLib's generic Tag interface as a fallback
when PropertyMap doesn't contain standard metadata fields. This ensures that
essential tags like title, artist, album, comment, genre, year, and track
are always available even when they're not present in format-specific
property maps.
Changes include:
- Extract basic tags (__title, __artist, etc.) in C++ wrapper
- Add parseBasicTag function to process basic tags in Go extractor
- Refactor parseProp function to be reusable across property parsing
- Ensure basic tags are preferred over PropertyMap when available
* feat(taglib): update tag parsing to use double underscores for properties
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-10-26 19:38:34 -04:00
Kendall Garner
6730716d26
fix(scanner): lyrics tag parsing to properly handle both ID3 and aliased tags
...
* fix(taglib): parse both id3 and aliased tags, as lyrics appears to be mapped to lyrics-xxx
* address feedback, make confusing test more stable
2025-07-09 00:27:40 -03:00
Kendall Garner
d4f869152b
fix(scanner): read cover art from dsf, wavpak, fix wma test ( #4296 )
...
* fix(taglib): read cover art from dsf
* address feedback and alsi realize wma/wavpack are missing
* feedback
* more const char and remove unused import
2025-07-02 22:04:27 -04:00
Kendall Garner
7640c474cf
fix: Allow nullable ReplayGain and support 0.0 ( #4239 )
...
* fix(ui,scanner,subsonic): Allow nullable replaygain and support 0.0
Resolves #4236 .
Makes the replaygain columns (track/album gain/peak) nullable.
Converts the type to a pointer, allowing for 0.0 (a valid value) to be returned from Subsonic.
Updates tests for this behavior.
* small refactor
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan <deluan@navidrome.org >
2025-06-17 12:02:25 -04:00
Deluan Quintão
e3f740cafb
chore(deps): update TagLib to version 2.1 ( #4185 )
...
* chore: update cross-taglib
* fix(taglib): add logging for TagLib version
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-06-08 15:47:56 -04:00
Kendall Garner
0d1f2bcc8a
fix(scanner): check if aiff/wma file has cover art ( #3996 )
...
* check if aiff file has cover art
* add cover art to test files, more support in wrapper
* remove wavpak since tag does't read it anyway
2025-04-25 13:00:26 -04:00
Deluan
3f9d173495
fix(scanner): support ID3v2 embedded images in WAV files
...
Fix #3867
Signed-off-by: Deluan <deluan@navidrome.org >
2025-03-22 15:48:07 -04:00
Deluan Quintão
c795bcfcf7
feat(bfr): Big Refactor: new scanner, lots of new fields and tags, improvements and DB schema changes ( #2709 )
...
* fix(server): more race conditions when updating artist/album from external sources
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(scanner): add .gitignore syntax to .ndignore. Resolves #1394
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): null
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): pass configfile option to child process
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): resume interrupted fullScans
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): remove old scanner code
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): rename old metadata package
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): move old metadata package
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: tests
Signed-off-by: Deluan <deluan@navidrome.org >
* chore(deps): update Go to 1.23.4
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: logs
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(test):
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: log level
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: remove log message
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: add config for scanner watcher
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: children playlists
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: replace `interface{}` with `any`
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: smart playlists with genres
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: allow any tags in smart playlists
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: artist names in playlists
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: smart playlist's sort by tags
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add moods to child
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add moods to AlbumID3
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(subsonic): use generic JSONArray for OS arrays
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(subsonic): use https in test
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add releaseTypes to AlbumID3
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add recordLabels to AlbumID3
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(subsonic): rename JSONArray to Array
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add artists to AlbumID3
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add artists to Child
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(scanner): do not pre-populate smart playlists
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): implement a simplified version of ArtistID3.
See https://github.com/opensubsonic/open-subsonic-api/discussions/120
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add artists to album child
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add contributors to mediafile Child
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add albumArtists to mediafile Child
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add displayArtist and displayAlbumArtist
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add displayComposer to Child
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add roles to ArtistID3
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(subsonic): use " • " separator for displayComposer
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor:
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(subsonic):
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(subsonic): respect `PreferSortTags` config option
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(subsonic):
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: optimize purging non-unused tags
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: don't run 'refresh artist stats' concurrently with other transactions
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor:
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: log message
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: add Scanner.ScanOnStartup config option, default true
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: better json parsing error msg when importing NSPs
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't update album's imported_time when updating external_metadata
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: handle interrupted scans and full scans after migrations
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: run `analyze` when migration requires a full rescan
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: run `PRAGMA optimize` at the end of the scan
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't update artist's updated_at when updating external_metadata
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: handle multiple artists and roles in smart playlists
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(ui): dim missing tracks
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: album missing logic
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: error encoding in gob
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: separate warnings from errors
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: mark albums as missing if they were contained in a deleted folder
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: add participant names to media_file and album tables
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: use participations in criteria, instead of m2m relationship
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: rename participations to participants
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add moods to album child
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: albumartist role case
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(scanner): run scanner as an external process by default
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): show albumArtist names
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): dim out missing albums
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: flaky test
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(server): scrobble buffer mapping. fix #3583
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: more participations renaming
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: listenbrainz scrobbling
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: send release_group_mbid to listenbrainz
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): implement OpenSubsonic explicitStatus field (#3597 )
* feat: implement OpenSubsonic explicitStatus field
* fix(subsonic): fix failing snapshot tests
* refactor: create helper for setting explicitStatus
* fix: store smaller values for explicit-status on database
* test: ToAlbum explicitStatus
* refactor: rename explicitStatus helper function
---------
Co-authored-by: Deluan Quintão <deluan@navidrome.org >
* fix: handle album and track tags in the DB based on the mappings.yaml file
Signed-off-by: Deluan <deluan@navidrome.org >
* save similar artists as JSONB
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: getAlbumList byGenre
Signed-off-by: Deluan <deluan@navidrome.org >
* detect changes in PID configuration
Signed-off-by: Deluan <deluan@navidrome.org >
* set default album PID to legacy_pid
Signed-off-by: Deluan <deluan@navidrome.org >
* fix tests
Signed-off-by: Deluan <deluan@navidrome.org >
* fix SIGSEGV
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't lose album stars/ratings when migrating
Signed-off-by: Deluan <deluan@navidrome.org >
* store full PID conf in properties
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: keep album annotations when changing PID.Album config
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: reassign album annotations
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: use (display) albumArtist and add links to each artist
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: not showing albums by albumartist
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: error msgs
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: hide PID from Native API
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: album cover art resolution
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: trim participant names
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: reduce watcher log spam
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: panic when initializing the watcher
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: various artists
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't store empty lyrics in the DB
Signed-off-by: Deluan <deluan@navidrome.org >
* remove unused methods
Signed-off-by: Deluan <deluan@navidrome.org >
* drop full_text indexes, as they are not being used by SQLite
Signed-off-by: Deluan <deluan@navidrome.org >
* keep album created_at when upgrading
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): null pointer
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: album artwork cache
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't expose missing files in Subsonic API
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: searchable interface
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: filter out missing items from subsonic search
* fix: filter out missing items from playlists
* fix: filter out missing items from shares
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(ui): add filter by artist role
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): only return albumartists in getIndexes and getArtists endpoints
Signed-off-by: Deluan <deluan@navidrome.org >
* sort roles alphabetically
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: artist playcounts
Signed-off-by: Deluan <deluan@navidrome.org >
* change default Album PID conf
Signed-off-by: Deluan <deluan@navidrome.org >
* fix albumartist link when it does not match any albumartists values
Signed-off-by: Deluan <deluan@navidrome.org >
* fix `Ignoring filter not whitelisted` (role) message
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: trim any names/titles being imported
Signed-off-by: Deluan <deluan@navidrome.org >
* remove unused genre code
Signed-off-by: Deluan <deluan@navidrome.org >
* serialize calls to Last.fm's getArtist
Signed-off-by: Deluan <deluan@navidrome.org >
xxx
Signed-off-by: Deluan <deluan@navidrome.org >
* add counters to genres
Signed-off-by: Deluan <deluan@navidrome.org >
* nit: fix migration `notice` message
Signed-off-by: Deluan <deluan@navidrome.org >
* optimize similar artists query
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: last.fm.getInfo when mbid does not exist
Signed-off-by: Deluan <deluan@navidrome.org >
* ui only show missing items for admins
Signed-off-by: Deluan <deluan@navidrome.org >
* don't allow interaction with missing items
Signed-off-by: Deluan <deluan@navidrome.org >
* Add Missing Files view (WIP)
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: merged tag_counts into tag table
Signed-off-by: Deluan <deluan@navidrome.org >
* add option to completely disable automatic scanner
Signed-off-by: Deluan <deluan@navidrome.org >
* add delete missing files functionality
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: playlists not showing for regular users
Signed-off-by: Deluan <deluan@navidrome.org >
* reduce updateLastAccess frequency to once every minute
Signed-off-by: Deluan <deluan@navidrome.org >
* reduce update player frequency to once every minute
Signed-off-by: Deluan <deluan@navidrome.org >
* add timeout when updating player
Signed-off-by: Deluan <deluan@navidrome.org >
* remove dead code
Signed-off-by: Deluan <deluan@navidrome.org >
* fix duplicated roles in stats
Signed-off-by: Deluan <deluan@navidrome.org >
* add `; ` to artist splitters
Signed-off-by: Deluan <deluan@navidrome.org >
* fix stats query
Signed-off-by: Deluan <deluan@navidrome.org >
* more logs
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: support legacy clients (DSub) by removing OpenSubsonic extra fields - WIP
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: support legacy clients (DSub) by removing OpenSubsonic extra fields - WIP
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: support legacy clients (DSub) by removing OpenSubsonic extra fields - WIP
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: support legacy clients (DSub) by removing OpenSubsonic extra fields - WIP
Signed-off-by: Deluan <deluan@navidrome.org >
* add record label filter
Signed-off-by: Deluan <deluan@navidrome.org >
* add release type filter
Signed-off-by: Deluan <deluan@navidrome.org >
* fix purgeUnused tags
Signed-off-by: Deluan <deluan@navidrome.org >
* add grouping filter to albums
Signed-off-by: Deluan <deluan@navidrome.org >
* allow any album tags to be used in as filters in the API
Signed-off-by: Deluan <deluan@navidrome.org >
* remove empty tags from album info
Signed-off-by: Deluan <deluan@navidrome.org >
* comments in the migration
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: Cannot read properties of undefined
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: listenbrainz scrobbling (#3640 )
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: remove duplicated tag values
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: don't ignore the taglib folder!
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: show track subtitle tag
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: show artists stats based on selected role
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: inspect
Signed-off-by: Deluan <deluan@navidrome.org >
* add media type to album info/filters
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: change format of subtitle in the UI
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: subtitle in Subsonic API and search
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: subtitle in UI's player
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: split strings should be case-insensitive
Signed-off-by: Deluan <deluan@navidrome.org >
* disable ScanSchedule
Signed-off-by: Deluan <deluan@navidrome.org >
* increase default sessiontimeout
Signed-off-by: Deluan <deluan@navidrome.org >
* add sqlite command line tool to docker image
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: resources override
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: album PID conf
Signed-off-by: Deluan <deluan@navidrome.org >
* change migration to mark current artists as albumArtists
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(ui): Allow filtering on multiple genres (#3679 )
* feat(ui): Allow filtering on multiple genres
Signed-off-by: Henrik Nordvik <henrikno@gmail.com >
Signed-off-by: Deluan <deluan@navidrome.org >
* add multi-genre filter in Album list
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Henrik Nordvik <henrikno@gmail.com >
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Henrik Nordvik <henrikno@gmail.com >
* add more multi-valued tag filters to Album and Song views
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): unselect missing files after removing
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): song filter
Signed-off-by: Deluan <deluan@navidrome.org >
* fix sharing tracks. fix #3687
Signed-off-by: Deluan <deluan@navidrome.org >
* use rowids when using search for sync (ex: Symfonium)
Signed-off-by: Deluan <deluan@navidrome.org >
* fix "Report Real Paths" option for subsonic clients
Signed-off-by: Deluan <deluan@navidrome.org >
* fix "Report Real Paths" option for subsonic clients for search
Signed-off-by: Deluan <deluan@navidrome.org >
* add libraryPath to Native API /songs endpoint
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(subsonic): add album version
Signed-off-by: Deluan <deluan@navidrome.org >
* made all tags lowercase as they are case-insensitive anyways.
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(ui): Show full paths, extended properties for album/song (#3691 )
* feat(ui): Show full paths, extended properties for album/song
- uses library path + os separator + path
- show participants (album/song) and tags (song)
- make album/participant clickable in show info
* add source to path
* fix pathSeparator in UI
Signed-off-by: Deluan <deluan@navidrome.org >
* fix local artist artwork (#3695 )
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: parse vorbis performers
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: clean function into smaller functions
Signed-off-by: Deluan <deluan@navidrome.org >
* fix translations for en and pt
Signed-off-by: Deluan <deluan@navidrome.org >
* add trace log to show annotations reassignment
Signed-off-by: Deluan <deluan@navidrome.org >
* add trace log to show annotations reassignment
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: allow performers without instrument/subrole
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: metadata clean function again
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: optimize split function
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: split function is now a method of TagConf
Signed-off-by: Deluan <deluan@navidrome.org >
* fix: humanize Artist total size
Signed-off-by: Deluan <deluan@navidrome.org >
* add album version to album details
Signed-off-by: Deluan <deluan@navidrome.org >
* don't display album-level tags in SongInfo
Signed-off-by: Deluan <deluan@navidrome.org >
* fix genre clicking in Album Page
Signed-off-by: Deluan <deluan@navidrome.org >
* don't use mbids in Last.fm api calls.
From https://discord.com/channels/671335427726114836/704303730660737113/1337574018143879248 :
With MBID:
```
GET https://ws.audioscrobbler.com/2.0/?api_key=XXXX&artist=Van+Morrison&format=json&lang=en&mbid=a41ac10f-0a56-4672-9161-b83f9b223559&method=artist.getInfo
{
artist: {
name: "Bee Gees",
mbid: "bf0f7e29-dfe1-416c-b5c6-f9ebc19ea810",
url: "https://www.last.fm/music/Bee+Gees ",
}
```
Without MBID:
```
GET https://ws.audioscrobbler.com/2.0/?api_key=XXXX&artist=Van+Morrison&format=json&lang=en&method=artist.getInfo
{
artist: {
name: "Van Morrison",
mbid: "a41ac10f-0a56-4672-9161-b83f9b223559",
url: "https://www.last.fm/music/Van+Morrison ",
}
```
Signed-off-by: Deluan <deluan@navidrome.org >
* better logging for when the artist folder is not found
Signed-off-by: Deluan <deluan@navidrome.org >
* fix various issues with artist image resolution
Signed-off-by: Deluan <deluan@navidrome.org >
* hide "Additional Tags" header if there are none.
Signed-off-by: Deluan <deluan@navidrome.org >
* simplify tag rendering
Signed-off-by: Deluan <deluan@navidrome.org >
* enhance logging for artist folder detection
Signed-off-by: Deluan <deluan@navidrome.org >
* make folderID consistent for relative and absolute folderPaths
Signed-off-by: Deluan <deluan@navidrome.org >
* handle more folder paths scenarios
Signed-off-by: Deluan <deluan@navidrome.org >
* filter out other roles when SubsonicArtistParticipations = true
Signed-off-by: Deluan <deluan@navidrome.org >
* fix "Cannot read properties of undefined"
Signed-off-by: Deluan <deluan@navidrome.org >
* fix lyrics and comments being truncated (#3701 )
* fix lyrics and comments being truncated
* specifically test for lyrics and comment length
* reorder assertions
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan <deluan@navidrome.org >
* fix(server): Expose library_path for playlist (#3705 )
Allows showing absolute path for UI, and makes "report real path" work for playlists (Subsonic)
* fix BFR on Windows (#3704 )
* fix potential reflected cross-site scripting vulnerability
Signed-off-by: Deluan <deluan@navidrome.org >
* hack to make it work on Windows
* ignore windows executables
* try fixing the pipeline
Signed-off-by: Deluan <deluan@navidrome.org >
* allow MusicFolder in other drives
* move windows local drive logic to local storage implementation
---------
Signed-off-by: Deluan <deluan@navidrome.org >
* increase pagination sizes for missing files
Signed-off-by: Deluan <deluan@navidrome.org >
* reduce level of "already scanning" watcher log message
Signed-off-by: Deluan <deluan@navidrome.org >
* only count folders with audio files in it
See https://github.com/navidrome/navidrome/discussions/3676#discussioncomment-11990930
Signed-off-by: Deluan <deluan@navidrome.org >
* add album version and catalog number to search
Signed-off-by: Deluan <deluan@navidrome.org >
* add `organization` alias for `recordlabel`
Signed-off-by: Deluan <deluan@navidrome.org >
* remove mbid from Last.fm agent
Signed-off-by: Deluan <deluan@navidrome.org >
* feat: support inspect in ui (#3726 )
* inspect in ui
* address round 1
* add catalogNum to AlbumInfo
Signed-off-by: Deluan <deluan@navidrome.org >
* remove dependency on metadata_old (deprecated) package
Signed-off-by: Deluan <deluan@navidrome.org >
* add `RawTags` to model
Signed-off-by: Deluan <deluan@navidrome.org >
* support parsing MBIDs for roles (from the https://github.com/kgarner7/picard-all-mbids plugin) (#3698 )
* parse standard roles, vorbis/m4a work for now
* fix djmixer
* working roles, use DJ-mix
* add performers to file
* map mbids
* add a few more tests
* add test
Signed-off-by: Deluan <deluan@navidrome.org >
* try to simplify the performers logic
Signed-off-by: Deluan <deluan@navidrome.org >
* stylistic changes
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan <deluan@navidrome.org >
* remove param mutation
Signed-off-by: Deluan <deluan@navidrome.org >
* run automated SQLite optimizations
Signed-off-by: Deluan <deluan@navidrome.org >
* fix playlists import/export on Windows
* fix import playlists
* fix export playlists
* better handling of Windows volumes
Signed-off-by: Deluan <deluan@navidrome.org >
* handle more album ID reassignments
Signed-off-by: Deluan <deluan@navidrome.org >
* allow adding/overriding tags in the config file
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(ui): Fix playlist track id, handle missing tracks better (#3734 )
- Use `mediaFileId` instead of `id` for playlist tracks
- Only fetch if the file is not missing
- If extractor fails to get the file, also error (rather than panic)
* optimize DB after each scan.
Signed-off-by: Deluan <deluan@navidrome.org >
* remove sortable from AlbumSongs columns
Signed-off-by: Deluan <deluan@navidrome.org >
* simplify query to get missing tracks
Signed-off-by: Deluan <deluan@navidrome.org >
* mark Scanner.Extractor as deprecated
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Signed-off-by: Henrik Nordvik <henrikno@gmail.com >
Co-authored-by: Caio Cotts <caio@cotts.com.br >
Co-authored-by: Henrik Nordvik <henrikno@gmail.com >
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com >
2025-02-19 20:35:17 -05:00