inital commit
This commit is contained in:
49
examples/download/main.go
Normal file
49
examples/download/main.go
Normal file
@@ -0,0 +1,49 @@
|
||||
// download fetches a single submission and streams its main file to disk.
|
||||
// Demonstrates that downloads share the SDK's rate limiter and cookie jar
|
||||
// with metadata fetches.
|
||||
//
|
||||
// go run ./examples/download 12345678 out.jpg
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
fa "git.anthrove.art/public/go-fa-api"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 3 {
|
||||
log.Fatalf("usage: %s <submission-id> <out-path>", os.Args[0])
|
||||
}
|
||||
id, err := strconv.ParseInt(os.Args[1], 10, 64)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid id: %v", err)
|
||||
}
|
||||
|
||||
client := fa.New(
|
||||
fa.WithCookies(fa.Cookies{A: os.Getenv("FA_A"), B: os.Getenv("FA_B")}),
|
||||
fa.WithCloudflare(fa.CFCookies{Clearance: os.Getenv("CF_CLEARANCE")}),
|
||||
fa.WithUserAgent(os.Getenv("FA_UA")),
|
||||
)
|
||||
|
||||
ctx := context.Background()
|
||||
sub, err := client.GetSubmission(ctx, fa.SubmissionID(id))
|
||||
if err != nil {
|
||||
log.Fatalf("GetSubmission: %v", err)
|
||||
}
|
||||
|
||||
out, err := os.Create(os.Args[2])
|
||||
if err != nil {
|
||||
log.Fatalf("create: %v", err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
n, err := client.Download(ctx, sub, out)
|
||||
if err != nil {
|
||||
log.Fatalf("download: %v", err)
|
||||
}
|
||||
log.Printf("wrote %d bytes to %s", n, os.Args[2])
|
||||
}
|
||||
Reference in New Issue
Block a user