1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
package main
import (
"bufio"
"encoding/json"
"image"
_ "image/gif"
_ "image/jpeg"
_ "image/png"
"log"
"net/http"
"os"
"github.com/mattn/go-sixel"
)
type item struct {
ID string `json:"id"`
URL string `json:"url"`
Width int `json:"width"`
Height int `json:"height"`
}
func main() {
resp, err := http.Get("https://api.thecatapi.com/v1/images/search")
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
var items []item
err = json.NewDecoder(resp.Body).Decode(&items)
if err != nil {
log.Fatal(err)
}
resp, err = http.Get(items[0].URL)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
img, _, err := image.Decode(resp.Body)
if err != nil {
log.Fatal(err, items[0].URL)
}
buf := bufio.NewWriter(os.Stdout)
defer buf.Flush()
enc := sixel.NewEncoder(buf)
enc.Dither = true
err = enc.Encode(img)
if err != nil {
log.Fatal(err)
}
}
|