MCPcopy Index your code
hub / github.com/FloatTech/ZeroBot-Plugin / tagurl

Function tagurl

plugin/danbooru/tag.go:51–124  ·  view source on GitHub ↗
(name, u string)

Source from the content-addressed store, hash-verified

49}
50
51func tagurl(name, u string) (im image.Image, st *sorttags, err error) {
52 ch := make(chan []byte, 1)
53 go func() {
54 var data []byte
55 data, err = web.GetData(u)
56 ch <- data
57 }()
58
59 data, err := web.GetData(api + url.QueryEscape(u))
60 if err != nil {
61 return
62 }
63 if len(data) < 4 {
64 err = errors.New("data too short")
65 return
66 }
67 tags := make(map[string]float64)
68 err = json.Unmarshal(data[1:len(data)-1], &tags)
69 if err != nil {
70 return
71 }
72
73 longestlen := 0
74 for k := range tags {
75 if len(k) > longestlen {
76 longestlen = len(k)
77 }
78 }
79 longestlen++
80
81 st = newsorttags(tags)
82 sort.Sort(st)
83
84 boldfd, err := file.GetLazyData(text.BoldFontFile, control.Md5File, true)
85 if err != nil {
86 return
87 }
88 consfd, err := file.GetLazyData(text.ConsolasFontFile, control.Md5File, true)
89 if err != nil {
90 return
91 }
92
93 data = <-ch
94 if err != nil {
95 return
96 }
97 img, _, err := image.Decode(bytes.NewReader(data))
98 if err != nil {
99 return
100 }
101
102 img = factory.Limit(img, 1280, 720)
103
104 canvas := gg.NewContext(img.Bounds().Size().X, img.Bounds().Size().Y+int(float64(img.Bounds().Size().X)*0.2)+len(tags)*img.Bounds().Size().X/25)
105 canvas.SetRGB(1, 1, 1)
106 canvas.Clear()
107 canvas.DrawImage(img, 0, 0)
108 if err = canvas.ParseFontFace(boldfd, float64(img.Bounds().Size().X)*0.1); err != nil {

Callers 1

initFunction · 0.85

Calls 2

newsorttagsFunction · 0.85
SortMethod · 0.80

Tested by

no test coverage detected