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") }