2025-10-07 13:45:32 +02:00

62 lines
1.4 KiB
Go

package plugin
import (
"regexp"
"strings"
"gitea.elara.ws/Hazel/music-kraken/internal/data"
)
func extractName(s string) string {
parts := strings.Split(s, "/")
lastPart := parts[len(parts)-1]
hyphenParts := strings.Split(lastPart, "-")
result := strings.Join(hyphenParts[:len(hyphenParts)-1], " ")
return result
}
type Musify struct {
}
func (m Musify) Name() string {
return "Musify"
}
func (m Musify) Regex() *regexp.Regexp {
return regexp.MustCompile(`(?i)https?://musify\.club/(artist|release|track)/[a-z\-0-9]+`)
}
func (m Musify) RegexArtist() *regexp.Regexp {
return regexp.MustCompile(`(?i)https?://musify\.club/artist/[a-z\-0-9]+`)
}
func (m Musify) RegexAlbum() *regexp.Regexp {
return regexp.MustCompile(`(?i)https?://musify\.club/release/[a-z\-0-9]+`)
}
func (m Musify) RegexSong() *regexp.Regexp {
return regexp.MustCompile(`(?i)https?://musify\.club/track/[a-z\-0-9]+`)
}
func (m Musify) FetchSong(source data.Source) (data.Song, error) {
return data.Song{
Name: extractName(source.Url),
}, nil
}
func (m Musify) FetchAlbum(source data.Source) (data.Album, error) {
return data.Album{
Name: extractName(source.Url),
}, nil
}
func (m Musify) FetchArtist(source data.Source) (data.Artist, error) {
return data.Artist{
Name: extractName(source.Url),
}, nil
}
func (m Musify) Search(query string) ([]data.MusicObject, error) {
panic("unimplemented")
}