🎉 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