60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"bufio"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"gitea.elara.ws/Hazel/music-kraken/internal/data"
|
|
"gitea.elara.ws/Hazel/music-kraken/internal/plugin"
|
|
)
|
|
|
|
func printResults(musicObjects []data.MusicObject) {
|
|
for _, m := range musicObjects {
|
|
if a, ok := m.(data.Artist); ok {
|
|
fmt.Println("artist: " + a.Name)
|
|
} else if a, ok := m.(data.Album); ok {
|
|
fmt.Print("release: " + a.Name)
|
|
|
|
if len(a.Artists) > 0 {
|
|
names := make([]string, len(a.Artists))
|
|
for i, artist := range a.Artists {
|
|
names[i] = artist.Name
|
|
}
|
|
fmt.Println(" by " + strings.Join(names, ", "))
|
|
} else {
|
|
fmt.Println()
|
|
}
|
|
} else if a, ok := m.(data.Song); ok {
|
|
fmt.Println("track: " + a.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
func Shell() {
|
|
plugin.RegisterPlugin(&plugin.Musify{})
|
|
|
|
for {
|
|
fmt.Print("> ")
|
|
|
|
reader := bufio.NewReader(os.Stdin)
|
|
line, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
return
|
|
}
|
|
|
|
searchResults, err := plugin.Search(line, plugin.SearchConfig{IgnoreErrors: false})
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
fmt.Println()
|
|
}
|
|
|
|
fmt.Println()
|
|
printResults(searchResults)
|
|
fmt.Println()
|
|
}
|
|
}
|