From 8e6169430e77469c53cd091ad761ca4948c5ee5d Mon Sep 17 00:00:00 2001 From: Pablu23 Date: Mon, 26 Feb 2024 12:09:00 +0100 Subject: [PATCH] Fixed Thumbnail Db Entry not loading, added favicon.ico, added going back to menu, if no more Chapters exist, added auto start of default browser with url, added dark mode to main Menu (doesnt save state), added Constructor for Server --- cmd/mangaGetter/main.go | 80 ++++++++++++++++++++++++------ internal/database/database.go | 4 +- internal/server/favicon.ico | Bin 0 -> 1406 bytes internal/server/handler.go | 22 ++++++-- internal/server/server.go | 46 ++++++++++++++--- internal/view/Views/menu.gohtml | 22 ++++++++ internal/view/Views/viewer.gohtml | 2 + 7 files changed, 149 insertions(+), 27 deletions(-) create mode 100644 internal/server/favicon.ico diff --git a/cmd/mangaGetter/main.go b/cmd/mangaGetter/main.go index 5726515..846d24b 100644 --- a/cmd/mangaGetter/main.go +++ b/cmd/mangaGetter/main.go @@ -1,34 +1,59 @@ package main import ( - "bytes" "fmt" - "net/http" - "os" - "os/signal" - "sync" - "mangaGetter/internal/database" "mangaGetter/internal/provider" "mangaGetter/internal/server" + "net/http" + "os" + "os/exec" + "os/signal" + "path/filepath" + "runtime" + "time" ) func main() { - db := database.NewDatabase("db.sqlite", true) - err := db.Open() + dir, err := os.UserCacheDir() if err != nil { + fmt.Println(nil) return } - s := server.Server{ - ImageBuffers: make(map[string]*bytes.Buffer), - NextReady: make(chan bool), - PrevReady: make(chan bool), - Provider: &provider.Bato{}, - DbMgr: &db, - Mutex: &sync.Mutex{}, + dirPath := filepath.Join(dir, "MangaGetter") + filePath := filepath.Join(dirPath, "db.sqlite") + + if _, err := os.Stat(dirPath); os.IsNotExist(err) { + err = os.Mkdir(dirPath, os.ModePerm) + if err != nil { + fmt.Println(err) + return + } } + if _, err := os.Stat(filePath); os.IsNotExist(err) { + f, err := os.Create(filePath) + if err != nil { + fmt.Println(err) + return + } + err = f.Close() + if err != nil { + fmt.Println(err) + return + } + } + + db := database.NewDatabase(filePath, true) + err = db.Open() + if err != nil { + fmt.Println(err) + return + } + + s := server.New(&provider.Bato{}, &db) + c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) @@ -48,6 +73,14 @@ func main() { http.HandleFunc("POST /exit", s.HandleExit) http.HandleFunc("POST /delete", s.HandleDelete) + go func() { + time.Sleep(300 * time.Millisecond) + err := open("http://localhost:8000") + if err != nil { + fmt.Println(err) + } + }() + fmt.Println("Server starting...") err = http.ListenAndServe(":8000", nil) if err != nil { @@ -56,6 +89,23 @@ func main() { } } +func open(url string) error { + var cmd string + var args []string + + switch runtime.GOOS { + case "windows": + cmd = "cmd" + args = []string{"/c", "start"} + case "darwin": + cmd = "open" + default: // "linux", "freebsd", "openbsd", "netbsd" + cmd = "xdg-open" + } + args = append(args, url) + return exec.Command(cmd, args...).Start() +} + func Close(db *database.Manager) { fmt.Println("Attempting to save and close DB") err := db.Save() diff --git a/internal/database/database.go b/internal/database/database.go index 7e0e7ac..f145369 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -190,9 +190,11 @@ func (dbMgr *Manager) load() error { for rows.Next() { manga := Manga{} - if err = rows.Scan(&manga.Id, &manga.Title, &manga.TimeStampUnix, &manga.Thumbnail); err != nil { + var thumbnail []byte + if err = rows.Scan(&manga.Id, &manga.Title, &manga.TimeStampUnix, &thumbnail); err != nil { return err } + manga.Thumbnail = bytes.NewBuffer(thumbnail) dbMgr.Mangas[manga.Id] = &manga } diff --git a/internal/server/favicon.ico b/internal/server/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4fcd32c26749a3526b90db730b61d1f12e331ab3 GIT binary patch literal 1406 zcmd6mSx{S59L7J?YU_$yU2v%tYqjngtF_d%wn)iJQj)NRMUp~tAqymdBxE58kc5N~ zk`TgLz_LS-CCXA-sJ66VOAEGdj#G8U>2!2POMUTJAN1W9@0suZzkAP_`JLrEKn!WI zvAFSwHvpT7+fMY?uPsC|*ht-%4}gI z?q|T!JcZ`SDqN(Nu;_@ot6`NYF|>Lep}aK0Oo6kW^&@NWN6z9{Qv*cY z474g_gmD1QECFgn>2Q-uak;3f3_;FIMQI8f8V&=N0y(tAJ9D99jMq6q|?o@EBYsFZ#}}qn~ImZ6`W4YP1^lkmiapXi$@^k-Q0cI2!VS zlaPQpQvFH=Tw|9JAT>x-L{B2wHIfW=5C)x`BMXyuBiy-}B)h*u!=|IQeF3|7?Lmps zidJ1YY>rm6O3Qq3_uNvAe z>`{$2KYLgbUET0@r0Ub6FC6bsw9n2o-F4{XSD$Zv{M|?Ip-~i#Mk|o)NEs8{Z+VSI zyEILsy4O~w+F$tgj@b^1MqQ$1EqPup+?K>W@PIcymW+P>_0r*rQ%OA!JzTqcJNe%7 z@tsHZZ9evvyYJ}5c^b8G`stk??R|pHFzfa|QhomRvgOHJ=F-o8_{sQ-#n0U8I#_c2 zjmAoouT_}%N=w~?&uJTW@$C65-?;?Yz~JK7kBPINWEyAQ(`@?2_SAi9dUBWbw)%Qe pz_)4Q?l1ZMIDL~oMj3u7 Main Menu + + + + @@ -100,6 +121,7 @@ + diff --git a/internal/view/Views/viewer.gohtml b/internal/view/Views/viewer.gohtml index 98f98e6..f45fc8e 100644 --- a/internal/view/Views/viewer.gohtml +++ b/internal/view/Views/viewer.gohtml @@ -4,6 +4,8 @@ {{.Title}} + +