Skip to content

Instantly share code, notes, and snippets.

@rats-god
Last active May 14, 2020 22:56
Show Gist options
  • Save rats-god/d44a1ea3ff73311568e11050977e902c to your computer and use it in GitHub Desktop.
Save rats-god/d44a1ea3ff73311568e11050977e902c to your computer and use it in GitHub Desktop.
:Namespace apl102
(⎕IO ⎕ML ⎕WX)←0 1 3
tok←'your_access_key'
base←'https://botsin.space/api/v1/'
∆h←⎕SE.UCMD 'Load HttpCommand'
br←{t←⍵ ⎕NTIE 0 ⋄ s←2 ⎕NINFO t ⋄ ⎕NREAD t 80 s}
putMedia←{
h←⎕NEW ∆h
n←⎕UCS 13 10 ⍝ \r\n
bd←'boundary'
h.(Command URL)←'post'(base,'media')
h.Headers←'Authorization'('Bearer ',tok)
h.Headers,←'Content-Type'('multipart/form-data;boundary="',bd,'"')
h.Headers←2 2⍴h.Headers
h.Params←'--',bd,n,'Content-Type: image/gif',n
h.Params,←'Content-Disposition: form-data; name=file; filename=hello.gif',n,n
h.Params,←br ⍵
h.Params,←n,'--',bd,'--',n
r←h.Run
(⎕JSON r.Data).id
}
postMedia←{
h←⎕NEW ∆h
h.(Command URL)←'post'(base,'statuses')
h.Headers←'Authorization'('Bearer ',tok)
h.Params←'media_ids[]'⍵
h.Run
}
mkGifPost←{postMedia putMedia'out.gif'⊣mkzone 250}
mkzone←{
sz←⍵
zone←{0>1○⍺+∘.{*∘(÷2)+/⍺ ⍵*2}⍨10÷⍨⍳⍵}
pbm←{'P1 ',(⍕⌽⍴⍵),' ',⍕,⍵}
f←{'out',(⍕⍵),'.pbm'}
o←{f ⍵⊣(pbm ⍵ zone sz)⎕NPUT(f ⍵)1}¨20÷⍨⍳100
⎕SH'/usr/local/bin/convert ',(⍕o),' out.gif'
}
:EndNamespace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment