Replaced with a very small shell script
[emoji-stealer.git] / main.go
1 package main
2
3 import (
4         "encoding/json"
5         "github.com/alexflint/go-arg"
6         "gopkg.in/cheggaaa/pb.v1"
7         "io/ioutil"
8         "log"
9         "net/http"
10         "os"
11         "path/filepath"
12 )
13
14 type args struct {
15         Instance string `arg:"positional" help:"instance to steal emojis from"`
16 }
17
18 func (args) Version() string {
19         return "emoji_stealer 1.0.0"
20 }
21
22 type emoji struct {
23         URL       string
24         Shortcode string
25 }
26
27 func getEmojiList(url string) (emojis []emoji) {
28         resp, err := http.Get(url + "/api/v1/custom_emojis")
29         if err != nil {
30                 log.Fatal(err)
31         }
32         data, err := ioutil.ReadAll(resp.Body)
33         if err != nil {
34                 log.Fatal(err)
35         }
36         err = json.Unmarshal(data, &emojis)
37         if err != nil {
38                 log.Fatal(err)
39         }
40         return
41 }
42
43 func downloadEmoji(emoji emoji) {
44         resp, err := http.Get(emoji.URL)
45         if err != nil {
46                 log.Fatal(err)
47         }
48         data, err := ioutil.ReadAll(resp.Body)
49         if err != nil {
50                 log.Fatal(err)
51         }
52         err = ioutil.WriteFile(filepath.Join("emojis", emoji.Shortcode+".png"), data, os.ModePerm)
53         if err != nil {
54                 log.Fatal(err)
55         }
56 }
57
58 func downloadEmojis(emojis []emoji) {
59         err := os.MkdirAll("emojis", os.ModePerm)
60         if err != nil {
61                 log.Fatal(err)
62         }
63         bar := pb.StartNew(len(emojis))
64         for _, emoji := range emojis {
65                 downloadEmoji(emoji)
66                 bar.Increment()
67         }
68         bar.Finish()
69 }
70
71 func main() {
72         var args args
73         p := arg.MustParse(&args)
74         if args.Instance == "" {
75                 p.Fail("You must specify an instance")
76         }
77         emojis := getEmojiList(args.Instance)
78         downloadEmojis(emojis)
79 }