Deluan Quintão
2b84c574ba
fix: restore old date display/sort behaviour ( #3862 )
...
* fix(server): bring back legacy date mappings
Signed-off-by: Deluan <deluan@navidrome.org >
* reuse the mapDates logic in the legacyReleaseDate function
Signed-off-by: Deluan <deluan@navidrome.org >
* fix mappings
Signed-off-by: Deluan <deluan@navidrome.org >
* show original and release dates in album grid
Signed-off-by: Deluan <deluan@navidrome.org >
* fix tests based on new year mapping
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(subsonic): prefer returning original_year over (recording) year
when sorting albums
Signed-off-by: Deluan <deluan@navidrome.org >
* fix case when we don't have originalYear
Signed-off-by: Deluan <deluan@navidrome.org >
* show all dates in album's info, and remove the recording date from the album page
Signed-off-by: Deluan <deluan@navidrome.org >
* better?
Signed-off-by: Deluan <deluan@navidrome.org >
* add snapshot tests for Album Details
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(subsonic): sort order for getAlbumList?type=byYear
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2025-03-30 17:06:58 -04:00
Deluan
296259d781
feat(ui): show bitDepth in song info dialog
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-03-22 15:48:29 -04:00
Kendall Garner
212887214c
fix(ui): minor icon inconsistencies and "no missing files" translation ( #3837 )
...
* chore(ui): Fix minor inconsistencies
1. The icons in the user menu are a mix of MUI and react-icons. Move them all to react-icons, and use a standard size (24px)
2. On missing files page, provide a custom Empty component that just removes 'yet'
* use RA's builtin support for custom empty message
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
Co-authored-by: Deluan <deluan@navidrome.org >
2025-03-16 19:39:19 -04:00
Deluan
dd4802c0c6
fix(ui): remove unused term
...
Signed-off-by: Deluan <deluan@navidrome.org >
2025-02-19 22:38:09 -05: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
Deluan
6bc4c0317f
fix(insights): better status
...
Signed-off-by: Deluan <deluan@navidrome.org >
2024-12-19 17:21:08 -05:00
Deluan Quintão
2d8507cfd7
fix(ui): don't hide Last.fm scrobble switch ( #3561 )
...
Signed-off-by: Deluan <deluan@navidrome.org >
2024-12-19 09:08:28 -05:00
Deluan Quintão
8e2052ff95
feat(Insights): add anonymous usage data collection ( #3543 )
...
* feat(insights): initial code (WIP)
* feat(insights): add more info
* feat(insights): add fs info
* feat(insights): export insights.Data
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): more config info
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(insights): move data struct to its own package
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(insights): omit some attrs if empty
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): send insights to server, add option to disable
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(insights): remove info about anonymous login
Signed-off-by: Deluan <deluan@navidrome.org >
* chore(insights): fix lint
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(insights): disable collector if EnableExternalServices is false
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(insights): fix type casting for 32bit platforms
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(insights): remove EnableExternalServices from the collection (as it will always be false)
Signed-off-by: Deluan <deluan@navidrome.org >
* chore(insights): fix lint
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor(insights): rename function for consistency
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): log the data sent to the collector server
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): add last collection timestamp to the "about" dialog.
Also add opt-out info to the SignUp form
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): only sends the initial data collection after an admin user is created
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): remove dangling comment
Signed-off-by: Deluan <deluan@navidrome.org >
* feat(insights): Translate insights messages
Signed-off-by: Deluan <deluan@navidrome.org >
* fix(insights): reporting empty library
Signed-off-by: Deluan <deluan@navidrome.org >
* refactor: move URL to consts.js
Signed-off-by: Deluan <deluan@navidrome.org >
---------
Signed-off-by: Deluan <deluan@navidrome.org >
2024-12-17 17:10:55 -05:00
Deluan Quintão
a9334b7787
feat(ui): show user's lastAccess ( #3342 )
...
* feat(server): update user's lastAccess
* feat(ui): show user's lastAccess
2024-09-30 20:46:10 -04:00
Deluan Quintão
fcdd30ba8f
build(ui): migrate from CRA/Jest to Vite/Vitest ( #3311 )
...
* feat: create vite project
* feat: it's alive!
* feat: `make dev` working!
* feat: replace custom serviceWorker with vite plugin
* test: replace Jest with Vitest
* fix: run prettier
* fix: skip eslint for now.
* chore: remove ui.old folder
* refactor: replace lodash.pick with simple destructuring
* fix: eslint errors (wip)
* fix: eslint errors (wip)
* fix: display-name eslint errors (wip)
* fix: no-console eslint errors (wip)
* fix: react-refresh/only-export-components eslint errors (wip)
* fix: react-refresh/only-export-components eslint errors (wip)
* fix: react-refresh/only-export-components eslint errors (wip)
* fix: react-refresh/only-export-components eslint errors (wip)
* fix: build
* fix: pwa manifest
* refactor: pwa manifest
* refactor: simplify PORT configuration
* refactor: rename simple JS files
* test: cover playlistUtils
* fix: react-image-lightbox
* feat(ui): add sourcemaps to help debug issues
2024-09-28 11:54:36 -04:00
ChekeredList71
180035c1e3
Hungarian patch and typo fix for English ( #3263 )
...
* English typo fix
* hungarian-patch
You can find the changes here in detail: https://pastebin.com/GLtmwELv
2024-09-15 11:00:25 -04:00
Deluan
611363fca7
Add missing translation
2023-05-20 17:35:09 -04:00
Deluan
20462c52a5
Restore album "year" translation string
2023-05-19 15:29:30 -04:00
certuna
52b77e4194
Support for Original Date, Release Date & splitting/grouping of album editions ( #2162 )
...
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Create DoubleRangeField.js
* Update and rename DoubleRangeField.js to RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update index.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update en.json
* Update en.json
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongList.js
* Update playlist_track_repository.go
* Update 20230113000000_release_year.go
* Update PlayButton.js
* Update mediafile_repository.go
* Update album.go
* Update playlist_track_repository.go
* Update playlist_track_repository.go
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update mapping.go
* Update RangeFieldDouble.js
* Update AlbumGridView.js
* Update AlbumSongs.js
* Update en.json
* Update SongDatagrid.js
* Update SongDatagrid.js
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update AlbumDetails.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update en.json
* Update configuration.go
* Update mapping.go
* Update configuration.go
* Update mediafile.go
* Update metadata.go
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update configuration.go
* Update mapping.go
* Update mediafile.go
* Update mapping.go
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update RangeFieldDouble.js
* Update 20230113000000_release_year.go
* Update AlbumDetails.js
* Update RangeFieldDouble.js
* Update mapping.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update mediafile.go
* Update album.go
* Update fields.go
* Update mediafile_repository.go
* Update playlist_track_repository.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update PlayButton.js
* Update SongList.js
* Update ContextMenus.js
* Update SongDatagrid.js
* Update metadata.go
* Update ArtistShow.js
* Update mapping.go
* Update configuration.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update mapping.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update mapping.go
* Update metadata.go
* Update metadata.go
* Update album.go
* Update mediafile.go
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update album.go
* Update mediafile.go
* Update metadata.go
* Update mediafile.go
* Update 20230113000000_release_year.go
* Update 20230113000000_release_year.go
* Update album.go
* Update mediafile.go
* Update RangeFieldDouble.js
* Update AlbumDetails.js
* Update AlbumGridView.js
* Update en.json
* Update AlbumGridView.js
* Update RangeFieldDouble.js
* Update and rename 20230113000000_release_year.go to 20230113000000_release_date.go
* Update album.go
* Update mediafile.go
* Update fields.go
* Update playlist_track_repository.go
* Update mediafile_repository.go
* Update mapping.go
* Update metadata.go
* Update mapping.go
* Update SongDatagrid.js
* Update RangeFieldDouble.js
* Update index.js
* Update ContextMenus.js
* Update PlayButton.js
* Create FormatDate.js
* Update SongList.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update AlbumSongs.js
* Update en.json
* Update AlbumDetails.js
* Update album.go
fixed conflict I think?
* Update mediafile.go
fixed conflict
* Format with goimports
* Update SongDatagrid.js
only show Cat # in desktop view
* Update metadata_internal_test.go
* Update metadata_test.go
* Delete test.mp3
* Add files via upload
mp3 test file with Date, Original Date and Release Date
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update metadata_test.go
* Update taglib_test.go
* Delete test.mp3
* Add files via upload
file with replaygain & dates
* Update AlbumGridView.js
* Update AlbumDetails.js
* Update AlbumSongs.js
* Update ContextMenus.js
* Update FormatDate.js
* Update PlayButton.js
* Update RangeFieldDouble.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update AlbumSongs.js
* Fix formatting
* Update mapping.go
* Update AlbumSongs.js
* Update SongDatagrid.js
* Update SongDatagrid.js
prettier
* Create RangeDoubleField.js
rename of RangeFieldDouble.js
* Update AlbumGridView.js
RangeFieldDouble -> RangeDoubleField
* Update mediafile.go
AllOrNothing() -> allOrNothing()
* Update metadata_internal_test.go
getYear -> getDate
* Update AlbumDetails.js
wrote suggested changes
* Update en.json
Editions -> Releases & fixed the field name
* Update configuration.go
Rename Editions -> Releases
* Update 20230113000000_release_date.go
Editions -> Releases
* Update album.go
Editions -> Releases
* Update mediafile.go
Editions -> Releases
* Update AlbumDetails.js
Editions -> Releases
* Update AlbumSongs.js
Editions -> Releases
* Update RangeDoubleField.js
Editions -> Releases
* Update SongDatagrid.js
Editions -> Releases
* Update index.js
FormatFullDate and RangeDoubleField
* Rename FormatDate.js to FormatFullDate.js
* Delete RangeFieldDouble.js
* Update mediafile.go
AllOrNothing -> allOrNothing
* Update mapping.go
Editions -> Releases
* Update AlbumDetails.js
prettier
* Update SongDatagrid.js
showReleaseRow -> showReleaseDivider
* Update AlbumSongs.js
showReleaseRow -> showReleaseDivider for clarity
* Update and rename 20230113000000_release_date.go to 20230515184510_add_release_date.go
- rename the migration file
- fixed the import to goose/v3
- additional db fields for original date & year
* Update 20230515184510_add_release_date.go
* Update fields.go
* Update album.go
* Update mediafile.go
* Update mapping.go
* Update AlbumDetails.js
* Update en.json
* Update AlbumDetails.js
* Update AlbumDetails.js
now hopefully prettier
* Update mapping.go
---------
Co-authored-by: Deluan <deluan@navidrome.org >
2023-05-19 15:27:47 -04:00
Deluan
a7d3e6e1f1
Add option to allow share to be downloaded
2023-03-10 23:33:29 -05:00
Deluan
b6fcfa9fc8
Add a fallback when the browser does not support copying the share link to clipboard (not a secure origin)
...
See: https://stackoverflow.com/a/51823007
2023-01-30 12:09:01 -05:00
Deluan
5eefb265e5
Simplify radio CRUD code
2023-01-25 10:03:55 -05:00
Deluan
2082948144
Fix downloadOriginalFormat term in English translation
2023-01-24 18:41:43 -05:00
Deluan
0c263cf234
Make AlbumSongs BulkActionsToolbar more responsive
2023-01-24 18:36:47 -05:00
Deluan
85084cda57
Add button to share selected songs
2023-01-24 18:36:47 -05:00
Deluan
63e67bd502
Make Share list responsive
2023-01-24 18:36:47 -05:00
Deluan
72a12e344e
More share translations
2023-01-24 18:36:46 -05:00
Deluan
65174d3fb2
Refactor DownloadMenuDialog to use useTranscodingOptions hook
2023-01-24 18:36:46 -05:00
Deluan
ab04e33da6
Initial work on Shares
2023-01-24 18:36:45 -05:00
Kendall Garner
1324a16fc5
ReplayGain support + audio normalization (web player) ( #1988 )
...
* ReplayGain support
- extract ReplayGain tags from files, expose via native api
- use metadata to normalize audio in web player
* make pre-push happy
* remove unnecessary prints
* remove another unnecessary print
* add tooltips, see metadata
* address comments, use settings instead
* remove console.log
* use better language for gain modes
2023-01-17 15:57:19 -05:00
Deluan
7682fddec0
Add Size column to Artist and Album views
2023-01-16 15:00:50 -05:00
Kendall Garner
8877b1695a
Add Internet Radio support ( #2063 )
...
* add internet radio support
* Add dynamic sidebar icon to Radios
* Fix typos
* Make URL suffix consistent
* Fix typo
* address feedback
* Don't need to preload when playing Internet Radios
* Reorder migration, or else it won't be applied
* Make Radio list view responsive
Also added filter by name, removed RadioActions and RadioContextMenu, and added a default radio icon, in case of favicon is not available.
* Simplify StreamField usage
* fix button, hide progress on mobile
* use js styles over index.css
Co-authored-by: Deluan <deluan@navidrome.org >
2023-01-15 15:11:37 -05:00
Kendall Garner
55b0227494
Add Date Added column in Album and Song lists ( #2055 )
2022-12-22 22:44:07 -05:00
Kendall Garner
54395e7e6a
Enable transcoding of downlods ( #1667 )
...
* feat(download): Enable transcoding of downlods - #573
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com >
* feat(download): Make automatic transcoding of downloads optional
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com >
* Fix spelling
* address changes
* prettier
* fix config
* use previous name
Signed-off-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com >
2022-12-18 12:12:37 -05:00
Deluan
879992eb33
Change "current song" hotkey English label
2022-12-05 13:50:19 -05:00
Robert Sammelson
b5b01f78db
Keyboard shortcut to go to current song ( #2029 )
...
* feat(hotkeys): keyboard-shortcut-for-current-song - #1336
Signed-off-by: Pavithra Nair <pmpavithranair@gmail.com >
* Fix previously mentioned bugs
Signed-off-by: Pavithra Nair <pmpavithranair@gmail.com >
Co-authored-by: Pavithra Nair <pmpavithranair@gmail.com >
2022-12-05 13:37:49 -05:00
Deluan
975986ab16
Add bulk action to make playlists private/public
...
Better responsiveness
2021-11-01 21:27:36 -04:00
Deluan
133fed344f
Add owner_id to playlist
2021-10-31 15:08:06 -04:00
Steve Richter
a56d5bc850
Listenbrainz scrobbling ( #1424 )
...
* Refactor session_keys to its own package
* Adjust play_tracker
- Don't send external NowPlaying/Scrobble for tracks with unknown artist
- Continue to the next agent on error
* Implement ListenBrainz Agent and Auth Router
* Implement frontend for ListenBrainz linking
* Update listenBrainzRequest
- Don't marshal Player to json
- Rename Track to Title
* Return ErrRetryLater on ListenBrainz server errors
* Add tests for listenBrainzAgent
* Add tests for ListenBrainz Client
* Adjust ListenBrainzTokenDialog to handle errors better
* Refactor listenbrainz.formatListen and listenBrainzRequest structs
* Refactor agent auth_routers
* Refactor session_keys to agents package
* Add test for listenBrainzResponse
* Add tests for ListenBrainz auth_router
* Update ListenBrainzTokenDialog and auth_router
* Adjust player scrobble toggle
2021-10-30 12:17:42 -04:00
Steve Richter
85185e3b98
Misc small changes ( #1433 )
...
* Fix React key warning in HelpDialog
* Change "lyric" to "lyrics" in en.json
2021-10-26 08:57:20 -04:00
Dnouv
482c2dec0c
Artist Detail Page (first cut) ( #1287 )
...
* Configure fetching from API and route
* pretty
* Remove errors
* Remove errors
* Remove errors
* Complete page for Desktop view
* Fix error
* Add xs Artist page
* Remove unused import
* Add styles for theme
* Change route path
* Remove artId useEffect array
* Remove array
* Fix cover load err
* Add redirect on err
* Remove route
* What's in a name? consistency :)
* Fix err
* Fix UI changes
* Fetch album from resource
* Renaming done
* Review changes
* Some touch-up
* Small refactor, to make naming and structure more consistent with AlbumShow
* Make artist's album list similar to original implementation
* Reuse AlbumGridView, to avoid duplication
* Add feature flag to enable new Artist Page, default false
* Better biography styling. Small refactorings,
* Don't encode quotes and other symbols
* Moved AlbumShow to correct folder
Co-authored-by: Deluan <deluan@navidrome.org >
2021-09-26 15:32:40 -04:00
Samarjeet
0c0bd2967d
Replace expanded with a dialog ( #1258 )
...
* Replace expanded with a dialog
* Change `info` label to "Get Info"
* Rename things for consistency
Co-authored-by: Deluan <deluan@navidrome.org >
2021-09-20 20:30:43 -04:00
Miguel A. Arroyo
e12a14a87d
feat: Adds Audio Channel Metadata - #1036
2021-09-20 19:33:50 -04:00
Deluan Quintão
79363d6c07
Move Playlists to the sidebar menu ( #1339 )
...
* Show playlists in sidebar menu
* Fix menu
* Refresh playlist submenu when adding new playlist
* Group shared playlists below user's playlists
* Fix text overflow in menu options
* Add button in playlist menu to go to Playlists list
* Add config option `DevSidebarPlaylists` to enable this feature (default false)
2021-09-11 13:11:15 -04:00
Deluan Quintão
63000ab5ae
Update en.json (POEditor.com)
2021-08-03 21:41:32 -04:00
Deluan
58ee4c60ca
Add Links to external sites
2021-07-20 17:45:08 -04:00
Deluan
20b7e5c49b
Add Genre filters to UI
2021-07-20 17:45:08 -04:00
Deluan
5040f6fd97
Fix label
2021-06-23 18:09:05 -04:00
Deluan
abe8015745
Add option to disable external scrobbling per player
2021-06-23 17:55:58 -04:00
Steve Richter
5fbfd9c81e
Implement Last.fm account linking UI
2021-06-23 11:01:58 -04:00
Deluan
877f01bd38
Show notification if server is updated
2021-06-21 13:48:39 -04:00
Deluan
e0fd1c6ad8
Add "Last Played" column to SongList
2021-06-16 11:57:02 -04:00
Aldrin Jenson
cf8ee251ee
Option to toggle fields in songs, albums & artists ( #923 )
...
* Add toggleColumns
- Add logic for toggling columns
- Add MenuComponent + useSelectedFields hook
* Refactoring
* eslint-fixes
* Typo
* skip menu in albumGridView
* add omittedFields
* Add toggling for playlists and albumSong
* Refactoring
* defaultProps - fix
* Add toggling for PlaylistSongs
* remove accidental console log
* Refactoring for future compatibility
* Hide ToggleMenu in albumGridView
* Add TopBarComponent in ToggleFieldsMenu
* Add defaultOff for useSelectedFields
* Fix edge case
* eslint fix
* Refactoring
* Add propType for forwardRef
* Fix issues
* add translation for grid and table
* add translation for grid and table
* Ignore menuBtn for spotify-ish and Ligera themes
* hide bpm by default in playlistSongs
* Add memoization
* Default album view must be Grid
Co-authored-by: Deluan <deluan@navidrome.org >
2021-05-24 11:09:06 -04:00
Steve Richter
e60f2bfa3d
User management improvements ( #1101 )
...
* Show more descriptive success messages for User actions
* Check username uniqueness when creating/updating User
* Adjust translations
* Add tests for `validateUsernameUnique()`
Co-authored-by: Deluan <deluan@navidrome.org >
2021-05-16 13:25:38 -04:00
Brian Schrameck
30bb3f7b43
BPM metadata enhancement ( #1087 )
...
* BPM metadata enhancement
Related to #1036 .
Adds BPM to the stored metadata about MediaFiles.
Displays BPM in the following locations:
- Listing songs in the song list (desktop, sortable)
- Listing songs in playlists (desktop, sortable)
- Listing songs in albums (desktop)
- Expanding song details
When listing, shows a blank field if no BPM is present. When showing song details, shows a question mark.
Updates test MP3 file to have BPM tag. Updated test to ensure tag is read correctly.
Updated localization files. Most languages just use "BPM" as discovered during research on Wikipedia. However, a couple use some different nomenclature. Spanish uses PPM and Japanese uses M.M.
* Enhances support for BPM metadata extraction
- Supports reading floating point BPM (still storing it as an integer) and FFmpeg as the extractor
- Replaces existing .ogg test file with one that shouldn't fail randomly
- Adds supporting tests for both FFmpeg and TagLib
* Addresses various issues with PR #1087 .
- Adds index for BPM. Removes drop column as it's not supported by SQLite (duh).
- Removes localizations for BPM as those will be done in POEditor.
- Moves BPM before Comment in Song Details and removes BPM altogether if it's empty.
- Omits empty BPM in JSON responses, eliminating need for FunctionField.
- Fixes copy/paste error in ffmpeg_test.
2021-05-05 21:35:01 -04:00