Add flag to specify number of articles per source
This commit is contained in:
parent
b0904bf2ae
commit
4c35eaad3b
1 changed files with 25 additions and 14 deletions
39
openring.go
39
openring.go
|
@ -27,12 +27,13 @@ type Article struct {
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var (
|
var (
|
||||||
narticles int = 3
|
narticles int = 3
|
||||||
summaryLen int = 256
|
perSource int = 1
|
||||||
|
summaryLen int = 256
|
||||||
sources []*url.URL
|
sources []*url.URL
|
||||||
)
|
)
|
||||||
|
|
||||||
opts, optind, err := getopt.Getopts(os.Args[1:], "l:n:s:")
|
opts, optind, err := getopt.Getopts(os.Args[1:], "l:n:p:s:")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -48,6 +49,11 @@ func main() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
case 'p':
|
||||||
|
perSource, err = strconv.Atoi(opt.Value)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
case 's':
|
case 's':
|
||||||
u, err := url.Parse(opt.Value)
|
u, err := url.Parse(opt.Value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -103,17 +109,22 @@ func main() {
|
||||||
log.Printf("Warning: feed %s has no items", feed.Title)
|
log.Printf("Warning: feed %s has no items", feed.Title)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
item := feed.Items[0]
|
items := feed.Items
|
||||||
summary := runewidth.Truncate(
|
if len(items) > perSource {
|
||||||
policy.Sanitize(item.Summary), summaryLen, "…")
|
items = items[:perSource]
|
||||||
articles = append(articles, &Article{
|
}
|
||||||
Date: item.Date,
|
for _, item := range items {
|
||||||
SourceLink: feed.Link,
|
summary := runewidth.Truncate(
|
||||||
SourceTitle: feed.Title,
|
policy.Sanitize(item.Summary), summaryLen, "…")
|
||||||
Summary: template.HTML(summary),
|
articles = append(articles, &Article{
|
||||||
Title: item.Title,
|
Date: item.Date,
|
||||||
Link: item.Link,
|
SourceLink: feed.Link,
|
||||||
})
|
SourceTitle: feed.Title,
|
||||||
|
Summary: template.HTML(summary),
|
||||||
|
Title: item.Title,
|
||||||
|
Link: item.Link,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sort.Slice(articles, func(i, j int) bool {
|
sort.Slice(articles, func(i, j int) bool {
|
||||||
return articles[i].Date.After(articles[j].Date)
|
return articles[i].Date.After(articles[j].Date)
|
||||||
|
|
Loading…
Reference in a new issue