Now actually use Thumbnail that was loaded from db, instead of re downloading it every time. Also save Thumbnail to Manga if it couldnt be saved before
This commit is contained in:
@@ -136,10 +136,23 @@ func (dbMgr *Manager) Save() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
_, err := db.Exec("UPDATE Manga set Title = ?, TimeStampUnixEpoch = ? WHERE ID = ?", m.Title, m.TimeStampUnix, m.Id)
|
tSet := 0
|
||||||
|
err := db.QueryRow("SELECT COUNT(*) from Manga where ID = ? and Thumbnail IS NOT NULL", m.Id).Scan(&tSet)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if tSet != 0 {
|
||||||
|
_, err = db.Exec("UPDATE Manga set Title = ?, TimeStampUnixEpoch = ? WHERE ID = ?", m.Title, m.TimeStampUnix, m.Id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
_, err = db.Exec("UPDATE Manga set Title = ?, TimeStampUnixEpoch = ?, Thumbnail = ? WHERE ID = ?", m.Title, m.TimeStampUnix, m.Thumbnail.Bytes(), m.Id)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +208,9 @@ func (dbMgr *Manager) load() error {
|
|||||||
if err = rows.Scan(&manga.Id, &manga.Title, &manga.TimeStampUnix, &thumbnail); err != nil {
|
if err = rows.Scan(&manga.Id, &manga.Title, &manga.TimeStampUnix, &thumbnail); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
manga.Thumbnail = bytes.NewBuffer(thumbnail)
|
if len(thumbnail) != 0 {
|
||||||
|
manga.Thumbnail = bytes.NewBuffer(thumbnail)
|
||||||
|
}
|
||||||
|
|
||||||
latestChapter := db.QueryRow("SELECT Id, Url, Name, Number, TimeStampUnixEpoch FROM Chapter where MangaID = ? ORDER BY TimeStampUnixEpoch desc LIMIT 1", manga.Id)
|
latestChapter := db.QueryRow("SELECT Id, Url, Name, Number, TimeStampUnixEpoch FROM Chapter where MangaID = ? ORDER BY TimeStampUnixEpoch desc LIMIT 1", manga.Id)
|
||||||
chapter := Chapter{}
|
chapter := Chapter{}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
|
|||||||
|
|
||||||
t1 := time.Now().UnixNano()
|
t1 := time.Now().UnixNano()
|
||||||
|
|
||||||
thumbnail, err := s.LoadThumbnail(manga.Id)
|
thumbnail, err := s.LoadThumbnail(manga)
|
||||||
//TODO: Add default picture instead of not showing Manga at all
|
//TODO: Add default picture instead of not showing Manga at all
|
||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
@@ -71,8 +71,9 @@ func (s *Server) HandleMenu(w http.ResponseWriter, _ *http.Request) {
|
|||||||
thumbNs += t2 - t1
|
thumbNs += t2 - t1
|
||||||
|
|
||||||
t1 = time.Now().UnixNano()
|
t1 = time.Now().UnixNano()
|
||||||
// This is very slow
|
|
||||||
|
|
||||||
|
// This is very slow
|
||||||
|
// TODO: put this into own Method
|
||||||
if manga.LastChapterNum == 0 {
|
if manga.LastChapterNum == 0 {
|
||||||
l, err := s.Provider.GetChapterList("/title/" + strconv.Itoa(manga.Id))
|
l, err := s.Provider.GetChapterList("/title/" + strconv.Itoa(manga.Id))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -275,7 +276,7 @@ func (s *Server) HandleImage(w http.ResponseWriter, r *http.Request) {
|
|||||||
//go:embed favicon.ico
|
//go:embed favicon.ico
|
||||||
var ico []byte
|
var ico []byte
|
||||||
|
|
||||||
func (s *Server) HandleFavicon(w http.ResponseWriter, r *http.Request) {
|
func (s *Server) HandleFavicon(w http.ResponseWriter, _ *http.Request) {
|
||||||
w.Header().Set("Content-Type", "image/webp")
|
w.Header().Set("Content-Type", "image/webp")
|
||||||
_, err := w.Write(ico)
|
_, err := w.Write(ico)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -157,16 +157,21 @@ func (s *Server) LoadCurr() {
|
|||||||
fmt.Println("Loaded current")
|
fmt.Println("Loaded current")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) LoadThumbnail(mangaId int) (path string, err error) {
|
func (s *Server) LoadThumbnail(manga *database.Manga) (path string, err error) {
|
||||||
strId := strconv.Itoa(mangaId)
|
strId := strconv.Itoa(manga.Id)
|
||||||
|
|
||||||
//s.Mutex.Lock()
|
s.Mutex.Lock()
|
||||||
//defer s.Mutex.Unlock()
|
defer s.Mutex.Unlock()
|
||||||
if s.ImageBuffers[strId] != nil {
|
if s.ImageBuffers[strId] != nil {
|
||||||
return strId, nil
|
return strId, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
url, err := s.Provider.GetThumbnail(strconv.Itoa(mangaId))
|
if manga.Thumbnail != nil {
|
||||||
|
s.ImageBuffers[strId] = manga.Thumbnail
|
||||||
|
return strId, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
url, err := s.Provider.GetThumbnail(strId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@@ -174,6 +179,7 @@ func (s *Server) LoadThumbnail(mangaId int) (path string, err error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
manga.Thumbnail = ram
|
||||||
s.ImageBuffers[strId] = ram
|
s.ImageBuffers[strId] = ram
|
||||||
return strId, nil
|
return strId, nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user