add discnumber

This commit is contained in:
sentriz
2019-06-07 13:59:20 +01:00
parent d863e2eb62
commit c96fdf458f
6 changed files with 11 additions and 5 deletions

View File

@@ -16,17 +16,18 @@ type Artist struct {
type Track struct { type Track struct {
IDBase IDBase
CrudBase CrudBase
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"` 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"`
Artist *Artist Artist *Artist
ArtistID int `gorm:"not null; index" sql:"default: null; type:int REFERENCES artists(id) ON DELETE CASCADE"` 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"` Size int `gorm:"not null" sql:"default: null"`
Duration int `gorm:"not null" sql:"default: null"`
Bitrate int `gorm:"not null" sql:"default: null"` Bitrate int `gorm:"not null" sql:"default: null"`
TagTitle string `sql:"default: null"` TagTitle string `sql:"default: null"`
TagTrackArtist string `sql:"default: null"` TagTrackArtist string `sql:"default: null"`
TagTrackNumber int `sql:"default: null"` TagTrackNumber int `sql:"default: null"`
TagDiscNumber int `sql:"default: null"`
} }
func (t *Track) Ext() string { func (t *Track) Ext() string {

View File

@@ -261,6 +261,7 @@ func (s *Scanner) handleTrack(it *item) error {
track.TagTitle = tags.Title() track.TagTitle = tags.Title()
track.TagTrackArtist = tags.Artist() track.TagTrackArtist = tags.Artist()
track.TagTrackNumber = tags.TrackNumber() track.TagTrackNumber = tags.TrackNumber()
track.TagDiscNumber = tags.DiscNumber()
track.Duration = tags.DurationSecs() // these two should be calculated track.Duration = tags.DurationSecs() // these two should be calculated
track.Bitrate = tags.Bitrate() // from the file instead of tags 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 // set album if this is the first track in the folder
folder := s.curFolder() folder := s.curFolder()
if !folder.ReceivedPaths || folder.ReceivedTags { 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 return nil
} }
folder.TagTitle = tags.Album() folder.TagTitle = tags.Album()

View File

@@ -41,6 +41,7 @@ func newTCTrackByFolder(t *model.Track, parent *model.Album) *subsonic.TrackChil
Artist: t.TagTrackArtist, Artist: t.TagTrackArtist,
Title: t.TagTitle, Title: t.TagTitle,
TrackNumber: t.TagTrackNumber, TrackNumber: t.TagTrackNumber,
DiscNumber: t.TagDiscNumber,
Path: path.Join( Path: path.Join(
parent.LeftPath, parent.LeftPath,
parent.RightPath, parent.RightPath,

View File

@@ -34,6 +34,7 @@ func newTrackByTags(t *model.Track, album *model.Album) *subsonic.TrackChild {
Title: t.TagTitle, Title: t.TagTitle,
Artist: t.TagTrackArtist, Artist: t.TagTrackArtist,
TrackNumber: t.TagTrackNumber, TrackNumber: t.TagTrackNumber,
DiscNumber: t.TagDiscNumber,
Path: path.Join( Path: path.Join(
album.LeftPath, album.LeftPath,
album.RightPath, album.RightPath,

View File

@@ -68,7 +68,7 @@ func (c *Controller) GetAlbum(w http.ResponseWriter, r *http.Request) {
err = c.DB. err = c.DB.
Preload("TagArtist"). Preload("TagArtist").
Preload("Tracks", func(db *gorm.DB) *gorm.DB { 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). First(album, id).
Error Error

View File

@@ -102,6 +102,7 @@ type TrackChild struct {
Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"` Suffix string `xml:"suffix,attr,omitempty" json:"suffix,omitempty"`
Title string `xml:"title,attr,omitempty" json:"title,omitempty"` Title string `xml:"title,attr,omitempty" json:"title,omitempty"`
TrackNumber int `xml:"track,attr,omitempty" json:"track,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"` Type string `xml:"type,attr,omitempty" json:"type,omitempty"`
} }