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}