89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package backend
|
|
|
|
import (
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
const amazonMusicAPIBaseURL = "https://amazon.spotbye.qzz.io"
|
|
|
|
const (
|
|
qobuzWJHEBaseURL = "https://music.wjhe.top"
|
|
qobuzWJHESearchAPIURL = qobuzWJHEBaseURL + "/api/music/qobuz/search"
|
|
qobuzWJHEStreamAPIURL = qobuzWJHEBaseURL + "/api/music/qobuz/url"
|
|
qobuzMusicDLDownloadAPIURL = "https://www.musicdl.me/api/qobuz/download"
|
|
qobuzGDStudioAPIURLXYZ = "https://music.gdstudio.xyz/api.php"
|
|
qobuzGDStudioAPIURLORG = "https://music.gdstudio.org/api.php"
|
|
qobuzGDStudioVersion = "2026.5.10"
|
|
)
|
|
|
|
var defaultQobuzDownloadProviderURLs = []string{
|
|
qobuzWJHEStreamAPIURL,
|
|
qobuzGDStudioAPIURLXYZ,
|
|
qobuzGDStudioAPIURLORG,
|
|
qobuzMusicDLDownloadAPIURL,
|
|
}
|
|
|
|
func GetQobuzDownloadProviderURLs() []string {
|
|
return append([]string(nil), defaultQobuzDownloadProviderURLs...)
|
|
}
|
|
|
|
func GetQobuzWJHESearchAPIURL() string {
|
|
return qobuzWJHESearchAPIURL
|
|
}
|
|
|
|
func GetQobuzWJHEStreamAPIURL() string {
|
|
return qobuzWJHEStreamAPIURL
|
|
}
|
|
|
|
func GetQobuzMusicDLDownloadAPIURL() string {
|
|
return qobuzMusicDLDownloadAPIURL
|
|
}
|
|
|
|
func GetQobuzGDStudioAPIURLs() []string {
|
|
return []string{qobuzGDStudioAPIURLXYZ, qobuzGDStudioAPIURLORG}
|
|
}
|
|
|
|
func GetQobuzGDStudioPrimaryAPIURL() string {
|
|
return qobuzGDStudioAPIURLXYZ
|
|
}
|
|
|
|
func GetQobuzGDStudioFallbackAPIURL() string {
|
|
return qobuzGDStudioAPIURLORG
|
|
}
|
|
|
|
func GetQobuzGDStudioSignatureHost(apiURL string) string {
|
|
parsed, err := url.Parse(strings.TrimSpace(apiURL))
|
|
if err != nil || strings.TrimSpace(parsed.Host) == "" {
|
|
return ""
|
|
}
|
|
return strings.TrimSpace(parsed.Host)
|
|
}
|
|
|
|
func GetQobuzGDStudioVersion() string {
|
|
return qobuzGDStudioVersion
|
|
}
|
|
|
|
func IsQobuzWJHEProviderURL(raw string) bool {
|
|
candidate := strings.TrimSpace(raw)
|
|
return candidate == qobuzWJHEStreamAPIURL || strings.HasPrefix(candidate, qobuzWJHEStreamAPIURL+"?")
|
|
}
|
|
|
|
func IsQobuzMusicDLProviderURL(raw string) bool {
|
|
return strings.EqualFold(strings.TrimSpace(raw), qobuzMusicDLDownloadAPIURL)
|
|
}
|
|
|
|
func IsQobuzGDStudioProviderURL(raw string) bool {
|
|
candidate := strings.TrimSpace(raw)
|
|
for _, apiURL := range GetQobuzGDStudioAPIURLs() {
|
|
if candidate == apiURL || strings.HasPrefix(candidate, apiURL+"?") {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func GetAmazonMusicAPIBaseURL() string {
|
|
return amazonMusicAPIBaseURL
|
|
}
|