diff --git a/api/get_music_directory.go b/api/get_music_directory.go index eb2c192b..98195f0c 100644 --- a/api/get_music_directory.go +++ b/api/get_music_directory.go @@ -11,8 +11,8 @@ import ( type GetMusicDirectoryController struct { BaseAPIController artistRepo domain.ArtistRepository - albumRepo domain.AlbumRepository - mFileRepo domain.MediaFileRepository + albumRepo domain.AlbumRepository + mFileRepo domain.MediaFileRepository } func (c *GetMusicDirectoryController) Prepare() { @@ -58,6 +58,10 @@ func (c *GetMusicDirectoryController) Get() { dir.Child[i].Artist = mf.AlbumArtist dir.Child[i].Genre = mf.Genre dir.Child[i].Track = mf.Track + dir.Child[i].Duration = mf.Duration + dir.Child[i].Size = mf.Size + dir.Child[i].Suffix = mf.Suffix + dir.Child[i].BitRate = mf.BitRate } } else { beego.Info("Id", id, "not found") diff --git a/domain/mediafile.go b/domain/mediafile.go index 9ea8beef..d01b6df6 100644 --- a/domain/mediafile.go +++ b/domain/mediafile.go @@ -14,6 +14,10 @@ type MediaFile struct { AlbumId string `parent:"album"` Track int Year int + Size string + Suffix string + Duration int + BitRate int Genre string Compilation bool CreatedAt time.Time diff --git a/scanner/itunes_scanner.go b/scanner/itunes_scanner.go index b967a591..b998bfce 100644 --- a/scanner/itunes_scanner.go +++ b/scanner/itunes_scanner.go @@ -5,6 +5,8 @@ import ( "net/url" "os" "strings" + "path/filepath" +"strconv" ) type ItunesScanner struct{} @@ -26,8 +28,17 @@ func (s *ItunesScanner) LoadFolder(path string) []Track { mediaFiles[i].Compilation = t.Compilation mediaFiles[i].Year = t.Year mediaFiles[i].TrackNumber = t.TrackNumber + if t.Size > 0 { + mediaFiles[i].Size = strconv.Itoa(t.Size) + } + if t.TotalTime > 0 { + mediaFiles[i].Duration = t.TotalTime / 1000 + } + mediaFiles[i].BitRate = t.BitRate path, _ = url.QueryUnescape(t.Location) - mediaFiles[i].Path = strings.TrimPrefix(path, "file://") + path = strings.TrimPrefix(path, "file://") + mediaFiles[i].Path = path + mediaFiles[i].Suffix = strings.TrimPrefix(filepath.Ext(path), ".") mediaFiles[i].CreatedAt = t.DateAdded mediaFiles[i].UpdatedAt = t.DateModified i++ diff --git a/scanner/scanner.go b/scanner/scanner.go index 307bee91..fc782612 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -77,6 +77,10 @@ func parseTrack(t *Track) (*domain.MediaFile, *domain.Album, *domain.Artist) { Track: t.TrackNumber, Genre: t.Genre, Year: t.Year, + Size: t.Size, + Suffix: t.Suffix, + Duration: t.Duration, + BitRate: t.BitRate, } album := &domain.Album{ diff --git a/scanner/track.go b/scanner/track.go index 008689bf..adfe7ae1 100644 --- a/scanner/track.go +++ b/scanner/track.go @@ -14,6 +14,10 @@ type Track struct { Genre string TrackNumber int Year int + Size string + Suffix string + Duration int + BitRate int Compilation bool CreatedAt time.Time UpdatedAt time.Time