package main
import (
"github.com/navidrome/navidrome/plugins/pdk/go/host"
"github.com/navidrome/navidrome/plugins/pdk/go/pdk"
"github.com/navidrome/navidrome/plugins/pdk/go/types"
)
type TestMatcherInput struct {
Songs []types.SongRef `json:"songs"`
Username string `json:"username,omitempty"`
}
type TestMatcherOutput struct {
MatchedIDs []string `json:"matched_ids"`
Starred []bool `json:"starred"`
Error *string `json:"error,omitempty"`
}
func ndTestMatcher() int32 {
var input TestMatcherInput
if err := pdk.InputJSON(&input); err != nil {
errStr := err.Error()
pdk.OutputJSON(TestMatcherOutput{Error: &errStr})
return 0
}
results, err := host.MatcherMatchSongs(input.Songs, host.MatchOptions{Username: input.Username})
if err != nil {
errStr := err.Error()
pdk.OutputJSON(TestMatcherOutput{Error: &errStr})
return 0
}
ids := make([]string, len(results))
starred := make([]bool, len(results))
for i, t := range results {
if t != nil {
ids[i] = t.ID
starred[i] = t.Starred
}
}
pdk.OutputJSON(TestMatcherOutput{MatchedIDs: ids, Starred: starred})
return 0
}
func main() {}