fixed performance

This commit is contained in:
David Alasow 2018-11-29 15:31:10 +01:00
parent a53fff7391
commit e077d0484b

46
main.go
View File

@ -6,16 +6,23 @@ import (
"fmt"
"git.fuyu.moe/Fuyu/router"
"io/ioutil"
"mime"
"net/http"
"path"
"path/filepath"
"strconv"
"strings"
"time"
)
func main() {
//fmt.Println("Hello world")
r := router.New()
r.GET(`/static/*asset`, getStatic)
r.GET(`/`, home)
r.GET(`/compare/:user`, compare)
r.Start(`:8070`)
err := r.Start(`:8070`)
check(err)
}
type jikanAPIUserList struct {
@ -78,13 +85,20 @@ func home(c *router.Context) error {
}
func compare(c *router.Context) error {
start := time.Now()
user := c.Param(`user`)
//https://api.jikan.moe/v3/user/nekomata1037/animelist/all
//https://api.meikan.moe/v1/ids/anime
jikanList := jikanAPIGetUserAnimelist(user)
var anime []meikanListItem
//fmt.Println(result)
fmt.Println("Getting IDs")
IDs := meikanAPIGetIDs()
confMap := map[int]int{}
for _, v := range IDs {
confMap[v.MyanimelistID] = v.MeikanID
}
fmt.Printf("35248 is %d \n", confMap[35248])
for i := 0; i < len(jikanList.Anime); i++ {
//fmt.Println(result.Anime[i].Title)
for d := 0; d < len(IDs); d++ {
@ -125,11 +139,14 @@ func compare(c *router.Context) error {
//resJSON, err := json.MarshalIndent(result, "", "\t")
//check(err)
//jsonfile := []byte(resJSON)
return c.JSON(200, jikanList)
elapsed := time.Since(start)
fmt.Printf("Generating json took %s\n", elapsed)
return c.JSON(200, anime)
}
func jikanAPIGetUserAnimelist(user string) jikanAPIUserList {
var result jikanAPIUserList
start := time.Now()
for i := 1; ; i++ {
resp, err := http.Get("https://api.jikan.moe/v3/user/" + user + "/animelist/all/" + strconv.Itoa(i))
check(err)
@ -139,21 +156,26 @@ func jikanAPIGetUserAnimelist(user string) jikanAPIUserList {
check(err)
if i == 1 {
_ = json.NewDecoder(bytes.NewReader(body)).Decode(&result)
fmt.Println("Searching page 1")
elapsed := time.Since(start)
fmt.Printf("Searching page 1 took %s\n", elapsed)
continue
} else {
_ = json.NewDecoder(bytes.NewReader(body)).Decode(&tempResult)
result.Anime = append(result.Anime, tempResult.Anime...)
fmt.Println("Searching page " + strconv.Itoa(i))
elapsed := time.Since(start)
fmt.Printf("Searching page %d took %s\n", i, elapsed)
}
if len(tempResult.Anime) == 0 {
break
}
elapsed := time.Since(start)
fmt.Printf("Searching the userlist took %s\n", elapsed)
}
return result
}
func meikanAPIGetIDs() []meikanAPIIDs {
start := time.Now()
resp, err := http.Get("https://api.meikan.moe/v1/ids/anime")
check(err)
defer resp.Body.Close()
@ -161,5 +183,21 @@ func meikanAPIGetIDs() []meikanAPIIDs {
body, err := ioutil.ReadAll(resp.Body)
check(err)
_ = json.NewDecoder(bytes.NewReader(body)).Decode(&result)
elapsed := time.Since(start)
fmt.Printf("Getting all the IDs took %s\n", elapsed)
return result
}
func getStatic(c *router.Context) error {
path := path.Clean(strings.TrimPrefix(c.Request.URL.Path, `/static/`))
data, err := ioutil.ReadFile(`./static/` + path)
if err != nil {
return c.String(404, `Resource not found`)
}
c.Response.Header().Set(`Content-Type`, mime.TypeByExtension(filepath.Ext(path)))
c.Response.Write(data)
return nil
}