| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package read
- import (
- "os"
- "path/filepath"
- tag "github.com/dhowden/tag"
- duration "github.com/felamaslen/gmus-backend/pkg/read/duration"
- "github.com/felamaslen/gmus-backend/pkg/types"
- )
- func ReadFile(basePath string, scannedFile *types.File) (song *types.Song, err error) {
- fullPath := filepath.Join(basePath, scannedFile.RelativePath)
- file, errFile := os.Open(fullPath)
- if errFile != nil {
- return &types.Song{}, errFile
- }
- defer file.Close()
- tags, errTags := tag.ReadFrom(file)
- if errTags != nil {
- return &types.Song{}, errTags
- }
- durationSeconds := duration.GetSongDurationSeconds(file, tags)
- trackNumber, _ := tags.Track()
- result := types.Song{
- TrackNumber: trackNumber,
- Title: tags.Title(),
- Artist: tags.Artist(),
- Album: tags.Album(),
- Duration: durationSeconds,
- BasePath: basePath,
- RelativePath: scannedFile.RelativePath,
- ModifiedDate: scannedFile.ModifiedDate,
- }
- return &result, nil
- }
|