Added DiscNumber field, used to sort tracks

This commit is contained in:
Deluan 2016-03-03 00:42:42 -05:00
parent 1aeb22dcb7
commit ffd6304a23
6 changed files with 22 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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,

View File

@ -13,6 +13,7 @@ type Track struct {
AlbumArtist string
Genre string
TrackNumber int
DiscNumber int
Year int
Size string
Suffix string