all repos — aflux @ main

feed.go (view raw)

 1package main
 2
 3import (
 4	"fmt"
 5	"sort"
 6
 7	htmltomarkdown "github.com/JohannesKaufmann/html-to-markdown/v2"
 8	"github.com/charmbracelet/glamour"
 9	goFeed "github.com/mmcdole/gofeed"
10)
11
12var glamourStyle = glamour.WithStylePath("./catppuccin.glamour.json")
13
14type Options struct {
15	sortAsc  bool
16	showDesc bool
17}
18
19func getFeed(url string) goFeed.Feed {
20	fp := goFeed.NewParser()
21	feed, _ := fp.ParseURL(url)
22	sort.Sort(feed)
23	return *feed
24}
25
26func renderFeedItem(item *goFeed.Item, showDesc bool) string {
27
28	itemString := fmt.Sprintf("%s%s %s\n",
29		style.date.Render(item.PublishedParsed.Format("02.01.2006 15:04")),
30		style.author.Render(item.Author.Name),
31		style.title.Render(item.Title),
32	)
33	if showDesc {
34		contentMd, _ := htmltomarkdown.ConvertString(item.Description)
35		glamourRender, _ := glamour.NewTermRenderer(
36			glamour.WithAutoStyle(),
37			glamourStyle,
38		)
39		content, _ := glamourRender.Render(contentMd)
40		itemString = fmt.Sprintf("%s%s\n", itemString, content)
41	}
42
43	return itemString
44}