func dataURL(m tag.Metadata) string { p := m.Picture() if p == nil { return "" } if p.MIMEType == "-->" { return string(p.Data) } return fmt.Sprintf("data:%s;base64,%s", p.MIMEType, base64.StdEncoding.EncodeToString(p.Data)) }
func printMetadata(m tag.Metadata) { fmt.Printf("Metadata Format: %v\n", m.Format()) fmt.Printf("File Type: %v\n", m.FileType()) fmt.Printf(" Title: %v\n", m.Title()) fmt.Printf(" Album: %v\n", m.Album()) fmt.Printf(" Artist: %v\n", m.Artist()) fmt.Printf(" Composer: %v\n", m.Composer()) fmt.Printf(" Genre: %v\n", m.Genre()) fmt.Printf(" Year: %v\n", m.Year()) track, trackCount := m.Track() fmt.Printf(" Track: %v of %v\n", track, trackCount) disc, discCount := m.Disc() fmt.Printf(" Disc: %v of %v\n", disc, discCount) fmt.Printf(" Picture: %v\n", m.Picture()) fmt.Printf(" Lyrics: %v\n", m.Lyrics()) }
// Open the given file and return an http.File which contains the artwork, and hence // the Name() of the returned file will have an extention for the artwork, not the // media file. func (afs artworkFileSystem) Open(ctx context.Context, path string) (http.File, error) { f, err := afs.FileSystem.Open(ctx, path) if err != nil { return nil, err } defer f.Close() stat, err := f.Stat() if err != nil { return nil, err } var m tag.Metadata m, err = tag.ReadFrom(f) if err != nil { return nil, fmt.Errorf("error extracting picture from '%v': %v", path, err) } p := m.Picture() if p == nil { return nil, fmt.Errorf("no picture attached to '%v'", path) } name := stat.Name() if p.Ext != "" { name += "." + p.Ext } return &file{ ReadSeeker: bytes.NewReader(p.Data), stat: &fileInfo{ name: name, size: int64(len(p.Data)), modTime: stat.ModTime(), }, }, nil }