package main import ( "encoding/json" "io" "log" "net/http" "time" ) const POCKETBASE_URL = `https://pocketbase-scratch.site.quack-lab.dev/api/collections` const POCKETBASE_REALTIME = `https://pocketbase-scratch.site.quack-lab.dev/api/realtime` const COLLECTION_NAME = "youtubedownload" const FULL_URL = POCKETBASE_URL + "/" + COLLECTION_NAME + "/records" func main() { log.SetFlags(log.Lmicroseconds) log.Println(FULL_URL) res, err := http.Get(FULL_URL) if err != nil { log.Fatal(err) } defer res.Body.Close() body, err := io.ReadAll(res.Body) if err != nil { log.Printf("Error reading response body: %+v\n", err) return } if res.StatusCode != http.StatusOK { log.Printf("Non-OK HTTP status: %d\nResponse body: %s\n", res.StatusCode, body) return } var data APIResponse err = json.Unmarshal(body, &data) if err != nil { log.Printf("Error unmarshaling JSON: %+v\n", err) return } // log.Printf("Data: %+v\n", data) listener := new(RealtimeListener) listener.Url = POCKETBASE_REALTIME listener.Collections = []string{COLLECTION_NAME} listener.initialize() status := make(chan error) for event := range listener.Create { log.Printf("Create event: %+v\n", event) go Download(event, status) // go DownloadNative(event, status) for status := range status { log.Printf("Status: %s\n", status) } } time.Sleep(1 * time.Hour) }