start work on search; write some readme up

This commit is contained in:
Laptop
2024-08-24 11:04:20 +03:00
parent 9c309a05d8
commit 831463f310
8 changed files with 148 additions and 4 deletions

View File

@@ -22,4 +22,7 @@ const UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
// time-to-live for dns cache
const DNSCacheTTL = 10 * time.Minute
// run soundcloak on this address (localhost:4664 by default)
const Addr = ":4664"
var JSON = jsoniter.ConfigFastest

View File

@@ -36,6 +36,8 @@ var httpc = fasthttp.HostClient{
var usersCache = map[string]cached[User]{}
var tracksCache = map[string]cached[Track]{}
var userSearchCache = map[string]cached[Paginated[User]]{}
var trackSearchCache = map[string]cached[Paginated[Track]]{}
var verRegex = regexp.MustCompile(`(?m)^<script>window\.__sc_version="([0-9]{10})"</script>$`)
var scriptsRegex = regexp.MustCompile(`(?m)^<script crossorigin src="(https://a-v2\.sndcdn\.com/assets/.+\.js)"></script>$`)
@@ -308,3 +310,33 @@ func (t Track) GetStream() (string, error) {
return s.URL, nil
}
func SearchTracks(args string) (*Paginated[Track], error) {
cid, err := GetClientID()
if err != nil {
return nil, err
}
p := Paginated[Track]{Next: "https://api-v2.soundcloud.com/search/tracks" + args + "&client_id=" + cid}
err = p.Proceed()
if err != nil {
return nil, err
}
return &p, nil
}
func SearchUsers(args string) (*Paginated[User], error) {
cid, err := GetClientID()
if err != nil {
return nil, err
}
p := Paginated[User]{Next: "https://api-v2.soundcloud.com/search/users" + args + "&client_id=" + cid}
err = p.Proceed()
if err != nil {
return nil, err
}
return &p, nil
}

View File

@@ -73,6 +73,7 @@ type Track struct {
type Paginated[T any] struct {
Collection []T `json:"collection"`
Total int `json:"total_results"`
Next string `json:"next_href"`
}