🎉 It works
This commit is contained in:
commit
107968803c
5 changed files with 114 additions and 0 deletions
3
go.mod
Normal file
3
go.mod
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
module codeberg.org/danjones000/slackmojidl
|
||||
|
||||
go 1.22.2
|
||||
84
main.go
Normal file
84
main.go
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
|
||||
"codeberg.org/danjones000/slackmojidl/models"
|
||||
)
|
||||
|
||||
func die(v any) {
|
||||
fmt.Fprintln(os.Stderr, v)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
die("Missing JSON file")
|
||||
}
|
||||
|
||||
if len(os.Args) < 3 {
|
||||
die("Missing directory")
|
||||
}
|
||||
|
||||
dir := os.Args[2]
|
||||
|
||||
by, err := os.ReadFile(os.Args[1])
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
|
||||
list := models.List{}
|
||||
err = json.Unmarshal(by, &list)
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
|
||||
for _, emoji := range list.Emoji {
|
||||
dl(dir, emoji)
|
||||
saveJson(dir, emoji)
|
||||
}
|
||||
}
|
||||
|
||||
func dl(dir string, emoji models.Emoji) {
|
||||
ext := path.Ext(emoji.Url)
|
||||
outPath := path.Join(dir, emoji.Name+"."+ext)
|
||||
out, err := os.Create(outPath)
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
resp, err := http.Get(emoji.Url)
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
||||
_, err = io.Copy(out, resp.Body)
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
|
||||
fmt.Println("Saved", emoji.Name, "to", outPath)
|
||||
|
||||
}
|
||||
|
||||
func saveJson(dir string, emoji models.Emoji) {
|
||||
outPath := path.Join(dir, emoji.Name+".json")
|
||||
out, err := os.Create(outPath)
|
||||
if err != nil {
|
||||
die(err)
|
||||
}
|
||||
defer out.Close()
|
||||
|
||||
enc := json.NewEncoder(out)
|
||||
enc.SetIndent("", " ")
|
||||
enc.Encode(emoji)
|
||||
|
||||
fmt.Println("Saved data to ", outPath)
|
||||
}
|
||||
11
models/emoji.go
Normal file
11
models/emoji.go
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package models
|
||||
|
||||
type Emoji struct {
|
||||
Name string `json:"name"`
|
||||
IsAlias uint16 `json:"is_alias"`
|
||||
AliasFor string `json:"alias_for"`
|
||||
Url string `json:"url"`
|
||||
IsBad bool `json:"is_bad"`
|
||||
Synonyms []string `json:"synonyms"`
|
||||
UserDisplayName string `json:"user_display_name"`
|
||||
}
|
||||
8
models/list.go
Normal file
8
models/list.go
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
package models
|
||||
|
||||
type List struct {
|
||||
Ok bool
|
||||
Emoji []Emoji
|
||||
DisabledEmoji []any `json:"disabled_emoji"`
|
||||
Paging Paging
|
||||
}
|
||||
8
models/paging.go
Normal file
8
models/paging.go
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
package models
|
||||
|
||||
type Paging struct {
|
||||
Count uint32
|
||||
Total uint32
|
||||
Page uint32
|
||||
Pages uint32
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue