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()
|
s.worker.RefreshFeeds()
|
||||||
|
|
||||||
c.Out.WriteHeader(http.StatusOK)
|
c.Out.WriteHeader(http.StatusOK)
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ func (h *Server) GetAddr() string {
|
|||||||
|
|
||||||
func (s *Server) Start() {
|
func (s *Server) Start() {
|
||||||
refreshRate := s.db.GetSettings().RefreshRate
|
refreshRate := s.db.GetSettings().RefreshRate
|
||||||
s.worker.FindFavicons()
|
|
||||||
s.worker.StartFeedCleaner()
|
s.worker.StartFeedCleaner()
|
||||||
s.worker.SetRefreshRate(refreshRate)
|
s.worker.SetRefreshRate(refreshRate)
|
||||||
if refreshRate > 0 {
|
if refreshRate > 0 {
|
||||||
|
|||||||
@@ -136,36 +136,6 @@ func (s *Storage) ListFeeds() []Feed {
|
|||||||
return result
|
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 {
|
func (s *Storage) GetFeed(id int64) *Feed {
|
||||||
var f Feed
|
var f Feed
|
||||||
err := s.db.QueryRow(`
|
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) {
|
func (w *Worker) FindFeedFavicon(feed storage.Feed) {
|
||||||
icon, err := findFavicon(feed.Link, feed.FeedLink)
|
icon, err := findFavicon(feed.Link, feed.FeedLink)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -144,6 +136,9 @@ func (w *Worker) worker(srcqueue <-chan storage.Feed, dstqueue chan<- []storage.
|
|||||||
errMsg := err.Error()
|
errMsg := err.Error()
|
||||||
w.db.UpdateFeedState(feed.Id, storage.UpdateFeedStateParams{LastError: &errMsg})
|
w.db.UpdateFeedState(feed.Id, storage.UpdateFeedStateParams{LastError: &errMsg})
|
||||||
}
|
}
|
||||||
|
if len(items) > 0 && !feed.HasIcon {
|
||||||
|
w.FindFeedFavicon(feed)
|
||||||
|
}
|
||||||
dstqueue <- items
|
dstqueue <- items
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user