package data import ( "regexp" ) type SourceType struct { Name string Regex *regexp.Regexp RegexArtist *regexp.Regexp RegexAlbum *regexp.Regexp RegexSong *regexp.Regexp } var SourceTypes = []SourceType{ {Name: "Youtube", Regex: regexp.MustCompile(`(?i)\b(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})\b`)}, {Name: "Musify", Regex: regexp.MustCompile(`(?i)https?://musify\.club/(artist|track|release)/[a-z\-0-9]+`)}, } func GetSourceType(name string) *SourceType { for i, st := range SourceTypes { if st.Name == name { return &SourceTypes[i] } } panic("couldn't find source type for " + name) } type ObjectType string const SongSource = ObjectType("song") const AlbumSource = ObjectType("album") const ArtistSource = ObjectType("artist") type Source struct { Url string SourceType *SourceType ObjectType ObjectType }