add discnumber
This commit is contained in:
@@ -16,17 +16,18 @@ type Artist struct {
|
||||
type Track struct {
|
||||
IDBase
|
||||
CrudBase
|
||||
Filename string `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null"`
|
||||
Album *Album
|
||||
AlbumID int `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null; type:int REFERENCES albums(id) ON DELETE CASCADE"`
|
||||
Filename string `gorm:"not null; unique_index:idx_folder_filename" sql:"default: null"`
|
||||
Artist *Artist
|
||||
ArtistID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES artists(id) ON DELETE CASCADE"`
|
||||
Duration int `gorm:"not null" sql:"default: null"`
|
||||
Size int `gorm:"not null" sql:"default: null"`
|
||||
Duration int `gorm:"not null" sql:"default: null"`
|
||||
Bitrate int `gorm:"not null" sql:"default: null"`
|
||||
TagTitle string `sql:"default: null"`
|
||||
TagTrackArtist string `sql:"default: null"`
|
||||
TagTrackNumber int `sql:"default: null"`
|
||||
TagDiscNumber int `sql:"default: null"`
|
||||
}
|
||||
|
||||
func (t *Track) Ext() string {
|
||||
|
||||
@@ -261,6 +261,7 @@ func (s *Scanner) handleTrack(it *item) error {
|
||||
track.TagTitle = tags.Title()
|
||||
track.TagTrackArtist = tags.Artist()
|
||||
track.TagTrackNumber = tags.TrackNumber()
|
||||
track.TagDiscNumber = tags.DiscNumber()
|
||||
track.Duration = tags.DurationSecs() // these two should be calculated
|
||||
track.Bitrate = tags.Bitrate() // from the file instead of tags
|
||||
//
|
||||
@@ -282,7 +283,8 @@ func (s *Scanner) handleTrack(it *item) error {
|
||||
// set album if this is the first track in the folder
|
||||
folder := s.curFolder()
|
||||
if !folder.ReceivedPaths || folder.ReceivedTags {
|
||||
// the folder hasn't been modified or already has it's tags
|
||||
// the folder hasn't been modified
|
||||
// or already has it's tags
|
||||
return nil
|
||||
}
|
||||
folder.TagTitle = tags.Album()
|
||||
|
||||
@@ -41,6 +41,7 @@ func newTCTrackByFolder(t *model.Track, parent *model.Album) *subsonic.TrackChil
|
||||
Artist: t.TagTrackArtist,
|
||||
Title: t.TagTitle,
|
||||
TrackNumber: t.TagTrackNumber,
|
||||
DiscNumber: t.TagDiscNumber,
|
||||
Path: path.Join(
|
||||
parent.LeftPath,
|
||||
parent.RightPath,
|
||||
|
||||
@@ -34,6 +34,7 @@ func newTrackByTags(t *model.Track, album *model.Album) *subsonic.TrackChild {
|
||||
Title: t.TagTitle,
|
||||
Artist: t.TagTrackArtist,
|
||||
TrackNumber: t.TagTrackNumber,
|
||||
DiscNumber: t.TagDiscNumber,
|
||||
Path: path.Join(
|
||||
album.LeftPath,
|
||||
album.RightPath,
|
||||
|
||||
@@ -68,7 +68,7 @@ func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) {
|
||||
err = c.DB.
|
||||
Preload("TagArtist").
|
||||
Preload("Tracks", func(db *gorm.DB) *gorm.DB {
|
||||
return db.Order("tracks.tag_track_number")
|
||||
return db.Order("tracks.tag_disc_number, tracks.tag_track_number")
|
||||
}).
|
||||
First(album, id).
|
||||
Error
|
||||
|
||||
@@ -102,6 +102,7 @@ type TrackChild struct {
|
||||
Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"`
|
||||
Title string `xml:"title,attr,omitempty" json:"title,omitempty"`
|
||||
TrackNumber int `xml:"track,attr,omitempty" json:"track,omitempty"`
|
||||
DiscNumber int `xml:"discNumber,attr,omitempty" json:"discNumber,omitempty"`
|
||||
Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user