mirror of
https://github.com/navidrome/navidrome.git
synced 2025-04-16 04:00:38 +03:00
Added DiscNumber field, used to sort tracks
This commit is contained in:
parent
1aeb22dcb7
commit
ffd6304a23
@ -57,7 +57,7 @@ func (c *GetMusicDirectoryController) Get() {
|
||||
dir.Child[i].Year = mf.Year
|
||||
dir.Child[i].Artist = mf.Artist
|
||||
dir.Child[i].Genre = mf.Genre
|
||||
dir.Child[i].Track = mf.Track
|
||||
dir.Child[i].Track = mf.TrackNumber
|
||||
dir.Child[i].Duration = mf.Duration
|
||||
dir.Child[i].Size = mf.Size
|
||||
dir.Child[i].Suffix = mf.Suffix
|
||||
|
@ -12,7 +12,8 @@ type MediaFile struct {
|
||||
Artist string
|
||||
AlbumArtist string
|
||||
AlbumId string `parent:"album"`
|
||||
Track int
|
||||
TrackNumber int
|
||||
DiscNumber int
|
||||
Year int
|
||||
Size string
|
||||
Suffix string
|
||||
|
@ -2,6 +2,7 @@ package persistence
|
||||
|
||||
import (
|
||||
"github.com/deluan/gosonic/domain"
|
||||
"sort"
|
||||
)
|
||||
|
||||
type mediaFileRepository struct {
|
||||
@ -20,6 +21,19 @@ func (r *mediaFileRepository) Put(m *domain.MediaFile) error {
|
||||
|
||||
func (r *mediaFileRepository) FindByAlbum(albumId string) ([]domain.MediaFile, error) {
|
||||
var mfs = make([]domain.MediaFile, 0)
|
||||
err := r.loadChildren("album", albumId, &mfs, "Track", false)
|
||||
err := r.loadChildren("album", albumId, &mfs, "", false)
|
||||
sort.Sort(byTrackNumber(mfs))
|
||||
return mfs, err
|
||||
}
|
||||
|
||||
type byTrackNumber []domain.MediaFile
|
||||
|
||||
func (a byTrackNumber) Len() int {
|
||||
return len(a)
|
||||
}
|
||||
func (a byTrackNumber) Swap(i, j int) {
|
||||
a[i], a[j] = a[j], a[i]
|
||||
}
|
||||
func (a byTrackNumber) Less(i, j int) bool {
|
||||
return (a[i].DiscNumber * 1000 + a[i].TrackNumber) < (a[j].DiscNumber * 1000 + a[j].TrackNumber)
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ func (s *ItunesScanner) LoadFolder(path string) []Track {
|
||||
mediaFiles[i].Compilation = t.Compilation
|
||||
mediaFiles[i].Year = t.Year
|
||||
mediaFiles[i].TrackNumber = t.TrackNumber
|
||||
mediaFiles[i].DiscNumber = t.DiscNumber
|
||||
if t.Size > 0 {
|
||||
mediaFiles[i].Size = strconv.Itoa(t.Size)
|
||||
}
|
||||
|
@ -74,7 +74,8 @@ func parseTrack(t *Track) (*domain.MediaFile, *domain.Album, *domain.Artist) {
|
||||
Path: t.Path,
|
||||
CreatedAt: t.CreatedAt,
|
||||
UpdatedAt: t.UpdatedAt,
|
||||
Track: t.TrackNumber,
|
||||
TrackNumber: t.TrackNumber,
|
||||
DiscNumber: t.DiscNumber,
|
||||
Genre: t.Genre,
|
||||
Year: t.Year,
|
||||
Size: t.Size,
|
||||
|
@ -13,6 +13,7 @@ type Track struct {
|
||||
AlbumArtist string
|
||||
Genre string
|
||||
TrackNumber int
|
||||
DiscNumber int
|
||||
Year int
|
||||
Size string
|
||||
Suffix string
|
||||
|
Loading…
x
Reference in New Issue
Block a user