mirror of
https://github.com/nkanaev/yarr.git
synced 2026-06-09 18:03:19 +00:00
rewrite favicon discovery logic
This commit is contained in:
@@ -471,7 +471,6 @@ func (s *Server) handleOPMLImport(c *router.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
s.worker.FindFavicons()
|
||||
s.worker.RefreshFeeds()
|
||||
|
||||
c.Out.WriteHeader(http.StatusOK)
|
||||
|
||||
@@ -49,7 +49,6 @@ func (h *Server) GetAddr() string {
|
||||
|
||||
func (s *Server) Start() {
|
||||
refreshRate := s.db.GetSettings().RefreshRate
|
||||
s.worker.FindFavicons()
|
||||
s.worker.StartFeedCleaner()
|
||||
s.worker.SetRefreshRate(refreshRate)
|
||||
if refreshRate > 0 {
|
||||
|
||||
@@ -136,36 +136,6 @@ func (s *Storage) ListFeeds() []Feed {
|
||||
return result
|
||||
}
|
||||
|
||||
func (s *Storage) ListFeedsMissingIcons() []Feed {
|
||||
result := make([]Feed, 0)
|
||||
rows, err := s.db.Query(`
|
||||
select id, folder_id, title, description, link, feed_link
|
||||
from feeds
|
||||
where icon is null
|
||||
`)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return result
|
||||
}
|
||||
for rows.Next() {
|
||||
var f Feed
|
||||
err = rows.Scan(
|
||||
&f.Id,
|
||||
&f.FolderId,
|
||||
&f.Title,
|
||||
&f.Description,
|
||||
&f.Link,
|
||||
&f.FeedLink,
|
||||
)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return result
|
||||
}
|
||||
result = append(result, f)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (s *Storage) GetFeed(id int64) *Feed {
|
||||
var f Feed
|
||||
err := s.db.QueryRow(`
|
||||
|
||||
@@ -39,14 +39,6 @@ func (w *Worker) StartFeedCleaner() {
|
||||
}()
|
||||
}
|
||||
|
||||
func (w *Worker) FindFavicons() {
|
||||
go func() {
|
||||
for _, feed := range w.db.ListFeedsMissingIcons() {
|
||||
w.FindFeedFavicon(feed)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
func (w *Worker) FindFeedFavicon(feed storage.Feed) {
|
||||
icon, err := findFavicon(feed.Link, feed.FeedLink)
|
||||
if err != nil {
|
||||
@@ -144,6 +136,9 @@ func (w *Worker) worker(srcqueue <-chan storage.Feed, dstqueue chan<- []storage.
|
||||
errMsg := err.Error()
|
||||
w.db.UpdateFeedState(feed.Id, storage.UpdateFeedStateParams{LastError: &errMsg})
|
||||
}
|
||||
if len(items) > 0 && !feed.HasIcon {
|
||||
w.FindFeedFavicon(feed)
|
||||
}
|
||||
dstqueue <- items
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user