1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Bit more on the subreddit module - fixing comments and adding options for top sort

This commit is contained in:
Lawrence Craft 2019-09-26 22:15:50 +01:00
parent b0d6790abe
commit 02bdb405fa
3 changed files with 20 additions and 5 deletions

View File

@ -9,8 +9,13 @@ import (
var rootPage = "https://reddit.com/r/" var rootPage = "https://reddit.com/r/"
func GetLinks(subreddit string, sortMode string) ([]Link, error) { func GetLinks(subreddit string, sortMode string, topTimePeriod string) ([]Link, error) {
request, err := http.NewRequest("GET", rootPage+subreddit+"/"+sortMode+".json", nil) url := rootPage + subreddit + "/" + sortMode + ".json"
if sortMode == "top" {
url = url + "?sort=top&t=" + topTimePeriod
}
request, err := http.NewRequest("GET", url, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -34,6 +39,10 @@ func GetLinks(subreddit string, sortMode string) ([]Link, error) {
return nil, err return nil, err
} }
if len(m.Data.Children) == 0 {
return nil, fmt.Errorf("No links")
}
var links []Link var links []Link
for _, l := range m.Data.Children { for _, l := range m.Data.Children {
links = append(links, l.Data) links = append(links, l.Data)

View File

@ -16,6 +16,7 @@ type Settings struct {
subreddit string `help:"Subreddit to look at" optional:"false"` subreddit string `help:"Subreddit to look at" optional:"false"`
numberOfPosts int `help:"Number of posts to show. Default is 10." optional:"true"` numberOfPosts int `help:"Number of posts to show. Default is 10." optional:"true"`
sortOrder string `help:"Sort order for the posts (hot, new, rising, top), default hot" optional:"true"` sortOrder string `help:"Sort order for the posts (hot, new, rising, top), default hot" optional:"true"`
topTimePeriod string `help:"If top sort is selected, the time period to show posts from (hour, week, day, month, year, all, default all)"`
} }
// NewSettingsFromYAML creates the settings for this module from a yaml file // NewSettingsFromYAML creates the settings for this module from a yaml file
@ -26,6 +27,7 @@ func NewSettingsFromYAML(name string, ymlConfig *config.Config, globalConfig *co
numberOfPosts: ymlConfig.UInt("numberOfPosts", 10), numberOfPosts: ymlConfig.UInt("numberOfPosts", 10),
sortOrder: ymlConfig.UString("sortOrder", "hot"), sortOrder: ymlConfig.UString("sortOrder", "hot"),
topTimePeriod: ymlConfig.UString("topTimePeriod", "all"),
subreddit: subreddit, subreddit: subreddit,
} }

View File

@ -35,15 +35,17 @@ func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *
} }
/* -------------------- Exported Functions -------------------- */
func (widget *Widget) Refresh() { func (widget *Widget) Refresh() {
links, err := GetLinks(widget.settings.subreddit, widget.settings.sortOrder) links, err := GetLinks(widget.settings.subreddit, widget.settings.sortOrder, widget.settings.topTimePeriod)
if err != nil { if err != nil {
widget.err = err widget.err = err
widget.links = nil widget.links = nil
widget.SetItemCount(0) widget.SetItemCount(0)
} else { } else {
widget.links = links widget.links = links[:widget.settings.numberOfPosts]
widget.SetItemCount(len(links)) widget.SetItemCount(len(widget.links))
widget.err = nil widget.err = nil
} }
widget.Render() widget.Render()
@ -53,6 +55,8 @@ func (widget *Widget) Render() {
widget.Redraw(widget.content) widget.Redraw(widget.content)
} }
/* -------------------- Unexported Functions -------------------- */
func (widget *Widget) content() (string, string, bool) { func (widget *Widget) content() (string, string, bool) {
title := "/r/" + widget.settings.subreddit + " - " + widget.settings.sortOrder title := "/r/" + widget.settings.subreddit + " - " + widget.settings.sortOrder
if widget.err != nil { if widget.err != nil {