Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (require net/http-client json net/url racket/port web-server/private/timer racket/file racket/bytes file/md5)
- (define server (getenv "SERVER"))
- (define token (getenv "ACCESS_TOKEN"))
- (define safebooru "safebooru.donmai.us")
- (define limit "20")
- (define page (number->string (random 1 350)))
- (define tags "mario_(series)")
- (define pos (random 20))
- (define CRLF "\r\n")
- (define boundary (bytes->string/utf-8 (md5 (number->string (current-seconds)))))
- (define (search-safebooru)
- (define-values (status header response)(http-sendrecv safebooru (string-append "/posts.json?limit=" limit "&page=" page "&tags="tags ) #:ssl? #t))
- (define posts (read-json response))
- (list-ref posts pos))
- (define (download-image)
- (define post (search-safebooru))
- (define url (hash-ref post 'file_url))
- (define md5 (hash-ref post 'md5))
- (define file-ext (hash-ref post 'file_ext))
- (define filename (string-append md5 "." file-ext))
- (define boundary-line (string-append "--" boundary CRLF))
- (call-with-output-file filename
- (lambda (in) (display (port->bytes (get-pure-port (string->url url)))in))
- #:exists 'replace)
- (bytes-append
- (string->bytes/utf-8
- (string-append
- boundary-line
- "Content-Disposition: form-data; name=\"file\";"
- (format "Content-Type: image/~a" (if (eq? file-ext "jpg") "jpeg" "png")) CRLF))
- (file->bytes filename)
- (string->bytes/utf-8 (string-append CRLF "--" boundary "--" CRLF))))
- (define (upload-image)
- (define-values (status headers response)
- (http-sendrecv server (string-append "/api/v1/media") #:ssl? #t #:method #"POST" #:headers (list (string-append "Content-Type: multipart/form-data; boundary=" boundary)(string-append "Authorization: Bearer " token)) #:data (download-image)))
- (displayln (read-json response))
- (displayln status))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement