123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package common
- import (
- "path"
- "strings"
- )
- type filenameMeta struct {
- artists []string
- title string
- album string
- }
- func (f *filenameMeta) GetArtists() []string {
- return f.artists
- }
- func (f *filenameMeta) GetTitle() string {
- return f.title
- }
- func (f *filenameMeta) GetAlbum() string {
- return f.album
- }
- func ParseFilenameMeta(filename string) (meta AudioMeta) {
- partName := strings.TrimSuffix(filename, path.Ext(filename))
- items := strings.Split(partName, "-")
- ret := &filenameMeta{}
- switch len(items) {
- case 0:
- // no-op
- case 1:
- ret.title = strings.TrimSpace(items[0])
- default:
- ret.title = strings.TrimSpace(items[len(items)-1])
- for _, v := range items[:len(items)-1] {
- artists := strings.FieldsFunc(v, func(r rune) bool {
- return r == ',' || r == '_'
- })
- for _, artist := range artists {
- ret.artists = append(ret.artists, strings.TrimSpace(artist))
- }
- }
- }
- return ret
- }
|