package main
import (
"fmt"
"io"
"net/http"
"net/url"
"time"
)
const (
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.scrapecreators.com"
ENDPOINT_PATH = "/v1/youtube/channel-videos"
)
func main() {
result, err := scrape()
if err != nil {
fmt.Printf("Error: %v", err)
return
}
fmt.Printf("Response: %s", result)
}
func scrape() (string, error) {
client := &http.Client{
Timeout: 30 * time.Second,
}
// Build query parameters
params := url.Values{}
params.Add("channelId", "UC-9-kyTW8ZkZNDHQJ6FgpwQ")
params.Add("handle", "ThePatMcAfeeShow")
params.Add("sort", "latest")
params.Add("continuationToken", "4qmFsgKrCBIYVUNkRkpXVWE0M3NtUm00SXBIQnB")
params.Add("is_paid_promotions", "false")
params.Add("includeExtras", "false")
req, err := http.NewRequest("GET", BASE_URL+ENDPOINT_PATH+"?"+params.Encode(), nil)
if err != nil {
return "", err
}
req.Header.Set("x-api-key", API_KEY)
req.Header.Set("Accept", "application/json")
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
body, _ := io.ReadAll(resp.Body)
return "", fmt.Errorf("HTTP %d: %s", resp.StatusCode, string(body))
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
return string(body), nil
}